<?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>226919</bug_id>
          
          <creation_ts>2021-06-11 07:35:46 -0700</creation_ts>
          <short_desc>Cross platform compilation of PlatformXRSystem and PlatformXRSystemProxy</short_desc>
          <delta_ts>2021-07-12 02:31:06 -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>WebXR</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>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>adachan</cc>
    
    <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768928</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-11 07:35:46 -0700</bug_when>
    <thetext>Right now PlatformXRSystem and PlatformXRSystemProxy are only compiled in Cocoa platform while WPE uses OpenXR, which only has code in WebCore. In order to run WebKit on non-cocoa VR Standalone devices we also need to split code between UIProcess/WebProcess and we want to reuse the PlatformXRSystem/PlatformXRSystemProxy which fits very well into our use case. In the future, if WPE enables a GPU Process, we could move OpenXR Platform to use the PlatformXRSystem approach too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768936</commentid>
    <comment_count>1</comment_count>
      <attachid>431196</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-11 08:13:39 -0700</bug_when>
    <thetext>Created attachment 431196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768953</commentid>
    <comment_count>2</comment_count>
      <attachid>431201</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-11 09:11:42 -0700</bug_when>
    <thetext>Created attachment 431201
Patch

Fix linker error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771011</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-18 07:36:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/79504983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771259</commentid>
    <comment_count>4</comment_count>
      <attachid>431848</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-21 05:05:13 -0700</bug_when>
    <thetext>Created attachment 431848
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771884</commentid>
    <comment_count>5</comment_count>
      <attachid>432026</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-23 02:01:15 -0700</bug_when>
    <thetext>Created attachment 432026
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772680</commentid>
    <comment_count>6</comment_count>
      <attachid>432271</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-06-25 08:03:15 -0700</bug_when>
    <thetext>Created attachment 432271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774934</commentid>
    <comment_count>7</comment_count>
      <attachid>432922</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-06 07:09:53 -0700</bug_when>
    <thetext>Created attachment 432922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774938</commentid>
    <comment_count>8</comment_count>
      <attachid>432926</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-06 07:33:59 -0700</bug_when>
    <thetext>Created attachment 432926
Patch

Fix mac compilation error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774941</commentid>
    <comment_count>9</comment_count>
      <attachid>432929</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-06 07:46:30 -0700</bug_when>
    <thetext>Created attachment 432929
Patch

Fix mac compilation error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775655</commentid>
    <comment_count>10</comment_count>
      <attachid>433127</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-08 05:28:58 -0700</bug_when>
    <thetext>Created attachment 433127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775665</commentid>
    <comment_count>11</comment_count>
      <attachid>433131</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-08 07:50:15 -0700</bug_when>
    <thetext>Created attachment 433131
Patch

Fix mac compilation error. Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776078</commentid>
    <comment_count>12</comment_count>
      <attachid>433131</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-07-09 14:25:08 -0700</bug_when>
    <thetext>Comment on attachment 433131
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/PlatformXRCoordinator.mm:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

Should be 2021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776273</commentid>
    <comment_count>13</comment_count>
      <attachid>433305</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-07-12 01:59:25 -0700</bug_when>
    <thetext>Created attachment 433305
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776276</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-12 02:31:03 -0700</bug_when>
    <thetext>Committed r279822 (239583@main): &lt;https://commits.webkit.org/239583@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433305.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431196</attachid>
            <date>2021-06-11 08:13:39 -0700</date>
            <delta_ts>2021-06-11 09:13:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210611171337.patch</filename>
            <type>text/plain</type>
            <size>106470</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlMTQ3ODU1MzNiNmFkNDU3
NWQzOGRhMWJkZDQ0MzViZmNmNDZmZTguLjc5YjZiZmJlNzdhNTUyN2ZmODE5Y2M2ODA2MDI0MmY1
YzNlOGZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNi0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbigpIHNob3VsZCB3YWl0IGZvciB0aGUg
bmV4dCBmbHVzaCBiZWZvcmUgaXQgZG9lcyBjYWxsU25hcHNob3RSZWN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CmluZGV4IGY2MzEyODM4NTliODc3YmQ5Njg4NjcxMjg5MDgwY2EyOTUxNzEzN2EuLjY5OTk5
NmY4MzZhZDdkYWFmMjFiMDUzNWRmMjUxN2E2MzMwY2ZiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApA
QCAtNDYsNiArNDYsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVRfRElSfS9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vU2hhcmVkL1JlbW90ZUxheWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvV2Vi
c2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1hSIgogICAgICIke1dFQktJVF9E
SVJ9L1VJUHJvY2VzcyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKQEAgLTY4LDYgKzY5LDcgQEAgc2V0KFdlYktp
dF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKKyAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvWFIiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViQXV0
aG5Qcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7V0VCS0lU
X0RJUn0vV2ViUHJvY2Vzcy9BcHBsZVBheSIKQEAgLTEwOCw2ICsxMTAsNyBAQCBzZXQoV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBh
Z2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UiCisgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9YUiIKICAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2Ui
CiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vV2ViS2l0TGlicmFyaWVzIgogKQpAQCAtMjE2LDYg
KzIxOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCisgICAgVUlQcm9jZXNz
L1hSL1BsYXRmb3JtWFJTeXN0ZW0KKwogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCiAgICAg
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkKQEAgLTI4NSw2
ICsyOTAsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UKIAogICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cAorCisgICAgV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICkKIAogc2V0KFdl
YktpdF9GUkFNRVdPUktTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMDYyMWUwMzQxNTQ1ZGZjYTY5ZTQzOGQzMjZiNzk3ZmI4MDgwYWYwNS4u
MDM1ODY4OGQzMWZkZmVlZjkyYjE4OTQyMmM2MmNhODJiZTEzNjhjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAwLDcgKzEwMCw2IEBA
ICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5t
ZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMzAsNiArMTI5LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nl
c3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjAwLDggKzIwMCw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmlu
Ci0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGE4M2JiMmM1YmQxMWZkMDFlNTM5M2ExZGYzNWMyNDlk
ZTc2ZGU4MS4uYjk5MzYzMDc3MzJmNGJlYzQ3YjNjNjA5YjIwOWFhZDcyMTE2Mzg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTYyLDcgKzE2Miw2IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJ
VUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkgXAotCVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlV
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCkBAIC0xNzYsNiArMTc1LDcgQEAgTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHkgXAogCVVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VNYW5hZ2VyIFwKIAlVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgXAor
CVVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5IFwKQEAgLTIyMCw3ICsyMjAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3Mv
V2ViUHJvY2VzcyBcCi0JV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkgXAog
CVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciBcCkBAIC0yMzksNiArMjM4LDcgQEAgTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKIAlXZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eSBc
CiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDY1MDQ4N2EzMTBhYmNiNzU3NzY2NWI5ZmE3NzFmMTA2YzRiMzMzZmEuLmUxMjEzMTJhZDFl
ZjNjMDNkMGQxMTA3ZTNlNDdhZDA4Yzg5MmFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtMjE3LDcgKzIxNyw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwog
CiAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlcgogCi0gICAgVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW0KICAgICBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkKICAgICBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CkBA
IC0yNTUsNyArMjU0LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yCiAKLSAgICBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eQog
ICAgIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogICAgIFdlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE4
YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVlOTlkMTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gWFJEZXZp
Y2VJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFhSRGV2aWNlSWRlbnRpZmllclR5cGU+OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAy
NGM5OWI3YjdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNs
YXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgWFJEZXZpY2VJ
bmZvIHsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHN1cHBv
cnRzT3JpZW50YXRpb25UcmFja2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBzdXBwb3J0c1N0ZXJl
b1JlbmRlcmluZyB7IGZhbHNlIH07Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlz
dCBmZWF0dXJlczsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7
IDAsIDAgfTsKLQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE5MGI4ZGRjYjMxMmUyNDIyMGM1NGE4MzBlN2U2ODdkNDE5OTc2YTEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiWFJEZXZp
Y2VJbmZvLmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBYUkRldmljZUluZm86OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVu
dGlmaWVyIDw8IHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA8PCBzdXBwb3J0c1N0ZXJlb1Jl
bmRlcmluZyA8PCBmZWF0dXJlcyA8PCByZWNvbW1lbmRlZFJlc29sdXRpb247Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCi17Ci0gICAgWFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVz
LnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuZmVhdHVyZXMpKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5y
ZWNvbW1lbmRlZFJlc29sdXRpb24pKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIGRldmljZUZlYXR1cmVzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2ZhNTU4MmU2
OTYzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvOwotCi1j
bGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZpY2VJbmZv
JiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOwotICAgIFhSRGV2aWNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIHNlc3Np
b25EaWRFbmQoKTsKLQotcHJpdmF0ZToKLSAgICBYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYm
LCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21t
ZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IHJldHVybiBt
X3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKLSAgICB2b2lkIHNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNl
VHlwZSkgZmluYWwgeyB9Ci0gICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+
IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxh
eWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQg
ZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKLSAgICB2
b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5h
bDsKLQotICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2Vha1B0cjxQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07Ci0gICAgYm9vbCBtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmVjb21tZW5k
ZWRSZXNvbHV0aW9uIHsgMCwgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9YUkRldmljZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZp
Y2VQcm94eS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJmY2I0MGJhNjUwYWI5
MjQzNjdiYjQ3NzRiNzE5Y2NiYzM4Y2ZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJY
UikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCi0jaW1wb3J0ICJYUkRldmlj
ZUluZm8uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1SZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8p
LCB4clN5c3RlbSkpOwotfQotCi1YUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi0gICAg
OiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKLXsKLSAgICBtX2lkZW50aWZpZXIg
PSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7Ci0gICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9
IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7Ci0gICAgbV9zdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsK
LSAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNv
bHV0aW9uOwotICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8u
ZmVhdHVyZXMpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQotewot
ICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQotICAgICAgICB0cmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLXZvaWQgWFJEZXZpY2VQ
cm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25N
b2RlIHNlc3Npb25Nb2RlKQotewotICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3hy
U3lzdGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKLXsKLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpOwotfQotCi1WZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QK
LXsKLSAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Ci0gICAgaWYgKG1fc3VwcG9y
dHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsK
LSAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKLSAg
ICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUg
fSk7Ci0gICAgcmV0dXJuIHZpZXdzOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Ci17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFt
ZShXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQotewotICAgIHJldHVybiBtX3hyU3lz
dGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFs
cGhhKSA6IHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFt
ZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKLXsKLSAgICBpZiAobV94clN5
c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThiYjJiYWRjY2Vh
NDMzYWZkYmE4NWVkMGI2OGNkZWU5OWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBYUkRl
dmljZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFhSRGV2aWNlSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8WFJEZXZpY2VJZGVudGlmaWVyVHlwZT47CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNl
SW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwZWIwNWQ4ZjliZmY0ZmVhMzA5M2Q2YjU4OGJhOTdlMzNjMGFhMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
WFJEZXZpY2VJbmZvLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFJEZXZpY2VJ
bmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNT
dGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMgPDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOworfQor
CitzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VG
ZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBw
b3J0c1N0ZXJlb1JlbmRlcmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVh
dHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBkZXZpY2VGZWF0dXJlczsKK30KKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJ
bmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVhSLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKKyAgICBY
UkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBib29sIHN1cHBvcnRzT3JpZW50YXRp
b25UcmFja2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7
IGZhbHNlIH07CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKKwor
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNzA4ZTlmMDQ0ZDNmZWM4
ZjhiYjI0MTllNGQ4MzMwOWQ4N2YzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKyNp
bmNsdWRlICJYUkRldmljZUluZm8uaCIKKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6
Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYg
eHJTeXN0ZW0pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZN
b3ZlKGRldmljZUluZm8pLCB4clN5c3RlbSkpOworfQorCitYUkRldmljZVByb3h5OjpYUkRldmlj
ZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYg
eHJTeXN0ZW0pCisgICAgOiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKK3sKKyAg
ICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBwb3J0c1N0
ZXJlb1JlbmRlcmluZyA9IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7CisgICAg
bV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50
YXRpb25UcmFja2luZzsKKyAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8u
cmVjb21tZW5kZWRSZXNvbHV0aW9uOworICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0Vt
cHR5KCkpCisgICAgICAgIHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZl
VnIsIGRldmljZUluZm8uZmVhdHVyZXMpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Np
b25EaWRFbmQoKQoreworICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQorICAg
ICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisK
K3ZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRm
b3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2RlKQoreworICAgIGlmIChzZXNzaW9uTW9kZSAh
PSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94
clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCitWZWN0b3I8UGxh
dGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1v
ZGUgbW9kZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Cisg
ICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6
SW1tZXJzaXZlVnIpIHsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5
ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6
UmlnaHQgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0
cnVlLCBFeWU6Ok5vbmUgfSk7CisgICAgcmV0dXJuIHZpZXdzOworfQorCit2b2lkIFhSRGV2aWNl
UHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0
ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVj
dGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQoreworICAg
IHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdp
ZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBYUkRldmljZVBy
b3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKK3sK
KyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZlNDYzOTQ2
Njg2OWE1ZTNkMDc5ZjdhY2M3ZmE1NTgyZTY5NjM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJY
UkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk7CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNlUHJveHkg
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFhSRGV2aWNlUHJveHk+IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Jik7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOworCitwcml2
YXRlOgorICAgIFhSRGV2aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgcmV0dXJuIG1fcmVjb21tZW5kZWRSZXNvbHV0
aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1Y
Ujo6U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVm
ZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAg
ICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6
U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3Jt
WFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQz
Ml90LCB1aW50MzJfdCwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZSkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgc3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpIGZpbmFsOworCisgICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eT4gbV94clN5c3RlbTsKKyAgICBib29sIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxz
ZSB9OworICAgIFdlYkNvcmU6OkludFNpemUgbV9yZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAw
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IGQ1NGExNTQ5YWE3ODcwOWRkNWU2ZWUxY2JhYmE0YjU3MGE2Y2Zl
ZDguLmRhOWJmYmY0YjE3NDFhZDYyMTM2ZTE3MjI1YTM1NGUxYzQxMmQyOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjg5LDYgKzI4OSw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9y
bWF0aW9uLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cAogCitTaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcAorU2hhcmVkL1hSL1hSRGV2aWNlUHJveHku
Y3BwCisKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtNTA1LDYgKzUwOCw4IEBAIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcAogCitVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKKwogV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIFdlYkF1dGhu
UHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzI0LDYgKzcyOSw4IEBAIFdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCiAKK1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5
LmNwcAorCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
VENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA4Y2ZjNjA3NGQwNTYyYWE1ODJj
NWMwZDIzNDg4ZWU2MzZiMmM5YTljLi4wMWYwMGE2NGEwY2Y1N2QwMzc5MWEwODgzODA2YWMwNzhm
MzRmZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xODQsOCArMTg0LDYgQEAgU2hhcmVk
L0NvY29hL1dLTlNVUkxFeHRyYXMubW0KIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQog
U2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZh
dWx0VmFsdWVzQ29jb2EubW0KLVNoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KLVNoYXJlZC9D
b2NvYS9YUkRldmljZVByb3h5Lm1tCiAKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTM5OCw3ICszOTYs
NyBAQCBVSVByb2Nlc3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCi1VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tbQorVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29y
ZGluYXRvci5tbQogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC01OTQsNyArNTkyLDYgQEAgV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCiAKIFdlYlByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW0KIAotV2ViUHJvY2Vzcy9j
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbQogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5jcHAKIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAK
QEAgLTcxMSw4ICs3MDgsNiBAQCBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2Vi
UlRDQ29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBNZXNzYWdlTmFtZXMuY3BwCi1QbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJl
Y2VpdmVyLmNwcAotUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2EzY2MwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0j
aW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNz
IFBsYXRmb3JtWFJDb29yZGluYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1Y
UkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQg
d2lsbCBiZSBmaXhlZCBsYXRlci4KLSAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUg
ZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQotCi0gICAgdXNpbmcgRGV2aWNlSW5m
b0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNr
JiYpID0gMDsKLQotICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24uCi0gICAgdXNp
bmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRpZmll
cik+OwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25TZXNz
aW9uRW5kQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZFeGlz
dHMoV2ViUGFnZVByb3h5JikgPSAwOwotCi0gICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3AuCi0g
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5JiwgUGxh
dGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBhZ2VQcm94eSYpIHsgfQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWRkNWE1NWQwNGNiZDZmMGI5OTAzNWYxMGZjYmI1ZGM0MmI3Yjk5NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRv
ci5tbQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJYUikgJiYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BsYXRm
b3JtWFJTeXN0ZW1BZGRpdGlvbnMubW0+CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNDRh
ZDE2ZTk5NGI5NzYzZWU1ZDZlY2VlZTA4NTgzZGExN2FmZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGxhdGZvcm1YUlN5c3RlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I7Ci1jbGFzcyBXZWJQ
YWdlUHJveHk7Ci0KLXN0cnVjdCBYUkRldmljZUluZm87Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIFBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5Jik7Ci0g
ICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbSgpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7
Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJDb29yZGlu
YXRvcigpOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAg
Ly8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYpOwotICAg
IHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0RG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7Ci0gICAg
dm9pZCBzdWJtaXRGcmFtZSgpOwotCi0gICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDUzYWFkOTBjMzE3NmI4
YmExZjg2ZmMwZjM5NWQyZDAwMDQ2NjA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLSAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQlhSKQotCi1tZXNzYWdlcyAt
PiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJlZkNvdW50ZWQgewotICAgIEVudW1lcmF0ZUltbWVyc2l2
ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZv
cykgQXN5bmMKLSAgICBJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotICAgIFNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3Qg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3luYwotICAgIFN1Ym1p
dEZyYW1lKCkKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxhdGZvcm1YUlN5c3RlbS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdm
M2Q3ZjQ5OGM2YmMzMWVlNTA3NzM4ZDIxMjU5NGU3ZjljNmZjMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW0u
aCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9y
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGxhdGZv
cm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSkKLXsKLSAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
d2ViUGFnZUlEKCksICp0aGlzKTsKLX0KLQotUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJT
eXN0ZW0oKQotewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53
ZWJQYWdlSUQoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCi17
Ci0gICAgaWYgKHhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRT
ZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVt
ZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJE
ZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvKiB4ckNvb3Jk
aW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOwotICAgIGlmICgheHJD
b29yZGluYXRvcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgeHJDb29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8o
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0
aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXZpY2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGlmICghZGV2aWNlSW5mbykgewotICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0g
UGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOwotICAgIGlmICgheHJDb29yZGluYXRv
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgeHJDb29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1f
cGFnZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIg
ZGV2aWNlSWRlbnRpZmllcikgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dl
YWtUaGlzLCBkZXZpY2VJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpTZXNzaW9uRGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3Ig
PSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0
b3ItPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0
ZW06OnJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiB4
ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAg
ICB4ckNvb3JkaW5hdG9yLT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZy
YW1lKCkKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+c3VibWl0RnJhbWUobV9w
YWdlKTsKLX0KLQotfQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxX
ZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUlN5c3RlbUFkZGl0aW9ucy5tbT4KLSNlbHNlCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVt
Ojp4ckNvb3JkaW5hdG9yKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCAzNWZjOTRiZmQ0ZTE0YmEzM2NkNjdiYTRjNmU3ODdmMzYxNzA5YWYw
Li4xYzJlZmMzMmZmNmY1NjM3MDg1MjY3NjcwYjdlMDMwZGI2OTUzYTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKICAgICBtX3dlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9Q
RU5YUikKICAgICBBU1NFUlQoIW1feHJTeXN0ZW0pOwogICAgIG1feHJTeXN0ZW0gPSBtYWtlVW5p
cXVlPFBsYXRmb3JtWFJTeXN0ZW0+KCp0aGlzKTsKICNlbmRpZgpAQCAtNzc5Miw3ICs3NzkyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0
YXRlUmVhc29uKQogCiAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0g
bnVsbHB0cjsKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBpZiAobV94clN5c3RlbSkgewogICAgICAg
ICBtX3hyU3lzdGVtLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1feHJTeXN0ZW0gPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0ODVmNzRiNGViZmFl
OGFkZDlmMjkwNjFjY2RlM2ZiYmY2N2IwMGY5Li5lZGNkYTNmMTljMmM5OTM0YmU0ZTA3ZjA0YWFi
ZTk4ZmVlNzUzNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTg1LDcgKzE4NSw3IEBAIGludGVyZmFjZSBJRDNEMTFEZXZpY2UxOwogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIp
ICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbS5oIgogI2VuZGlmCiAKQEAgLTMwNDMsNyArMzA0Myw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OwogCi0jaWYgRU5BQkxFKFdFQlhS
KSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtPiBtX3hyU3lzdGVtOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29y
ZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5h
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDMxNjExOGZjZjZmNzFlNDVkOWRjNWVkNDY2YWM3NDg3MDdhM2Nj
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJDb29yZGluYXRvci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Y
Ui5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IgeworcHVi
bGljOgorICAgIHZpcnR1YWwgflBsYXRmb3JtWFJDb29yZGluYXRvcigpID0gZGVmYXVsdDsKKwor
ICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgYW5kIHdpbGwgYmUgZml4ZWQgbGF0ZXIuCisgICAgc3Rh
dGljIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGRlZmF1bHRMYXllckhhbmRsZSgpIHsgcmV0dXJu
IDE7IH0KKworICAgIHVzaW5nIERldmljZUluZm9DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxYUkRldmljZUluZm8+KT47CisgICAgdmlydHVhbCB2b2lkIGdldFByaW1hcnlE
ZXZpY2VJbmZvKERldmljZUluZm9DYWxsYmFjayYmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGNy
ZWF0aW9uL3Rlcm1pbmF0aW9uLgorICAgIHVzaW5nIE9uU2Vzc2lvbkVuZENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChYUkRldmljZUlkZW50aWZpZXIpPjsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRT
ZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9uU2Vzc2lvbkVuZENhbGxiYWNrJiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklmRXhpc3RzKFdlYlBhZ2VQcm94eSYpID0gMDsKKworICAg
IC8vIFNlc3Npb24gZGlzcGxheSBsb29wLgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1h
dGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1l
Q2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGcmFtZShXZWJQYWdlUHJv
eHkmKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1Y
UlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yY2UyY2JhNjY3OWU1MzZkZjc3NGI0MjBhMDNhMjAxZTFiMWNjYjBm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1Y
UlN5c3RlbS5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbS5oIgorCisjaWYgRU5BQkxFKFdFQlhS
KQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJTeXN0ZW06OlBsYXRm
b3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cisg
ICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhp
cyk7Cit9CisKK1BsYXRmb3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKK3sKKyAgICBt
X3BhZ2UucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworfQor
Cit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmludmFsaWRhdGUoKQoreworICAgIGlmICh4ckNvb3Jk
aW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1f
cGFnZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3Jt
WFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNl
SW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IWRldmljZUluZm8pIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZygpCit7CisgICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCisgICAgICAgIHJldHVy
bjsKKworICAgIHhyQ29vcmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6U2Vzc2lvbkRpZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZF
eGlzdHMobV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBs
YXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+
c2NoZWR1bGVBbmltYXRpb25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzdWJtaXRGcmFtZSgpCit7CisgICAgaWYg
KGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkp
CisgICAgICAgIHhyQ29vcmRpbmF0b3ItPnN1Ym1pdEZyYW1lKG1fcGFnZSk7Cit9CisKK30KKwor
I2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRm
b3JtWFJDb29yZGluYXRvciogUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkYWU0NTNkNzJjYzcyNjQxMTVlODg4ZGFjMTM2MGI1NGRjNmRjNDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQlhSKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I7CitjbGFz
cyBXZWJQYWdlUHJveHk7CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFBsYXRmb3Jt
WFJTeXN0ZW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5
Jik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbSgpOworCisgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJD
b29yZGluYXRvcigpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwor
CisgICAgLy8gTWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYp
OworICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7
CisgICAgdm9pZCBzdWJtaXRGcmFtZSgpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNGM4YmI2MjY0NjkzNGIwNjYyZWYxM2JlMTYxZWQ1MmY1
MmJiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAor
I2lmIEVOQUJMRShXRUJYUikKKworbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbSBOb3RSZWZD
b3VudGVkIHsKKyAgICBFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSAtPiAoVmVjdG9yPFdl
YktpdDo6WFJEZXZpY2VJbmZvPiBkZXZpY2VzSW5mb3MpIEFzeW5jCisgICAgSW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKKyAgICBTaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
KyAgICBSZXF1ZXN0RnJhbWUoKSAtPiAoc3RydWN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhIGZyYW1lRGF0YSkgQXN5bmMKKyAgICBTdWJtaXRGcmFtZSgpCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzk3
NjNiNmYxMzkxNTA1MWMwYmM0MTM1MTcyY2MyZWE3YzRkZmYzNy4uYzRlYzY1ZjQ3MjVhN2Q2ZWRj
OGE5ZTgxODQ3YzNlZDFjNDhlNzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0g
MTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNp
b24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLwpAQCAtMTExMywxMiArMTExMyw2IEBACiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRF
NyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM3MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlh
cnlQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8q
IEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIEF1
eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFG
QkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyog
TmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07Ci0JCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFF
RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50
aWZpZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI1MDgw
QUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9OwotCQk1MjYzRTI1NzI2
MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2
aWNlUHJveHkuaCAqLzsgfTsKLQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3Jt
WFJDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5o
ICovOyB9OwotCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNEYy
NjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsKLQkJNTI2M0UyNUYy
NjFFOTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFFOTZERjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBF
QjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVj
dGlvblNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlG
MjgxMDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJENUExQjAxQzU3
NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3NDk0RTAwREUz
NEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpAQCAtMjU2MCw2ICsy
NTU0LDE5IEBACiAJCTBGRkVEOThGMjNBMzIwMzcwMEVFRjQ1OSAvKiBXS1dlYlZpZXdNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkVEOTkwMjNBMzIwMzgwMEVFRjQ1OSAv
KiBXS1dlYlZpZXdNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJW
aWV3TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThDN0IxRkVBNTU4NUUx
MUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMTE4NTAyNTYyNjczQjAxNjAwQTY0MjVF
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNTcyNjczQjAx
NjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3Jt
WFJTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQ
bGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5h
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVDMjY3M0IwNzEwMEE2
NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUQyNjczQjA3MTAwQTY0
MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3Rl
bS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUUyNjcz
QjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjEyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2
aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxMTg1MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNl
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZUluZm8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRjE5NkIzMjk0MDBCOUFE
NDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQ0
MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxODgsMTggKzQxOTUsNiBAQAogCQk1MUZCMDkwMjE2
M0EzQjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEI0MTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZUluZm8u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFF
RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
NTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lz
dGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRm
b3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0Qg
LyogWFJEZXZpY2VQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFhSRGV2aWNlUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNF
MjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUUyNjFFOTZFMDAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJE
NEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0aCA9IG1hYy9X
S1Byb3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJE
NEM4MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgcGF0
aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQxOCw2ICs2NDEz
LDM5IEBACiAJCQluYW1lID0gIk90aGVyIEZyYW1ld29ya3MiOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhSICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1ODI2NzNCMDE2
MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLywKKwkJCQkxMTg1MDI1NjI2
NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCisJCQkJMTE4NTAy
NTcyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAq
LywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQ
bGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKKwkJCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbS5jcHAgKi8sCisJCQkJMTE4NTAyNUMyNjczQjA3MTAwQTY0MjVF
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKKwkJCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxMTg1MDI2MDI2NzNCMERBMDBB
NjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywK
KwkJCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNwcCAqLywKKwkJ
CQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCisJCQkJMTE4
NTAyNjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovLAorCQkJCTExODUw
MjYxMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmggKi8sCisJCQkpOworCQkJcGF0
aCA9IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUEwRUM2QjAxMjRC
QkQzNjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtNjY4NCw2ICs2NzEyLDcgQEAKIAkJCQkxQUFFMDU4QzEyNzlE
Q0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQg
LyogUmVtb3RlTGF5ZXJUcmVlICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBX
ZWJzaXRlRGF0YSAqLywKKwkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyogWFIgKi8sCiAJ
CQkJRTNCQ0U4NzcyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5j
cHAgKi8sCiAJCQkJRTNCQ0U4NzgyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVm
ZXJlbmNlcy5oICovLAogCQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFz
c2VydGlvbi5jcHAgKi8sCkBAIC03MDQwLDEwICs3MDY5LDcgQEAKIAkJCQkxQUJDM0RGMzE4OTlF
NDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tICovLAogCQkJCTVDNkNFNkQzMUY1OUVB
MzUwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmggKi8sCiAJCQkJNUM2Q0U2RDAxRjU5
QkM0NjAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0gKi8sCi0JCQkJNTI2M0UyNEQy
NjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovLAotCQkJCTUyNjNF
MjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8sCi0JCQkJNTI2M0Uy
NTAyNjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8sCi0J
CQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubW0gKi8sCisJ
CQkJMTE4NTAyNUUyNjczQjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAq
LywKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZCMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLApAQCAtODMxOCwxMSAr
ODM0NCw2IEBACiAJCQkJQzE0RDMwNjUyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1t
ICovLAogCQkJCUMxNEQzMDY4MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5o
ICovLAogCQkJCUMxNEQzMDY2MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5t
bSAqLywKLQkJCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVy
LmggKi8sCi0JCQkJNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICov
LAotCQkJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0gKi8sCi0J
CQkJNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKLQkJCQk1
MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLywKIAkJCSk7CiAJ
CQluYW1lID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC05MzE5LDkgKzkzNDAsNiBAQAog
CQkJCUMxQTE1MkQ2MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2Vz
Lm1tICovLAogCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0Rh
dGFiYXNlTWFuYWdlci5oICovLAogCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKLQkJCQk1MjYzRTI1RDI2MUU5NkRGMDAx
OEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCi0JCQkJNTI2M0UyNUUyNjFFOTZF
MDAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1
MjYzRTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tICovLAog
CQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05Nzg3LDYgKzk4MDUsNyBAQAog
CQkJCUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAvKiBXZWJDb3JlU3VwcG9ydCAqLywKIAkJCQlC
QzAzMkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLywKIAkJCQkxQUFDNERERTE2QjFD
QkY2MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywKKwkJCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQy
NUUgLyogWFIgKi8sCiAJCQkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcy5jcHAgKi8sCiAJCQkJQkNFOUMwRDAxNDg1OTY1RDAwRTMzRDYxIC8qIFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICovLAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMzN0JB
QiAvKiBXZWJQcm9jZXNzLmNwcCAqLywKQEAgLTk5NTIsNiArOTk3MSw3IEBACiAJCQkJMUFBRjA4
OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTU3NjA4Mjk0MjAyQkQ4
NDkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkxQTUzQzJBMzFBMzI1Njkx
MDA0RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCisJCQkJMTE4NTAyNTkyNjczQjA3MTAwQTY0MjVF
IC8qIFhSICovLAogCQkJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlhcnlQcm9j
ZXNzUHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlh
cnlQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKQEAgLTEyMTU5LDkgKzEy
MTc5LDYgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg5NDlGMTE4MjA0NEY2MDBFODk4
QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUYyNjFF
OTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzA1NSw5ICsxMzA3Miw2IEBACiAJCQkJQzE1RTZDQjMyNEI3QkU2RjAwRTUw
MUEyIC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTVFNkNCNDI0QjdCRTc2
MDBFNTAxQTIgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkVD
REU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNl
SW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdEIC8qIFhS
RGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA3
ZDYyZTVlOWEzOWQxNWNhYTM3NWExMWM5OTY3NDU2NzY0ZGY4OTk3Li40NzU0ZDNhNDUzZmI0N2Yy
YWI1NGYwZThiYzE4NTgzOGRlY2ViYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTQ5
Niw3ICsxNDk2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNvbnRyb2xzQ29u
dGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIAot
I2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAm
JiAhVVNFKE9QRU5YUikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhSOjpJbnN0YW5j
ZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS54clN5
c3RlbVByb3h5KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2Mjg2MjAyODQyNGZiYmJlZDEzMjgx
NjM1NzRiNzA1ZDNiYzE4MzY2Li5mODhjOWM4ZjNiZDM4MWVhMmYyZTYzZThmODUwYTRiZDk2NzA3
Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00NDQsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6RmxvYXRSZWN0JiYs
IFZlY3RvcjxXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OklE
KT4mJikgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVO
VVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9S
TShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHZvaWQgZW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxh
dGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCmluZGV4IDQ0OTA3NTVmZmY3NjhkNDEwYjUzNTdmYzYxMDIyMjZlZjdlYjU2ZWUuLmUx
NDE1MGI1YjhkYTZjMTU3MDliMzBjYWMyYTlkZTQ2N2RlMmJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAg
LTQ0MywxNSArNDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAgICBjb21wbGV0aW9u
SGFuZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQcmludGluZygpKSk7
CiB9CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6
OnhyU3lzdGVtUHJveHkoKQotewotICAgIGlmICghbV94clN5c3RlbVByb3h5KQotICAgICAgICBt
X3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5Pihu
ZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7Ci0gICAgcmV0dXJuICptX3hyU3lzdGVt
UHJveHk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBX
ZWJQYWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1bHQoY29uc3QgRGF0YURldGVj
dG9yRWxlbWVudEluZm8mIGluZm8sIGNvbnN0IEludFBvaW50JiBjbGlja0xvY2F0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyZDRhMTQx
ZmUwNWU1YzBiOTczMDJmZDJlNWIyYzEzOThlZmY2NjYxLi44ODc5YmQ2NzIzY2VkMTk0NGE3MWE4
MGEwOTZhOWRiYjcxZWUxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNzMzNyw2ICs3MzM3LDE1IEBAIHZvaWQgV2ViUGFnZTo6dGV4dEF1
dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKK1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSgpCit7CisgICAgaWYg
KCFtX3hyU3lzdGVtUHJveHkpCisgICAgICAgIG1feHJTeXN0ZW1Qcm94eSA9IHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkoKnRo
aXMpKTsKKyAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7
CiAgICAgaWYgKG1lZGlhVHlwZSA9PSBtX292ZXJyaWRkZW5NZWRpYVR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzliMzA1OWExYTNhM2YyYjE2
NGQ5NjFhM2VkMWQ3Yjk3ZjM3ZWM4Ny4uZWM1OWI5ZjQ4ZWY0ODA3MjNmNmUwYzVmNmE2NGRjMjU1
OGM2ZTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0Owog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYg
IVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCiAjZW5kaWYK
IApAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dEF1dG9zaXppbmdV
c2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikg
JiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAg
ICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRpZgogCkBAIC0y
MzUxLDcgKzIzNTEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxX
ZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRp
b247CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYg
RU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1OWI5NmM3Yjc3YzRjODg5M2NkMmRkOTRiNDAyODI1MDU4YzJjZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKworI2lmIEVOQUJMRShX
RUJYUikKKworI2luY2x1ZGUgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxh
dGZvcm1YUlN5c3RlbVByb3h5OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYgcGFnZSkK
KyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Ojp+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEluc3RhbmNlOjpEZXZpY2VMaXN0Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6RW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8WFJEZXZpY2VJbmZvPiYmIGRldmlj
ZXNJbmZvcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgZGV2aWNl
czsKKyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2VJbmZvIDogZGV2aWNlc0luZm9zKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5p
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZCgqZGV2aWNlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChYUkRldmljZVBy
b3h5OjpjcmVhdGUoV1RGTW92ZShkZXZpY2VJbmZvKSwgKnRoaXMpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2RldmljZXMuc3dhcChkZXZpY2VzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9kZXZpY2VzKTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Omlu
aXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OlBsYXRmb3JtWFJTeXN0ZW06OkluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpT
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJv
b2wpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtWFJDb29yZGluYXRvcjo6ZGVmYXVsdExheWVySGFu
ZGxlKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzdWJtaXRGcmFtZSgpCit7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlN1Ym1pdEZyYW1l
KCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZChYUkRl
dmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBkZXZpY2Ug
PSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSWRlbnRpZmllcikpCisgICAgICAgIGRldmljZS0+
c2Vzc2lvbkRpZEVuZCgpOworfQorCitSZWZQdHI8WFJEZXZpY2VQcm94eT4gUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpkZXZpY2VCeUlkZW50aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCit7CisgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBtX2RldmljZXMpIHsKKyAgICAgICAgYXV0
byogZGV2aWNlUHJveHkgPSBzdGF0aWNfY2FzdDxYUkRldmljZVByb3h5Kj4oZGV2aWNlLnB0cigp
KTsKKyAgICAgICAgaWYgKGRldmljZVByb3h5LT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiBkZXZpY2VQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVk
NDA5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eShXZWJQYWdlJik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7
CisKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOworICAg
IHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVp
bnQzMl90LCBib29sKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
TWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOwor
ICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTBhYzFmN2Y2MjRiNDk2ZGE1
N2ExMGY5NjRlZjRkZDkxZjVjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2Vzc2lvbkRpZEVuZChXZWJL
aXQ6OlhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzNGRlNTFhMTI1ODdmMTQz
MmNkMDY1MmU4Y2M3NDQ5NmVkNDA5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5
c3RlbVByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRl
dmljZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eShXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVBy
b3h5KCk7Ci0KLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYp
OwotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxh
dGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLXByaXZhdGU6
Ci0gICAgUmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlk
ZW50aWZpZXIpOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0g
ICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlk
ZW50aWZpZXIpOwotCi0gICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZp
Y2VzOwotICAgIFdlYlBhZ2UmIG1fcGFnZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3OTQwNTc5MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBO
b3RSZWZDb3VudGVkIHsKLSAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlm
aWVyIGRldmljZUlkZW50aWZpZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWZhNWI4ODJmZTZkOTdmMzFlNzhlNTFjM2QzMGZmZWE3
MzNmZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJY
UikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9y
bVhSU3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3Nh
Z2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0jaW1w
b3J0ICJYUkRldmljZUluZm8uaCIKLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQotICAgIDogbV9w
YWdlKHBhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwotfQotCi12b2lk
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQ
bGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOwotICAgICAg
ICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0
ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIG1fZGV2
aWNlcy5zd2FwKGRldmljZXMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMp
OwotICAgIH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZv
cm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwotfQotCi12b2lk
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17
Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpy
ZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNh
bGxiYWNrKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKLXsKLSAg
ICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Ci19Ci0K
LXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRp
ZmllciBkZXZpY2VJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5
SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKLSAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlk
RW5kKCk7Ci19Ci0KLVJlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgewotICAgICAgICBhdXRvKiBkZXZpY2VQ
cm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOwotICAgICAg
ICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAg
ICAgcmV0dXJuIGRldmljZVByb3h5OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
</data>
<flag name="commit-queue"
          id="452896"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431201</attachid>
            <date>2021-06-11 09:11:42 -0700</date>
            <delta_ts>2021-06-21 05:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210611181140.patch</filename>
            <type>text/plain</type>
            <size>106643</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlMTQ3ODU1MzNiNmFkNDU3
NWQzOGRhMWJkZDQ0MzViZmNmNDZmZTguLjc5YjZiZmJlNzdhNTUyN2ZmODE5Y2M2ODA2MDI0MmY1
YzNlOGZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNi0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAg
ICAgICB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbigpIHNob3VsZCB3YWl0IGZvciB0aGUg
bmV4dCBmbHVzaCBiZWZvcmUgaXQgZG9lcyBjYWxsU25hcHNob3RSZWN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CmluZGV4IGY2MzEyODM4NTliODc3YmQ5Njg4NjcxMjg5MDgwY2EyOTUxNzEzN2EuLjY5OTk5
NmY4MzZhZDdkYWFmMjFiMDUzNWRmMjUxN2E2MzMwY2ZiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApA
QCAtNDYsNiArNDYsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJLSVRfRElSfS9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vU2hhcmVkL1JlbW90ZUxheWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvV2Vi
c2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1hSIgogICAgICIke1dFQktJVF9E
SVJ9L1VJUHJvY2VzcyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKQEAgLTY4LDYgKzY5LDcgQEAgc2V0KFdlYktp
dF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKKyAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvWFIiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViQXV0
aG5Qcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7V0VCS0lU
X0RJUn0vV2ViUHJvY2Vzcy9BcHBsZVBheSIKQEAgLTEwOCw2ICsxMTAsNyBAQCBzZXQoV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBh
Z2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UiCisgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9YUiIKICAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2Ui
CiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vV2ViS2l0TGlicmFyaWVzIgogKQpAQCAtMjE2LDYg
KzIxOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCisgICAgVUlQcm9jZXNz
L1hSL1BsYXRmb3JtWFJTeXN0ZW0KKwogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCiAgICAg
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkKQEAgLTI4NSw2
ICsyOTAsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UKIAogICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cAorCisgICAgV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICkKIAogc2V0KFdl
YktpdF9GUkFNRVdPUktTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMDYyMWUwMzQxNTQ1ZGZjYTY5ZTQzOGQzMjZiNzk3ZmI4MDgwYWYwNS4u
MDM1ODY4OGQzMWZkZmVlZjkyYjE4OTQyMmM2MmNhODJiZTEzNjhjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAwLDcgKzEwMCw2IEBA
ICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5t
ZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMzAsNiArMTI5LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nl
c3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjAwLDggKzIwMCw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmlu
Ci0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGE4M2JiMmM1YmQxMWZkMDFlNTM5M2ExZGYzNWMyNDlk
ZTc2ZGU4MS4uYjk5MzYzMDc3MzJmNGJlYzQ3YjNjNjA5YjIwOWFhZDcyMTE2Mzg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTYyLDcgKzE2Miw2IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJ
VUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkgXAotCVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlV
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCkBAIC0xNzYsNiArMTc1LDcgQEAgTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveHkgXAogCVVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VNYW5hZ2VyIFwKIAlVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgXAor
CVVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5IFwKQEAgLTIyMCw3ICsyMjAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9
IFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3Mv
V2ViUHJvY2VzcyBcCi0JV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkgXAog
CVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciBcCkBAIC0yMzksNiArMjM4LDcgQEAgTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKIAlXZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uIFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eSBc
CiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDY1MDQ4N2EzMTBhYmNiNzU3NzY2NWI5ZmE3NzFmMTA2YzRiMzMzZmEuLmUxMjEzMTJhZDFl
ZjNjMDNkMGQxMTA3ZTNlNDdhZDA4Yzg5MmFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtMjE3LDcgKzIxNyw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwog
CiAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlcgogCi0gICAgVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW0KICAgICBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkKICAgICBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CkBA
IC0yNTUsNyArMjU0LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yCiAKLSAgICBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eQog
ICAgIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogICAgIFdlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE4
YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVlOTlkMTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gWFJEZXZp
Y2VJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFhSRGV2aWNlSWRlbnRpZmllclR5cGU+OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAy
NGM5OWI3YjdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNs
YXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgWFJEZXZpY2VJ
bmZvIHsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHN1cHBv
cnRzT3JpZW50YXRpb25UcmFja2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBzdXBwb3J0c1N0ZXJl
b1JlbmRlcmluZyB7IGZhbHNlIH07Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlz
dCBmZWF0dXJlczsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7
IDAsIDAgfTsKLQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE5MGI4ZGRjYjMxMmUyNDIyMGM1NGE4MzBlN2U2ODdkNDE5OTc2YTEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiWFJEZXZp
Y2VJbmZvLmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBYUkRldmljZUluZm86OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVu
dGlmaWVyIDw8IHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA8PCBzdXBwb3J0c1N0ZXJlb1Jl
bmRlcmluZyA8PCBmZWF0dXJlcyA8PCByZWNvbW1lbmRlZFJlc29sdXRpb247Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCi17Ci0gICAgWFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVz
LnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuZmVhdHVyZXMpKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5y
ZWNvbW1lbmRlZFJlc29sdXRpb24pKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIGRldmljZUZlYXR1cmVzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2ZhNTU4MmU2
OTYzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvOwotCi1j
bGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZpY2VJbmZv
JiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOwotICAgIFhSRGV2aWNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIHNlc3Np
b25EaWRFbmQoKTsKLQotcHJpdmF0ZToKLSAgICBYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYm
LCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21t
ZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IHJldHVybiBt
X3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKLSAgICB2b2lkIHNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNl
VHlwZSkgZmluYWwgeyB9Ci0gICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+
IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxh
eWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQg
ZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKLSAgICB2
b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5h
bDsKLQotICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2Vha1B0cjxQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07Ci0gICAgYm9vbCBtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmVjb21tZW5k
ZWRSZXNvbHV0aW9uIHsgMCwgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9YUkRldmljZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZp
Y2VQcm94eS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJmY2I0MGJhNjUwYWI5
MjQzNjdiYjQ3NzRiNzE5Y2NiYzM4Y2ZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJY
UikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCi0jaW1wb3J0ICJYUkRldmlj
ZUluZm8uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1SZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8p
LCB4clN5c3RlbSkpOwotfQotCi1YUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi0gICAg
OiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKLXsKLSAgICBtX2lkZW50aWZpZXIg
PSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7Ci0gICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9
IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7Ci0gICAgbV9zdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsK
LSAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNv
bHV0aW9uOwotICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8u
ZmVhdHVyZXMpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQotewot
ICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQotICAgICAgICB0cmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLXZvaWQgWFJEZXZpY2VQ
cm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25N
b2RlIHNlc3Npb25Nb2RlKQotewotICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3hy
U3lzdGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKLXsKLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpOwotfQotCi1WZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QK
LXsKLSAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Ci0gICAgaWYgKG1fc3VwcG9y
dHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsK
LSAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKLSAg
ICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUg
fSk7Ci0gICAgcmV0dXJuIHZpZXdzOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Ci17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFt
ZShXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQotewotICAgIHJldHVybiBtX3hyU3lz
dGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFs
cGhhKSA6IHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFt
ZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKLXsKLSAgICBpZiAobV94clN5
c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThiYjJiYWRjY2Vh
NDMzYWZkYmE4NWVkMGI2OGNkZWU5OWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBYUkRl
dmljZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFhSRGV2aWNlSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8WFJEZXZpY2VJZGVudGlmaWVyVHlwZT47CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNl
SW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwZWIwNWQ4ZjliZmY0ZmVhMzA5M2Q2YjU4OGJhOTdlMzNjMGFhMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
WFJEZXZpY2VJbmZvLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFJEZXZpY2VJ
bmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNT
dGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMgPDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOworfQor
CitzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VG
ZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBw
b3J0c1N0ZXJlb1JlbmRlcmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVh
dHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBkZXZpY2VGZWF0dXJlczsKK30KKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJ
bmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVhSLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKKyAgICBY
UkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBib29sIHN1cHBvcnRzT3JpZW50YXRp
b25UcmFja2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7
IGZhbHNlIH07CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKKwor
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNzA4ZTlmMDQ0ZDNmZWM4
ZjhiYjI0MTllNGQ4MzMwOWQ4N2YzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKyNp
bmNsdWRlICJYUkRldmljZUluZm8uaCIKKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6
Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYg
eHJTeXN0ZW0pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZN
b3ZlKGRldmljZUluZm8pLCB4clN5c3RlbSkpOworfQorCitYUkRldmljZVByb3h5OjpYUkRldmlj
ZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYg
eHJTeXN0ZW0pCisgICAgOiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKK3sKKyAg
ICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBwb3J0c1N0
ZXJlb1JlbmRlcmluZyA9IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7CisgICAg
bV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50
YXRpb25UcmFja2luZzsKKyAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8u
cmVjb21tZW5kZWRSZXNvbHV0aW9uOworICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0Vt
cHR5KCkpCisgICAgICAgIHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZl
VnIsIGRldmljZUluZm8uZmVhdHVyZXMpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Np
b25EaWRFbmQoKQoreworICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQorICAg
ICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisK
K3ZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRm
b3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2RlKQoreworICAgIGlmIChzZXNzaW9uTW9kZSAh
PSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94
clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCitWZWN0b3I8UGxh
dGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1v
ZGUgbW9kZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Cisg
ICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6
SW1tZXJzaXZlVnIpIHsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5
ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6
UmlnaHQgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0
cnVlLCBFeWU6Ok5vbmUgfSk7CisgICAgcmV0dXJuIHZpZXdzOworfQorCit2b2lkIFhSRGV2aWNl
UHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0
ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVj
dGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQoreworICAg
IHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdp
ZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBYUkRldmljZVBy
b3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKK3sK
KyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZlNDYzOTQ2
Njg2OWE1ZTNkMDc5ZjdhY2M3ZmE1NTgyZTY5NjM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJY
UkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk7CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNlUHJveHkg
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFhSRGV2aWNlUHJveHk+IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Jik7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOworCitwcml2
YXRlOgorICAgIFhSRGV2aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgcmV0dXJuIG1fcmVjb21tZW5kZWRSZXNvbHV0
aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1Y
Ujo6U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVm
ZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAg
ICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6
U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3Jt
WFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQz
Ml90LCB1aW50MzJfdCwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZSkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgc3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpIGZpbmFsOworCisgICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eT4gbV94clN5c3RlbTsKKyAgICBib29sIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxz
ZSB9OworICAgIFdlYkNvcmU6OkludFNpemUgbV9yZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAw
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IGQ1NGExNTQ5YWE3ODcwOWRkNWU2ZWUxY2JhYmE0YjU3MGE2Y2Zl
ZDguLmIxMThmOGM2OTE5MDQzZmMzMDJhZGI5MDEwN2RhODQzM2JmZWNiN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjg5LDYgKzI4OSw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9y
bWF0aW9uLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cAogCitTaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcAorU2hhcmVkL1hSL1hSRGV2aWNlUHJveHku
Y3BwCisKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtNTA1LDYgKzUwOCw4IEBAIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcAogCitVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKKwogV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIFdlYkF1dGhu
UHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzI0LDggKzcyOSwxMiBAQCBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcAogCitXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5jcHAKKwogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAog
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitQbGF0Zm9y
bVhSU3lzdGVtTWVzc2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDhjZmM2MDc0ZDA1NjJhYTU4
MmM1YzBkMjM0ODhlZTYzNmIyYzlhOWMuLjAxZjAwYTY0YTBjZjU3ZDAzNzkxYTA4ODM4MDZhYzA3
OGYzNGZlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4NCw4ICsxODQsNiBAQCBTaGFy
ZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQogU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1t
CiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXNDb2NvYS5tbQotU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQotU2hhcmVk
L0NvY29hL1hSRGV2aWNlUHJveHkubW0KIAogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQogU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMzk4LDcgKzM5
Niw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KLVVJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9D
b2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTU5NCw3ICs1OTIsNiBAQCBXZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKIAogV2ViUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogCi1XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNw
cApAQCAtNzExLDggKzcwOCw2IEBAIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJX
ZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3Nh
Z2VSZWNlaXZlci5jcHAKIE1lc3NhZ2VOYW1lcy5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdl
UmVjZWl2ZXIuY3BwCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvU2Vzc2lv
bk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0K
LSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUluZm8u
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xh
c3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGFu
ZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgotICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpMYXllckhhbmRs
ZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJldHVybiAxOyB9Ci0KLSAgICB1c2luZyBEZXZpY2VJ
bmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPik+
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJbmZvQ2FsbGJh
Y2smJikgPSAwOwotCi0gICAgLy8gU2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlvbi4KLSAgICB1
c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZpY2VJZGVudGlm
aWVyKT47Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJveHkmLCBPblNl
c3Npb25FbmRDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNlc3Npb25JZkV4
aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7Ci0KLSAgICAvLyBTZXNzaW9uIGRpc3BsYXkgbG9vcC4K
LSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdlUHJveHkmLCBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFnZVByb3h5JikgeyB9Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZGQ1YTU1ZDA0Y2JkNmYwYjk5MDM1ZjEwZmNiYjVkYzQyYjdiOTk1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5h
dG9yLm1tCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQlhSKSAm
JiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGxh
dGZvcm1YUlN5c3RlbUFkZGl0aW9ucy5tbT4KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0
NGFkMTZlOTk0Yjk3NjNlZTVkNmVjZWVlMDg1ODNkYTE3YWZmYS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKLWNsYXNzIFdl
YlBhZ2VQcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgUGxhdGZvcm1YUlN5
c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsK
LSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUo
KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3Jk
aW5hdG9yKCk7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmlj
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7Ci0g
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKLSAg
ICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTNhYWQ5MGMzMTc2
YjhiYTFmODZmYzBmMzk1ZDJkMDAwNDY2MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2Vz
IC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7Ci0gICAgRW51bWVyYXRlSW1tZXJz
aXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0lu
Zm9zKSBBc3luYwotICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgU2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgUmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVj
dCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5jCi0gICAgU3Vi
bWl0RnJhbWUoKQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
N2YzZDdmNDk4YzZiYzMxZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3Rl
bS5oIgotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxh
dGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgot
I2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0
Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6
IG1fcGFnZShwYWdlKQotewotICAgIG1fcGFnZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS53ZWJQYWdlSUQoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1Y
UlN5c3RlbSgpCi17Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LndlYlBhZ2VJRCgpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlkYXRlKCkK
LXsKLSAgICBpZiAoeHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yKCktPmVu
ZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmVu
dW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxY
UkRldmljZUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8qIHhyQ29v
cmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4
ckNvb3JkaW5hdG9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNlSW5m
byhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpv
cHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11dGFibGUgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBXVEZNb3ZlKGRldmljZUluZm8pXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgaWYgKCFkZXZpY2VJbmZvKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGV2aWNlSW5mby52YWx1ZSgpIH0p
OwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3Ig
PSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5h
dG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5zdGFydFNlc3Npb24o
bV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFhSRGV2aWNlSWRlbnRpZmll
ciBkZXZpY2VJZGVudGlmaWVyKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRFbmQoZGV2aWNlSWRlbnRpZmllcikp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRv
ciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGlu
YXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5
c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8q
IHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAg
ICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxlQW5pbWF0aW9uRnJhbWUobV9wYWdlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c3VibWl0
RnJhbWUoKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRGcmFtZSht
X3BhZ2UpOwotfQotCi19Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhSU3lzdGVtQWRkaXRpb25zLm1tPgotI2Vsc2UKLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0
ZW06OnhyQ29vcmRpbmF0b3IoKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi19Ci0jZW5k
aWYKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDM1ZmM5NGJmZDRlMTRiYTMzY2Q2N2JhNGM2ZTc4N2YzNjE3MDlh
ZjAuLjFjMmVmYzMyZmY2ZjU2MzcwODUyNjc2NzBiN2UwMzBkYjY5NTNhMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIG1fd2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0Uo
T1BFTlhSKQogICAgIEFTU0VSVCghbV94clN5c3RlbSk7CiAgICAgbV94clN5c3RlbSA9IG1ha2VV
bmlxdWU8UGxhdGZvcm1YUlN5c3RlbT4oKnRoaXMpOwogI2VuZGlmCkBAIC03NzkyLDcgKzc3OTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0
U3RhdGVSZWFzb24pCiAKICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIg
PSBudWxscHRyOwogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBF
TkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIGlmIChtX3hyU3lzdGVtKSB7CiAgICAg
ICAgIG1feHJTeXN0ZW0tPmludmFsaWRhdGUoKTsKICAgICAgICAgbV94clN5c3RlbSA9IG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ4NWY3NGI0ZWJm
YWU4YWRkOWYyOTA2MWNjZGUzZmJiZjY3YjAwZjkuLmVkY2RhM2YxOWMyYzk5MzRiZTRlMDdmMDRh
YWJlOThmZWU3NTM2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xODUsNyArMTg1LDcgQEAgaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJY
UikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikK
ICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCiAjZW5kaWYKIApAQCAtMzA0Myw3ICszMDQz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKLSNpZiBFTkFCTEUoV0VC
WFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2Ez
Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVhSLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0Owor
CisgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KKyAgICBz
dGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1
cm4gMTsgfQorCisgICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChz
dGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFy
eURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24g
Y3JlYXRpb24vdGVybWluYXRpb24uCisgICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOworCisg
ICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3AuCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5p
bWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBhZ2VQ
cm94eSYpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9y
bVhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjZTJjYmE2Njc5ZTUzNmRmNzc0YjQyMGEwM2EyMDFlMWIxY2Ni
MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9y
bVhSU3lzdGVtLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoV0VC
WFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6UGxh
dGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sK
KyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZv
cm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0
aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQoreworICAg
IG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9y
bVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhyQ29v
cmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMo
bV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZv
cm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgeHJDb29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJ
bmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZp
Y2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghZGV2aWNlSW5mbykgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgeHJDb29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmll
cikgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJ
ZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjpTZXNzaW9uRGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lz
dGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25J
ZkV4aXN0cyhtX3BhZ2UpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFt
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0g
UGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9y
LT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKK3sKKyAgICBp
ZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKK30KKworfQor
CisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxh
dGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKK3sK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2RhZTQ1M2Q3MmNjNzI2NDExNWU4ODhkYWMxMzYwYjU0ZGM2ZGM0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW0uaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworc3RydWN0IFhSRGV2aWNlSW5mbzsKKworY2xhc3MgUGxhdGZv
cm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJv
eHkmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7CisKKyAgICB2b2lkIGludmFs
aWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4
ckNvb3JkaW5hdG9yKCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4m
Jik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYm
KTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0u
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY0YzhiYjYyNjQ2OTM0YjA2NjJlZjEzYmUxNjFlZDUy
ZjUyYmJlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisg
CisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJl
ZkNvdW50ZWQgeworICAgIEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8
V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMKKyAgICBJbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KQorICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGEgZnJhbWVEYXRhKSBBc3luYworICAgIFN1Ym1pdEZyYW1lKCkKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBj
OTc2M2I2ZjEzOTE1MDUxYzBiYzQxMzUxNzJjYzJlYTdjNGRmZjM3Li5jNGVjNjVmNDcyNWE3ZDZl
ZGM4YTllODE4NDdjM2VkMWM0OGU3NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24g
PSAxOwogCWNsYXNzZXMgPSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVy
c2lvbiA9IDU0OwogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBz
ZWN0aW9uICovCkBAIC0xMTEzLDEyICsxMTEzLDYgQEAKIAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlD
NEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzcxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGls
aWFyeVByb2Nlc3NNZXNzYWdlcy5oICovOyB9OwogCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcg
LyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBRUMzNjFCMDY1NzMxMDAwOUM0RTcgLyog
QXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRkQxOEI2MTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4
QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRl
bnRpZmllci5oICovOyB9OwotCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUw
ODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi87IH07Ci0JCTUyNjNFMjU3
MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJE
ZXZpY2VQcm94eS5oICovOyB9OwotCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjYzRTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9y
LmggKi87IH07Ci0JCTUyNjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI0
RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovOyB9OwotCQk1MjYzRTI1
RjI2MUU5NkVGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi87IH07CiAJCTUyNzJENEM5MUU3MzVGMDkw
MEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90
ZWN0aW9uU3BhY2VOUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUyOEMzN0MxMTk1Q0JCMUEwMEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OUYyODEwMTk1OEY0NzgwMDhDQUM3MiAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkQ1QTFCMDFD
NTc0OTVBMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBQTFDNTc0OTRFMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi87IH07CkBAIC0yNTYwLDYg
KzI1NTQsMTkgQEAKIAkJMEZGRUQ5OEYyM0EzMjAzNzAwRUVGNDU5IC8qIFdLV2ViVmlld01hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld01hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRUQ5OTAyM0EzMjAzODAwRUVGNDU5
IC8qIFdLV2ViVmlld01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dl
YlZpZXdNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3QjFGRUE1NTg1
RTExQ0EyQ0JCIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJh
bWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxMTg1MDI1NjI2NzNCMDE2MDBBNjQy
NUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1NzI2NzNC
MDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTE4NTAyNTgyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZv
cm1YUlN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUMyNjczQjA3MTAw
QTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5
c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RDI2NzNCMDcxMDBB
NjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lz
dGVtLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RTI2
NzNCMEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2MTI2NzNCMERBMDBBNjQyNUUgLyogWFJE
ZXZpY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTExODUwMjYyMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZp
Y2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmlj
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3Rh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5
QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLU2Vzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAy
RDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE4OCwxOCArNDE5NSw2IEBACiAJCTUxRkIwOTAy
MTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjQx
NjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5m
by5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhSRGV2aWNlSW5m
by5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4
QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUkRldmljZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJT
eXN0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxh
dGZvcm1YUlN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3
RCAvKiBYUkRldmljZVByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gWFJEZXZpY2VQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2
M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MjYzRTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxh
dGZvcm1YUlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3
MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBwYXRoID0gbWFj
L1dLUHJvdGVjdGlvblNwYWNlTlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3
MkQ0QzgxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBw
YXRoID0gbWFjL1dLUHJvdGVjdGlvblNwYWNlTlMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDE4LDYgKzY0
MTMsMzkgQEAKIAkJCW5hbWUgPSAiT3RoZXIgRnJhbWV3b3JrcyI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUgLyogWFIgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjU4MjY3M0Iw
MTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICovLAorCQkJCTExODUwMjU2
MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKKwkJCQkxMTg1
MDI1NzI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmlu
ICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTExODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovLAorCQkJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmNwcCAqLywKKwkJCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQy
NUUgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovLAorCQkJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBY
UjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUwMjYwMjY3M0IwREEw
MEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICov
LAorCQkJCTExODUwMjY0MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICovLAor
CQkJCTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLywKKwkJCQkx
MTg1MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5jcHAgKi8sCisJCQkJMTE4
NTAyNjEyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQTBFQzZCMDEy
NEJCRDM2MDA3RUY0QTUgLyogUGx1Z2luUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC02Njg0LDYgKzY3MTIsNyBAQAogCQkJCTFBQUUwNThDMTI3
OURDRDQwMDg1MjQxOCAvKiBQbHVnaW5zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVF
RCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8q
IFdlYnNpdGVEYXRhICovLAorCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywK
IAkJCQlFM0JDRTg3NzI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2Vz
LmNwcCAqLywKIAkJCQlFM0JDRTg3ODI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVBy
ZWZlcmVuY2VzLmggKi8sCiAJCQkJQTdENzkyRDUxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5
QXNzZXJ0aW9uLmNwcCAqLywKQEAgLTcwNDAsMTAgKzcwNjksNyBAQAogCQkJCTFBQkMzREYzMTg5
OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2RDMxRjU5
RUEzNTAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKIAkJCQk1QzZDRTZEMDFG
NTlCQzQ2MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLywKLQkJCQk1MjYzRTI0
RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCi0JCQkJNTI2
M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKLQkJCQk1MjYz
RTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywK
LQkJCQk1MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLywK
KwkJCQkxMTg1MDI1RTI2NzNCMEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1t
ICovLAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCkBAIC04MzE4LDEx
ICs4MzQ0LDYgQEAKIAkJCQlDMTREMzA2NTI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnQu
bW0gKi8sCiAJCQkJQzE0RDMwNjgyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50
LmggKi8sCiAJCQkJQzE0RDMwNjYyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50
Lm1tICovLAotCQkJCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZp
ZXIuaCAqLywKLQkJCQk1MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmgg
Ki8sCi0JCQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLywK
LQkJCQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovLAotCQkJ
CTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lm1tICovLAogCQkJKTsK
IAkJCW5hbWUgPSBjb2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTkzMTksOSArOTM0MCw2IEBA
CiAJCQkJQzFBMTUyRDYyNEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2Fn
ZXMubW0gKi8sCiAJCQkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLmggKi8sCiAJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovLAotCQkJCTUyNjNFMjVEMjYxRTk2REYw
MDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKLQkJCQk1MjYzRTI1RTI2MUU5
NkUwMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJ
CTUyNjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8s
CiAJCQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk3ODcsNiArOTgwNSw3IEBA
CiAJCQkJQkMwMzJENUQxMEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0ICovLAogCQkJ
CUJDMDMyRDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovLAogCQkJCTFBQUM0RERFMTZC
MUNCRjYwMDk0MjVFMyAvKiBXZWJTdG9yYWdlICovLAorCQkJCTExODUwMjU1MjY3M0IwMTYwMEE2
NDI1RSAvKiBYUiAqLywKIAkJCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzLmNwcCAqLywKIAkJCQlCQ0U5QzBEMDE0ODU5NjVEMDBFMzNENjEgLyog
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmggKi8sCiAJCQkJQkMxMTFBRTMxMTJGNUMyNjAwMzM3
QkFCIC8qIFdlYlByb2Nlc3MuY3BwICovLApAQCAtOTk1Miw2ICs5OTcxLDcgQEAKIAkJCQkxQUFG
MDg5RTE5MjY4MUFDMDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCiAJCQkJNTc2MDgyOTQyMDJC
RDg0OTAwMTE2Njc4IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNTNDMkEzMUEzMjU2
OTEwMDRFOEM3MCAvKiBXZWJzaXRlRGF0YSAqLywKKwkJCQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQy
NUUgLyogWFIgKi8sCiAJCQkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGls
aWFyeVByb2Nlc3NQcm94eS5oICovLAogCQkJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBC
YWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLApAQCAtMTIxNTksOSAr
MTIxNzksNiBAQAogCQkJCTJEODcxMDE3MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODk0OUYxMTgyMDQ0RjYwMEU4
OThBQSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQzQzQUJCMTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9y
bVhSQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVCMjYxRTkzQUIwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1RjI2
MUU5NkVGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDZEQzY0QzI0QTJEOEU1MDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTFCMUNCREJGNDEwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUEyOTFD
QkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEzMDU1LDkgKzEzMDcyLDYgQEAKIAkJCQlDMTVFNkNCMzI0QjdCRTZGMDBF
NTAxQTIgLyogWFBDRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNUU2Q0I0MjRCN0JF
NzYwMEU1MDFBMiAvKiBYUENFbmRwb2ludENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
RUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZp
Y2VJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyog
WFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IDdkNjJlNWU5YTM5ZDE1Y2FhMzc1YTExYzk5Njc0NTY3NjRkZjg5OTcuLjQ3NTRkM2E0NTNmYjQ3
ZjJhYjU0ZjBlOGJjMTg1ODM4ZGVjZWJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0x
NDk2LDcgKzE0OTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd01lZGlhQ29udHJvbHND
b250ZXh0TWVudShGbG9hdFJlY3QmJiB0YXJnZXRGcmFtZSwgVmVjdAogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQog
Ci0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIp
ICYmICFVU0UoT1BFTlhSKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUltbWVyc2l2
ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3Rh
bmNlOjpEZXZpY2VMaXN0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLnhy
U3lzdGVtUHJveHkoKS5lbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDYyODYyMDI4NDI0ZmJiYmVkMTMy
ODE2MzU3NGI3MDVkM2JjMTgzNjYuLmY4OGM5YzhmM2JkMzgxZWEyZjJlNjNlOGY4NTBhNGJkOTY3
MDdjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShXZWJDb3JlOjpGbG9hdFJlY3Qm
JiwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbTo6
SUQpPiYmKSBmaW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9N
RU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRG
T1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgdm9pZCBl
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmKSBmaW5hbDsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0KaW5kZXggNDQ5MDc1NWZmZjc2OGQ0MTBiNTM1N2ZjNjEwMjIyNmVmN2ViNTZlZS4u
ZTE0MTUwYjViOGRhNmMxNTcwOWIzMGNhYzJhOWRlNDY3ZGUyYmFiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpA
QCAtNDQzLDE1ICs0NDMsNiBAQCB2b2lkIFdlYlBhZ2U6OmdldFBERkZpcnN0UGFnZVNpemUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYQogICAgIGNvbXBsZXRp
b25IYW5kbGVyKEZsb2F0U2l6ZShwbHVnaW4tPnBkZkRvY3VtZW50U2l6ZUZvclByaW50aW5nKCkp
KTsKIH0KIAotI2lmIEVOQUJMRShXRUJYUikKLVBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFn
ZTo6eHJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgaWYgKCFtX3hyU3lzdGVtUHJveHkpCi0gICAgICAg
IG1feHJTeXN0ZW1Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+
KG5ldyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkoKnRoaXMpKTsKLSAgICByZXR1cm4gKm1feHJTeXN0
ZW1Qcm94eTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiB2b2lk
IFdlYlBhZ2U6OmhhbmRsZUNsaWNrRm9yRGF0YURldGVjdGlvblJlc3VsdChjb25zdCBEYXRhRGV0
ZWN0b3JFbGVtZW50SW5mbyYgaW5mbywgY29uc3QgSW50UG9pbnQmIGNsaWNrTG9jYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDJkNGEx
NDFmZTA1ZTVjMGI5NzMwMmZkMmU1YjJjMTM5OGVmZjY2NjEuLjg4NzliZDY3MjNjZWQxOTQ0YTcx
YTgwYTA5NmE5ZGJiNzFlZTE3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC03MzM3LDYgKzczMzcsMTUgQEAgdm9pZCBXZWJQYWdlOjp0ZXh0
QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50TW9kZUNoYW5nZWQoKQogfQogI2VuZGlmIC8vIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCiAKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQor
UGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4clN5c3RlbVByb3h5KCkKK3sKKyAgICBp
ZiAoIW1feHJTeXN0ZW1Qcm94eSkKKyAgICAgICAgbV94clN5c3RlbVByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgq
dGhpcykpOworICAgIHJldHVybiAqbV94clN5c3RlbVByb3h5OworfQorI2VuZGlmCisKIHZvaWQg
V2ViUGFnZTo6c2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkK
IHsKICAgICBpZiAobWVkaWFUeXBlID09IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjOWIzMDU5YTFhM2EzZjJi
MTY0ZDk2MWEzZWQxZDdiOTdmMzdlYzg3Li5lYzU5YjlmNDhlZjQ4MDcyM2Y2ZTBjNWY2YTY0ZGMy
NTU4YzZlNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAm
JiAhVVNFKE9QRU5YUikKICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKICNlbmRp
ZgogCkBAIC0xNDU4LDcgKzE0NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0QXV0b3Npemlu
Z1VzZXNJZGVtcG90ZW50TW9kZUNoYW5nZWQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhS
KSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQog
ICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW1Qcm94eSgpOwogI2VuZGlmCiAKQEAg
LTIzNTEsNyArMjM1MSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWFrUHRy
PFdlYkNvcmU6OkhUTUxFbGVtZW50PiwgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPj4+PiBtX2VsZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25p
dGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNp
ZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW1Qcm94eTsKICNlbmRpZgogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzU5Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUwNThjMmNlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisjaWYgRU5BQkxF
KFdFQlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdl
KQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkp
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3Qm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2
aWNlc0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZp
Y2VzOworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZv
LmlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNl
UHJveHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOworICAgICAgICB9Cisg
ICAgICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtX2RldmljZXMpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkp
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06
OlNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwg
Ym9vbCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJI
YW5kbGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkK
K3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJh
bWUoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhS
RGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGRldmlj
ZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAgICAgICAgZGV2aWNl
LT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgeworICAgICAgICBh
dXRvKiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRy
KCkpOworICAgICAgICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKworICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2
ZWQ0MDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhSRGV2aWNl
UHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5
c3RlbVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJveHko
KTsKKworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7Cisg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8
UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwg
dWludDMyX3QsIGJvb2wpOworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRp
Zmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRp
Zmllcik7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2RldmljZXM7
CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFjMWY3ZjYyNGI0OTZk
YTU3YTEwZjk2NGVmNGRkOTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9uRGlkRW5kKFdl
YktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0ZGU1MWExMjU4N2Yx
NDMyY2QwNjUyZThjYzc0NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhS
RGV2aWNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgUGxhdGZv
cm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVt
UHJveHkoKTsKLQotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4m
Jik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50
MzJfdCwgdWludDMyX3QsIGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKLQotcHJpdmF0
ZToKLSAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNl
SWRlbnRpZmllcik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0K
LSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNl
SWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2Rl
dmljZXM7Ci0gICAgV2ViUGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNkNjMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgorKysg
L2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5
IE5vdFJlZkNvdW50ZWQgewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRldmljZUlkZW50
aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3OGU1MWMzZDMwZmZl
YTczM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVz
c2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3MuaCIKLSNp
bXBvcnQgIlhSRGV2aWNlSW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBu
YW1lc3BhY2UgUGxhdGZvcm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlBsYXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2VzSW5mb3Mp
IG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7Ci0gICAg
ICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewotICAgICAgICAgICAg
aWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRlbnRpZmll
cikpCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94eTo6Y3Jl
YXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9k
ZXZpY2VzLnN3YXAoZGV2aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fZGV2aWNl
cyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
LXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCi17Ci0gICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxh
dGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQot
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQotewot
ICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhhbmRsZSgpOwot
fQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUoKQotewotICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRGcmFtZSgpKTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJZGVu
dGlmaWVyIGRldmljZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNl
QnlJZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZpY2UtPnNlc3Npb25E
aWRFbmQoKTsKLX0KLQotUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQotewot
ICAgIGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRldmlj
ZVByb3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7Ci0gICAg
ICAgIGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCi0gICAgICAg
ICAgICByZXR1cm4gZGV2aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431848</attachid>
            <date>2021-06-21 05:05:13 -0700</date>
            <delta_ts>2021-06-23 02:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210621140511.patch</filename>
            <type>text/plain</type>
            <size>106628</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwNjlkOTBmNjFlODVkZTc0
YmE3OTM4Njk5YjNiNDAyYTYyNTM4ODYuLmQ4Yzc4MTM2MmYxMjdlZGYzOTAyYjgwMDgxNjAwYWUx
OTk3MThiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNi0yMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIFJlbmFtZSBXS1Zpc3VhbFNlYXJjaFByZXZpZXdDb250cm9sbGVyIHRv
IFdLUXVpY2tMb29rUHJldmlld0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGY2MzEy
ODM4NTliODc3YmQ5Njg4NjcxMjg5MDgwY2EyOTUxNzEzN2EuLjY5OTk5NmY4MzZhZDdkYWFmMjFi
MDUzNWRmMjUxN2E2MzMwY2ZiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBA
QCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1JlbW90
ZUxheWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvV2Vic2l0ZURhdGEiCisgICAg
IiR7V0VCS0lUX0RJUn0vU2hhcmVkL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2VzcyIK
ICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvQyIKQEAgLTY4LDYgKzY5LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uIgog
ICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrIgogICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKKyAgICAiJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvWFIiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViQXV0aG5Qcm9jZXNzIgogICAg
ICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vz
cy9BcHBsZVBheSIKQEAgLTEwOCw2ICsxMTAsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UiCiAgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZSIKICAgICAiJHtXRUJL
SVRfRElSfS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJv
Y2Vzcy9YUiIKICAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UiCiAgICAgIiR7Q01BS0Vf
U09VUkNFX0RJUn0vV2ViS2l0TGlicmFyaWVzIgogKQpAQCAtMjE2LDYgKzIxOSw4IEBAIHNldChX
ZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCisgICAgVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJT
eXN0ZW0KKwogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCiAgICAgV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkKQEAgLTI4NSw2ICsyOTAsOCBAQCBzZXQo
V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UK
IAogICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcAorCisgICAgV2ViUHJv
Y2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICkKIAogc2V0KFdlYktpdF9GUkFNRVdPUktT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MDYyMWUwMzQxNTQ1ZGZjYTY5ZTQzOGQzMjZiNzk3ZmI4MDgwYWYwNS4uMDM1ODY4OGQzMWZkZmVl
ZjkyYjE4OTQyMmM2MmNhODJiZTEzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAwLDcgKzEwMCw2IEBAICQoUFJPSkVDVF9ESVIp
L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgotJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzAsNiAr
MTI5LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvaW9zL1dlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjAwLDggKzIw
MCw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9j
b2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggZGE4M2JiMmM1YmQxMWZkMDFlNTM5M2ExZGYzNWMyNDlkZTc2ZGU4MS4uYjk5MzYz
MDc3MzJmNGJlYzQ3YjNjNjA5YjIwOWFhZDcyMTE2Mzg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTYyLDcgKzE2Miw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJVUlQcm9jZXNzL21hYy9T
ZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkg
XAotCVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlVSVByb2Nlc3MvQ29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSBcCkBAIC0xNzYsNiArMTc1LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJ
VUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkgXAogCVVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
IFwKIAlVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgXAorCVVJUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtIFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
biBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
IFwKQEAgLTIyMCw3ICsyMjAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCi0J
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkgXAogCVdlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlciBcCkBAIC0yMzksNiArMjM4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCiAJV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvWFIvUGxh
dGZvcm1YUlN5c3RlbVByb3h5IFwKIAlQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
IFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eSBcCiAJUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDY1MDQ4N2EzMTBh
YmNiNzU3NzY2NWI5ZmE3NzFmMTA2YzRiMzMzZmEuLmUxMjEzMTJhZDFlZjNjMDNkMGQxMTA3ZTNl
NDdhZDA4Yzg5MmFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjE3LDcgKzIxNyw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlcgogCi0gICAgVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0KICAgICBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAg
ICAgVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkKICAgICBVSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CkBAIC0yNTUsNyArMjU0LDYg
QEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yCiAKLSAg
ICBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eQogICAgIFdlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogICAgIFdlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRp
Zmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE4YmIyYmFkY2NlYTQzM2Fm
ZGJhODVlZDBiNjhjZGVlOTlkMTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmll
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZp
ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlw
ZSB7IH07Ci11c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2
aWNlSWRlbnRpZmllclR5cGU+OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5j
bHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhS
Lmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKLSAgICBYUkRl
dmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHN1cHBvcnRzT3JpZW50YXRpb25U
cmFja2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZh
bHNlIH07Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsKLSAg
ICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKLQotICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE5MGI4ZGRjYjMxMmUyNDIyMGM1NGE4MzBlN2U2ODdkNDE5OTc2YTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvWFJEZXZpY2VJbmZvLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBYUkRldmljZUluZm86OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHN1cHBv
cnRzT3JpZW50YXRpb25UcmFja2luZyA8PCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA8PCBmZWF0
dXJlcyA8PCByZWNvbW1lbmRlZFJlc29sdXRpb247Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8WFJEZXZp
Y2VJbmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0g
ICAgWFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGV2aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzT3JpZW50
YXRpb25UcmFja2luZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGV2aWNlRmVhdHVyZXMuZmVhdHVyZXMpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5yZWNvbW1lbmRlZFJlc29s
dXRpb24pKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGRldmlj
ZUZlYXR1cmVzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2ZhNTU4MmU2OTYzN2QuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVk
ZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUGxhdGZvcm1Y
UlN5c3RlbVByb3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvOwotCi1jbGFzcyBYUkRldmljZVBy
b3h5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSYpOwotICAgIFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKLQot
cHJpdmF0ZToKLSAgICBYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkmKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9u
KFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVz
b2x1dGlvbjsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRm
b3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZp
Y2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgaW5pdGlhbGl6
ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9
Ci0gICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0
Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxh
dGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1l
KFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5hbDsKLQotICAgIFhSRGV2
aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVt
UHJveHk+IG1feHJTeXN0ZW07Ci0gICAgYm9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsg
ZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsg
MCwgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJmY2I0MGJhNjUwYWI5MjQzNjdiYjQ3NzRiNzE5
Y2NiYzM4Y2ZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIlhSRGV2aWNlUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2ltcG9ydCAi
UGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCi0jaW1wb3J0ICJYUkRldmljZUluZm8uaCIKLQotdXNp
bmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1SZWY8WFJE
ZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRldmljZUlu
Zm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8pLCB4clN5c3RlbSkpOwot
fQotCi1YUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRldmljZUlu
Zm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi0gICAgOiBtX3hyU3lzdGVtKG1h
a2VXZWFrUHRyKHhyU3lzdGVtKSkKLXsKLSAgICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJbmZvLmlk
ZW50aWZpZXI7Ci0gICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9IGRldmljZUluZm8uc3Vw
cG9ydHNTdGVyZW9SZW5kZXJpbmc7Ci0gICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcg
PSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsKLSAgICBtX3JlY29tbWVu
ZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNvbHV0aW9uOwotICAgIGlm
ICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNldEVuYWJsZWRGZWF0
dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8uZmVhdHVyZXMpOwotfQot
Ci12b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQotewotICAgIGlmICh0cmFja2lu
Z0FuZFJlbmRlcmluZ0NsaWVudCgpKQotICAgICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVu
dCgpLT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2Rl
KQotewotICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1t
ZXJzaXZlVnIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3hyU3lzdGVtKQotICAgICAg
ICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBp
ZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpOwotfQotCi1WZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJE
ZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKLXsKLSAgICBWZWN0b3I8
RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Ci0gICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJp
bmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKLSAgICAgICAgdmlld3Mu
YXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKLSAgICAgICAgdmlld3MuYXBw
ZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUgfSk7Ci0gICAgcmV0dXJu
IHZpZXdzOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhS
OjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2
aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3Qg
aGVpZ2h0LCBib29sIGFscGhhKQotewotICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3Rl
bS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVs
bG9wdDsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpMYXllcj4mJikKLXsKLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAg
bV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2
aWNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThiYjJiYWRjY2VhNDMzYWZkYmE4NWVkMGI2
OGNkZWU5OWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBYUkRldmljZUlkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFhSRGV2aWNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8WFJE
ZXZpY2VJZGVudGlmaWVyVHlwZT47CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZWIwNWQ4
ZjliZmY0ZmVhMzA5M2Q2YjU4OGJhOTdlMzNjMGFhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgi
CisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8
PCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcg
PDwgZmVhdHVyZXMgPDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOworfQorCitzdGQ6Om9wdGlvbmFs
PFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0
c09yaWVudGF0aW9uVHJhY2tpbmcpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRl
cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5k
ZWRSZXNvbHV0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBkZXZpY2VGZWF0dXJlczsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDhiYjczZTk3NWI5
ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZp
Y2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKKyAgICBYUkRldmljZUlkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICBib29sIHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyB7IGZh
bHNlIH07CisgICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNlIH07CisgICAg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKKworICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFhSRGV2aWNl
SW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2
aWNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNzA4ZTlmMDQ0ZDNmZWM4ZjhiYjI0MTllNGQ4MzMw
OWQ4N2YzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRl
dmljZVByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIp
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKyNpbmNsdWRlICJYUkRldmlj
ZUluZm8uaCIKKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitSZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8p
LCB4clN5c3RlbSkpOworfQorCitYUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNl
SW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCisgICAg
OiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKK3sKKyAgICBtX2lkZW50aWZpZXIg
PSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9
IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7CisgICAgbV9zdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsK
KyAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNv
bHV0aW9uOworICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCisgICAgICAg
IHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8u
ZmVhdHVyZXMpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQorewor
ICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQorICAgICAgICB0cmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK3ZvaWQgWFJEZXZpY2VQ
cm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25N
b2RlIHNlc3Npb25Nb2RlKQoreworICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3hy
U3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCitWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNl
OjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QK
K3sKKyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7CisgICAgaWYgKG1fc3VwcG9y
dHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsK
KyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAg
ICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7CisgICAg
fSBlbHNlCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUg
fSk7CisgICAgcmV0dXJuIHZpZXdzOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFt
ZShXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQoreworICAgIHJldHVybiBtX3hyU3lz
dGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFs
cGhhKSA6IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFt
ZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKK3sKKyAgICBpZiAobV94clN5
c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9YUi9YUkRldmljZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZlNDYzOTQ2Njg2OWE1ZTNkMDc5Zjdh
Y2M3ZmE1NTgyZTY5NjM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1hSL1hSRGV2aWNlUHJveHkuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHk7CisKK3N0
cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNlUHJveHkgZmluYWwgOiBwdWJsaWMg
UGxhdGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFhSRGV2aWNlUHJv
eHk+IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVByb3h5Jik7CisgICAg
WFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOworCitwcml2YXRlOgorICAgIFhSRGV2
aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworCisgICAg
V2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpIGZpbmFsIHsgcmV0dXJuIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uOyB9CisgICAgdm9p
ZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUp
IGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxh
dGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICBWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVx
dWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhS
OjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwg
Ym9vbCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQbGF0Zm9ybVhSOjpMYXllckhhbmRs
ZSkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgc3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpIGZpbmFsOworCisgICAgWFJEZXZpY2VJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKKyAgICBXZWFrUHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4gbV94clN5c3RlbTsK
KyAgICBib29sIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFdlYkNv
cmU6OkludFNpemUgbV9yZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDkyZTE0N2I4ZjNiMDRhN2NjZTc2YWRlODFiODU2NmZhOTQ3ZmE0ZTguLjVmNjJmYWZhNzZh
NmFhNTc5NGQxN2Q0YmM2ZjdlMzMzMzNhM2NlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjg5LDYgKzI4
OSw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcCBAbm8t
dW5pZnkKIAogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAogCitTaGFyZWQvWFIv
WFJEZXZpY2VJbmZvLmNwcAorU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCisKIFVJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcApAQCAtNTA0LDYgKzUwNyw4IEBAIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVJlY29yZC5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAog
CitVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKKwogV2ViQXV0aG5Qcm9jZXNzL1dl
YkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRo
blByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtNzIzLDggKzcyOCwxMiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAogCitXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAKKwogUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitQbGF0Zm9ybVhSU3lzdGVtTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDI1OWFhOTdhNDQyODY5MGY4MmEwNmJlYjNjNTViYzM3
NWVhNjNmZTEuLmM4NzhkOWQ0OGU4ZjUxNGJmYmU2NmI2NzcyYWQ5YjVlNmExNzc5NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4NCw4ICsxODQsNiBAQCBTaGFyZWQvQ29jb2EvV0tOU1VS
TEV4dHJhcy5tbQogU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQvQ29jb2Ev
V0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2Nv
YS5tbQotU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQotU2hhcmVkL0NvY29hL1hSRGV2aWNl
UHJveHkubW0KIAogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9Y
UENTZXJ2aWNlRW50cnlQb2ludC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2Ev
WFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMzk3LDcgKzM5NSw3IEBAIFVJUHJvY2Vz
cy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lv
blV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KLVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9y
bVhSU3lzdGVtLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCiBV
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3Mv
Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3Np
bmdXYXJuaW5nQ29jb2EubW0KQEAgLTU5MSw3ICs1ODksNiBAQCBXZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKIAogV2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogCi1XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNzA4LDggKzcw
NSw2IEBAIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAK
IE1lc3NhZ2VOYW1lcy5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIuY3BwCi1Q
bGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMTYxMThmY2Y2
ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJYUkRl
dmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtWFIuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgUGxhdGZvcm1YUkNv
b3JkaW5hdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3Io
KSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVk
IGxhdGVyLgotICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBkZWZhdWx0TGF5ZXJI
YW5kbGUoKSB7IHJldHVybiAxOyB9Ci0KLSAgICB1c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPik+OwotICAgIHZpcnR1YWwg
dm9pZCBnZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJbmZvQ2FsbGJhY2smJikgPSAwOwotCi0g
ICAgLy8gU2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlvbi4KLSAgICB1c2luZyBPblNlc3Npb25F
bmRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZpY2VJZGVudGlmaWVyKT47Ci0gICAgdmly
dHVhbCB2b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJveHkmLCBPblNlc3Npb25FbmRDYWxsYmFj
ayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNlc3Npb25JZkV4aXN0cyhXZWJQYWdlUHJv
eHkmKSA9IDA7Ci0KLSAgICAvLyBTZXNzaW9uIGRpc3BsYXkgbG9vcC4KLSAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdlUHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3VibWl0
RnJhbWUoV2ViUGFnZVByb3h5JikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGQ1YTU1ZDA0
Y2JkNmYwYjk5MDM1ZjEwZmNiYjVkYzQyYjdiOTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRm
b3JtWFJDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUlN5c3RlbUFk
ZGl0aW9ucy5tbT4KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRm
b3JtWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0NGFkMTZlOTk0Yjk3NjNl
ZTVkNmVjZWVlMDg1ODNkYTE3YWZmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQot
c3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKLSAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybVhSU3lzdGVtKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7Ci0KLSAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCi0gICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7Ci0gICAgdm9pZCBpbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdEZy
YW1lKCk7Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTNhYWQ5MGMzMTc2YjhiYTFmODZmYzBmMzk1
ZDJkMDAwNDY2MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdl
cy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJT
eXN0ZW0gTm90UmVmQ291bnRlZCB7Ci0gICAgRW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkg
LT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0luZm9zKSBBc3luYwotICAg
IEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgU2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZygpCi0gICAgUmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5jCi0gICAgU3VibWl0RnJhbWUoKQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRm
b3JtWFJTeXN0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhS
U3lzdGVtLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2YzZDdmNDk4YzZiYzMx
ZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbS5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQg
IlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVBy
b3h5TWVzc2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVtOjpQ
bGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQot
ewotICAgIG1fcGFnZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwg
KnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCi17Ci0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsK
LX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAoeHJD
b29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0
cyhtX3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2
ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0
Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmlj
ZUluZm8+IGRldmljZUluZm8pIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRl
dmljZUluZm8gPSBXVEZNb3ZlKGRldmljZUluZm8pXSgpIG11dGFibGUgewotICAgICAgICAgICAg
aWYgKCFkZXZpY2VJbmZvKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgZGV2aWNlSW5mby52YWx1ZSgpIH0pOwotICAgICAgICB9KTsK
LSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lz
dGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlm
aWVyKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmlj
ZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OlNlc3Npb25EaWRFbmQoZGV2aWNlSWRlbnRpZmllcikpOwotICAgICAgICB9KTsK
LSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJT
eXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lv
bklmRXhpc3RzKG1fcGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZy
YW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3Ig
PSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0
b3ItPnNjaGVkdWxlQW5pbWF0aW9uRnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQotewotICAg
IGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRv
cigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOwotfQotCi19
Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9u
cy9QbGF0Zm9ybVhSU3lzdGVtQWRkaXRpb25zLm1tPgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1QbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0
b3IoKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDA3ZDhjMjY0MGUxMTY3ZDQwZmE2NDdkMGUzN2M1ODMxZjlkMzU5OGYuLmZhYTI2ZjgxYmYz
OGU4YzE3MTkxMzlmM2JlM2U0NjQ4N2IzMDRkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQ
TEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIEFT
U0VSVCghbV94clN5c3RlbSk7CiAgICAgbV94clN5c3RlbSA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Y
UlN5c3RlbT4oKnRoaXMpOwogI2VuZGlmCkBAIC03ODAwLDcgKzc4MDAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAK
ICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogCi0j
aWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYm
ICFVU0UoT1BFTlhSKQogICAgIGlmIChtX3hyU3lzdGVtKSB7CiAgICAgICAgIG1feHJTeXN0ZW0t
PmludmFsaWRhdGUoKTsKICAgICAgICAgbV94clN5c3RlbSA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY3NThhZjgyOWYxZTg4NTIwNWUxZWI0YzQx
OGJkMjJhNmYzNDllM2EuLmQxMGFkOTZkNGExYjEwNTY0MGFmOWVhZjExN2FiY2E1ZDFhODg5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODUsNyArMTg1LDcg
QEAgaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICNpbmNsdWRlICJQbGF0
Zm9ybVhSU3lzdGVtLmgiCiAjZW5kaWYKIApAQCAtMzA0MCw3ICszMDQwLDcgQEAgcHJpdmF0ZToK
IAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JN
KENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2EzY2MwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9y
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
WFJEZXZpY2VJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgLy8gRklYTUU6
IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KKyAgICBzdGF0aWMgUGxhdGZvcm1Y
Ujo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQorCisgICAg
dXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhS
RGV2aWNlSW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2
aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWlu
YXRpb24uCisgICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhS
RGV2aWNlSWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFn
ZVByb3h5JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bmRTZXNzaW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBk
aXNwbGF5IGxvb3AuCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2Vi
UGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBhZ2VQcm94eSYpIHsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjZTJjYmE2Njc5ZTUzNmRmNzc0YjQyMGEwM2EyMDFlMWIxY2NiMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcApA
QCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5c3RlbShX
ZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBtX3BhZ2UucHJv
Y2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0aGlzKTsKK30KKworUGxh
dGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQoreworICAgIG1fcGFnZS5wcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhyQ29vcmRpbmF0b3IoKSkKKyAg
ICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKK30KKwor
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJD
b29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHJDb29yZGlu
YXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZpY2VJbmZv
KSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZpY2VJbmZvID0gV1RGTW92
ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghZGV2aWNlSW5mbykg
eworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IGRldmljZUluZm8udmFsdWUoKSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sK
KyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRv
cigpOworICAgIGlmICgheHJDb29yZGluYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHJD
b29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikgeworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJZGVudGlmaWVyXSgpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpTZXNzaW9u
RGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7Cisg
ICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5h
dG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2Up
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5zY2hlZHVsZUFuaW1h
dGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKK3sKKyAgICBpZiAoYXV0byogeHJDb29y
ZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJD
b29yZGluYXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKK30KKworfQorCisjaWYgIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUkNvb3JkaW5h
dG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Rh
ZTQ1M2Q3MmNjNzI2NDExNWU4ODhkYWMxMzYwYjU0ZGM2ZGM0NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApAQCAtMCwwICsx
LDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworc3RydWN0IFhSRGV2aWNlSW5mbzsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0
dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7
CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzCisgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7CisgICAgdm9pZCBp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKKyAgICB2b2lkIHN1
Ym1pdEZyYW1lKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWY0YzhiYjYyNjQ2OTM0YjA2NjJlZjEzYmUxNjFlZDUyZjUyYmJlZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0u
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWYgRU5BQkxFKFdF
QlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJlZkNvdW50ZWQgeworICAg
IEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8V2ViS2l0OjpYUkRldmlj
ZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMKKyAgICBJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQorICAgIFNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFJlcXVlc3RG
cmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRh
KSBBc3luYworICAgIFN1Ym1pdEZyYW1lKCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NWU4ZWE3N2RhZWNlMDI4
YTBiMDliZjJjNzY4OGY0NjgzMWE3MDc4Li5lMGNiOTk2Njc1ZTI5ZjliN2ZjM2VkYzVmOTAzMjcz
NWU0ZTE4MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMg
PSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9i
amVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC0x
MTEzLDEyICsxMTEzLDYgQEAKIAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8qIEF1eGlsaWFy
eVByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGQUVDMzcxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNz
YWdlcy5oICovOyB9OwogCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUZBRUMzNjFCMDY1NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFDRSAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovOyB9
OwotCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUwODBBRjI2MUJERTZDMDA2
NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi87IH07Ci0JCTUyNjNFMjU3MjYxRTczREYwMDE4RDQ3
RCAvKiBYUkRldmljZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICov
OyB9OwotCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI0
RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi87IH07Ci0JCTUy
NjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovOyB9OwotCQk1MjYzRTI1RjI2MUU5NkVGMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UlN5c3RlbVByb3h5LmggKi87IH07CiAJCTUyNzJENEM5MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1By
b3RlY3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyOEMz
N0MxMTk1Q0JCMUEwMEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYyODEwMTk1OEY0Nzgw
MDhDQUM3MiAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkQ1QTFCMDFDNTc0OTVBMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi87IH07CkBAIC0yNTYwLDYgKzI1NTQsMTkgQEAKIAkJ
MEZGRUQ5OEYyM0EzMjAzNzAwRUVGNDU5IC8qIFdLV2ViVmlld01hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld01hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRUQ5OTAyM0EzMjAzODAwRUVGNDU5IC8qIFdLV2ViVmlld01h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZpZXdNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3QjFGRUE1NTg1RTExQ0EyQ0JCIC8qIENv
Y29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
IjxhYnNvbHV0ZT4iOyB9OworCQkxMTg1MDI1NjI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1Y
UlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1NzI2NzNCMDE2MDBBNjQyNUUgLyog
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNTgy
NjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29y
ZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUMyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRm
b3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZv
cm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RTI2NzNCMEE3MDBBNjQyNUUg
LyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxMTg1MDI2MTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTExODUwMjYyMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxMTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
MDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNz
aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDQyMTk2QjMzNzAwMEI5
QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDE4NywxOCArNDE5NCw2IEBACiAJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0
QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNF
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNl
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUlk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUYyNjFCREU2
QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0Uy
NEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAvKiBYUkRldmljZVBy
b3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFJEZXZpY2VQ
cm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTUyNjFFNzNERjAw
MThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1
QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0QzcxRTczNUYwOTAw
RUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBwYXRoID0gbWFjL1dLUHJvdGVjdGlvblNw
YWNlTlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0QzgxRTczNUYwOTAw
RUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBwYXRoID0gbWFjL1dLUHJv
dGVjdGlvblNwYWNlTlMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUFB
MUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDE0LDYgKzY0MDksMzkgQEAKIAkJCW5h
bWUgPSAiT3RoZXIgRnJhbWV3b3JrcyI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICovLAorCQkJCTExODUwMjU2MjY3M0IwMTYwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKKwkJCQkxMTg1MDI1NzI2NzNCMDE2MDBB
NjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJ
CXBhdGggPSBYUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUwMjU5
MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29y
ZGluYXRvci5oICovLAorCQkJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhS
U3lzdGVtLmNwcCAqLywKKwkJCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1Y
UlN5c3RlbS5oICovLAorCQkJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhS
U3lzdGVtLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNjMy
NjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovLAorCQkJCTExODUwMjY0
MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICovLAorCQkJCTExODUwMjY1MjY3
M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLywKKwkJCQkxMTg1MDI2MjI2NzNCMERB
MDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5jcHAgKi8sCisJCQkJMTE4NTAyNjEyNjczQjBEQTAw
QTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQTBFQzZCMDEyNEJCRDM2MDA3RUY0QTUg
LyogUGx1Z2luUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC02NjgwLDYgKzY3MDgsNyBAQAogCQkJCTFBQUUwNThDMTI3OURDRDQwMDg1MjQxOCAv
KiBQbHVnaW5zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVMYXll
clRyZWUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICov
LAorCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKIAkJCQlFM0JDRTg3NzI2
NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNwcCAqLywKIAkJCQlF
M0JDRTg3ODI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmggKi8s
CiAJCQkJQTdENzkyRDUxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCAq
LywKQEAgLTcwMzYsMTAgKzcwNjUsNyBAQAogCQkJCTFBQkMzREYzMTg5OUU0MzcwMDRGMDYyNiAv
KiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2RDMxRjU5RUEzNTAwMDdDNkNCIC8q
IFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKIAkJCQk1QzZDRTZEMDFGNTlCQzQ2MDAwN0M2Q0Ig
LyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLywKLQkJCQk1MjYzRTI0RDI2MUU2RkI5MDAxOEQ0
N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCi0JCQkJNTI2M0UyNEYyNjFFNzJFQjAw
MThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKLQkJCQk1MjYzRTI1MDI2MUU3MkVDMDAx
OEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1MjYzRTI0RTI2
MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLywKKwkJCQkxMTg1MDI1RTI2
NzNCMEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovLAogCQkJCUNEQTI5
QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLywK
IAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCkBAIC04MzE0LDExICs4MzQwLDYgQEAKIAkJ
CQlDMTREMzA2NTI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi8sCiAJCQkJQzE0
RDMwNjgyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggKi8sCiAJCQkJQzE0
RDMwNjYyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovLAotCQkJCTUy
NTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywKLQkJCQk1
MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCi0JCQkJNTI1MDgw
QUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLywKLQkJCQk1MjYzRTI1NTI2
MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovLAotCQkJCTUyNjNFMjU0MjYxRTcz
REUwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2Nv
YTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTkzMTUsOSArOTMzNiw2IEBACiAJCQkJQzFBMTUyRDYy
NEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gKi8sCiAJCQkJ
QzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2Vy
LmggKi8sCiAJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLm1tICovLAotCQkJCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKLQkJCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0QgLyog
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTUyNjNFMjVDMjYxRTk2
REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8sCiAJCQkJNDQ2REM2NEIy
NEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8s
CiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
aCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk3ODMsNiArOTgwMSw3IEBACiAJCQkJQkMwMzJENUQx
MEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0ICovLAogCQkJCUJDMDMyRDVFMTBGNDM3
MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovLAogCQkJCTFBQUM0RERFMTZCMUNCRjYwMDk0MjVFMyAv
KiBXZWJTdG9yYWdlICovLAorCQkJCTExODUwMjU1MjY3M0IwMTYwMEE2NDI1RSAvKiBYUiAqLywK
IAkJCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
LmNwcCAqLywKIAkJCQlCQ0U5QzBEMDE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzLmggKi8sCiAJCQkJQkMxMTFBRTMxMTJGNUMyNjAwMzM3QkFCIC8qIFdlYlByb2Nl
c3MuY3BwICovLApAQCAtOTk0OCw2ICs5OTY3LDcgQEAKIAkJCQkxQUFGMDg5RTE5MjY4MUFDMDBC
NjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCiAJCQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4IC8q
IFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNTNDMkEzMUEzMjU2OTEwMDRFOEM3MCAvKiBX
ZWJzaXRlRGF0YSAqLywKKwkJCQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8sCiAJ
CQkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAg
Ki8sCiAJCQkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVByb2Nlc3NQcm94
eS5oICovLAogCQkJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLApAQCAtMTIxNTEsOSArMTIxNzEsNiBAQAogCQkJ
CTJEODcxMDE3MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEODk0OUYxMTgyMDQ0RjYwMEU4OThBQSAvKiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzQzQUJC
MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0Zm9y
bVhSU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1RjI2MUU5NkVGMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDZEQzY0QzI0
QTJEOEU1MDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQTI5QTFCMUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUEyOTFDQkVCNjdBMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTEz
MDQ3LDkgKzEzMDY0LDYgQEAKIAkJCQlDMTVFNkNCMzI0QjdCRTZGMDBFNTAxQTIgLyogWFBDRW5k
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNUU2Q0I0MjRCN0JFNzYwMEU1MDFBMiAvKiBY
UENFbmRwb2ludENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRUNERTgxNkI2NDE2ODAw
MDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjUw
ODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDdkNjJlNWU5YTM5ZDE1
Y2FhMzc1YTExYzk5Njc0NTY3NjRkZjg5OTcuLjQ3NTRkM2E0NTNmYjQ3ZjJhYjU0ZjBlOGJjMTg1
ODM4ZGVjZWJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNDk2LDcgKzE0OTYsNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShGbG9h
dFJlY3QmJiB0YXJnZXRGcmFtZSwgVmVjdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRS
T0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdF
QlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhS
KQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLnhyU3lzdGVtUHJveHkoKS5l
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IDYyODYyMDI4NDI0ZmJiYmVkMTMyODE2MzU3NGI3MDVkM2Jj
MTgzNjYuLmY4OGM5YzhmM2JkMzgxZWEyZjJlNjNlOGY4NTBhNGJkOTY3MDdjYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudShXZWJDb3JlOjpGbG9hdFJlY3QmJiwgVmVjdG9yPFdlYkNv
cmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbTo6SUQpPiYmKSBmaW5hbDsK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJ
Q09OVEVYVE1FTlUpCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lm
IEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhSOjpJbnN0
YW5jZTo6RGV2aWNlTGlzdCYpPiYmKSBmaW5hbDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXgg
NDQ5MDc1NWZmZjc2OGQ0MTBiNTM1N2ZjNjEwMjIyNmVmN2ViNTZlZS4uZTE0MTUwYjViOGRhNmMx
NTcwOWIzMGNhYzJhOWRlNDY3ZGUyYmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNDQzLDE1ICs0NDMs
NiBAQCB2b2lkIFdlYlBhZ2U6OmdldFBERkZpcnN0UGFnZVNpemUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKEZsb2F0
U2l6ZShwbHVnaW4tPnBkZkRvY3VtZW50U2l6ZUZvclByaW50aW5nKCkpKTsKIH0KIAotI2lmIEVO
QUJMRShXRUJYUikKLVBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94
eSgpCi17Ci0gICAgaWYgKCFtX3hyU3lzdGVtUHJveHkpCi0gICAgICAgIG1feHJTeXN0ZW1Qcm94
eSA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkoKnRoaXMpKTsKLSAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKLX0KLSNl
bmRpZgotCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogCiB2b2lkIFdlYlBhZ2U6OmhhbmRs
ZUNsaWNrRm9yRGF0YURldGVjdGlvblJlc3VsdChjb25zdCBEYXRhRGV0ZWN0b3JFbGVtZW50SW5m
byYgaW5mbywgY29uc3QgSW50UG9pbnQmIGNsaWNrTG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDJkNGExNDFmZTA1ZTVjMGI5NzMw
MmZkMmU1YjJjMTM5OGVmZjY2NjEuLjg4NzliZDY3MjNjZWQxOTQ0YTcxYTgwYTA5NmE5ZGJiNzFl
ZTE3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03MzM3LDYgKzczMzcsMTUgQEAgdm9pZCBXZWJQYWdlOjp0ZXh0QXV0b3NpemluZ1VzZXNJ
ZGVtcG90ZW50TW9kZUNoYW5nZWQoKQogfQogI2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCiAKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQorUGxhdGZvcm1YUlN5c3Rl
bVByb3h5JiBXZWJQYWdlOjp4clN5c3RlbVByb3h5KCkKK3sKKyAgICBpZiAoIW1feHJTeXN0ZW1Q
cm94eSkKKyAgICAgICAgbV94clN5c3RlbVByb3h5ID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eT4obmV3IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgqdGhpcykpOworICAgIHJl
dHVybiAqbV94clN5c3RlbVByb3h5OworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6c2V0T3Zl
cnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKIHsKICAgICBpZiAobWVk
aWFUeXBlID09IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNjc2ZTcwMTU2MGZmZTAzOGMyY2EzN2Q0NzMxYTQ4
YTA4NjBiM2M2Li5mODI3M2JhMTAwNjEyZTcwYWRkZWJhY2RlNzg5MDgzYzNjZmNlNDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDQsNyArMTQ0
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJY
UikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikK
ICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKICNlbmRpZgogCkBAIC0xNDU2LDcg
KzE0NTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0QXV0b3NpemluZ1VzZXNJZGVtcG90ZW50
TW9kZUNoYW5nZWQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShD
T0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSYgeHJTeXN0ZW1Qcm94eSgpOwogI2VuZGlmCiAKQEAgLTIzNDksNyArMjM0OSw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWFrUHRyPFdlYkNvcmU6OkhUTUxF
bGVtZW50PiwgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkVs
ZW1lbnQ+JiYpPj4+PiBtX2VsZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25pdGlvbjsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIp
ICYmICFVU0UoT1BFTlhSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk+IG1feHJTeXN0ZW1Qcm94eTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5
Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUwNThjMmNlNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5j
bHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3Rl
bU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVt
UHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdl
KHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOworICAgICAgICBm
b3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIpKQor
ICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0ZShX
VEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOworICAgICAgICB9CisgICAgICAgIG1fZGV2aWNl
cy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMpOwor
ICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1
ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKK3sKKyAgICBy
ZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKK30KKwor
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKK3sKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmll
ciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRl
bnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5k
KCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRl
dmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBm
b3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgeworICAgICAgICBhdXRvKiBkZXZpY2VQcm94
eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOworICAgICAgICBp
ZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2ZWQ0MDkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBh
Z2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKTsKKworICAgIHZvaWQg
ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7CisgICAgdm9pZCBpbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJl
cXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
OworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8WFJEZXZp
Y2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllcik7CisKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllcik7CisKKyAgICBQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2RldmljZXM7CisgICAgV2ViUGFnZSYg
bV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFjMWY3ZjYyNGI0OTZkYTU3YTEwZjk2NGVmNGRk
OTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJ
ZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0
NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5
KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKTsKLQotICAg
IHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7Ci0gICAgdm9pZCBp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZp
Y2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Y
Ujo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3Qs
IGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8
WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllcik7Ci0K
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllcik7Ci0K
LSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2RldmljZXM7Ci0gICAgV2Vi
UGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5
NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNkNjMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0x
LDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShX
RUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5IE5vdFJlZkNvdW50ZWQg
ewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRl
bnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3OGU1MWMzZDMwZmZlYTczM2ZkMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW1wb3J0
ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNz
YWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKLSNpbXBv
cnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3MuaCIKLSNpbXBvcnQgIlhSRGV2aWNl
SW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2UgUGxhdGZv
cm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6UGxh
dGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRl
bnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6flBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0
ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2VzSW5mb3MpIG11dGFibGUgewotICAg
ICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFBsYXRm
b3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7Ci0gICAgICAgIGZvciAoYXV0byYg
ZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewotICAgICAgICAgICAgaWYgKGF1dG8gZGV2aWNl
ID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRlbnRpZmllcikpCi0gICAgICAgICAg
ICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoZGV2
aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9kZXZpY2VzLnN3YXAoZGV2
aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fZGV2aWNlcyk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpJ
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0g
ICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6
UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQotc3RkOjpvcHRpb25hbDxQ
bGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXll
clByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQotewotICAgIHJldHVybiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhhbmRsZSgpOwotfQotCi12b2lkIFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRGcmFtZSgpKTsKLX0KLQotdm9pZCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRl
dmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZpY2UtPnNlc3Npb25EaWRFbmQoKTsKLX0KLQot
UmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVu
dGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGZvciAoYXV0byYg
ZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRldmljZVByb3h5ID0gc3RhdGlj
X2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7Ci0gICAgICAgIGlmIChkZXZpY2VQ
cm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gZGV2
aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432026</attachid>
            <date>2021-06-23 02:01:15 -0700</date>
            <delta_ts>2021-06-25 08:03:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210623110113.patch</filename>
            <type>text/plain</type>
            <size>107510</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI4MWI0OTk5OTg1ZDJmMDI5
ODJkNTc1MGUxYjBhMmQyYzBhNTg3MWEuLmE3N2RkNzY3OWU4ZTAyNDI2ZWQ0ZDBiM2YyODcwYzg4
MGZkYWVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNi0yMiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1lc3NhZ2UgZHJvcHBlZCB3aGVuIHJlc3RvcmluZyB3ZWJwYWdlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IGY2MzEyODM4NTliODc3YmQ5Njg4NjcxMjg5MDgwY2EyOTUxNzEzN2Eu
LjY5OTk5NmY4MzZhZDdkYWFmMjFiMDUzNWRmMjUxN2E2MzMwY2ZiYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dApAQCAtNDYsNiArNDYsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEiCiAgICAgIiR7V0VC
S0lUX0RJUn0vU2hhcmVkL1JlbW90ZUxheWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFy
ZWQvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1hSIgogICAgICIke1dF
QktJVF9ESVJ9L1VJUHJvY2VzcyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJIgog
ICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKQEAgLTY4LDYgKzY5LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YSIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvWFIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
V2ViQXV0aG5Qcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7
V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9BcHBsZVBheSIKQEAgLTEwOCw2ICsxMTAsNyBAQCBzZXQo
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNz
L1dlYlBhZ2UiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UiCisgICAg
IiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9YUiIKICAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9T
b3VyY2UiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vV2ViS2l0TGlicmFyaWVzIgogKQpAQCAt
MjE2LDYgKzIxOSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCisgICAgVUlQ
cm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0KKwogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcwog
CiAgICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkKQEAg
LTI4NSw2ICsyOTAsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UKIAogICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcAorCisgICAgV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICkKIAog
c2V0KFdlYktpdF9GUkFNRVdPUktTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggMDYyMWUwMzQxNTQ1ZGZjYTY5ZTQzOGQzMjZiNzk3ZmI4MDgw
YWYwNS4uMDM1ODY4OGQzMWZkZmVlZjkyYjE4OTQyMmM2MmNhODJiZTEzNjhjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAwLDcgKzEw
MCw2IEBAICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0xMzAsNiArMTI5LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjAwLDggKzIwMCw4IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGE4M2JiMmM1YmQxMWZkMDFlNTM5M2ExZGYz
NWMyNDlkZTc2ZGU4MS4uYjk5MzYzMDc3MzJmNGJlYzQ3YjNjNjA5YjIwOWFhZDcyMTE2Mzg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTYyLDcgKzE2Miw2IEBAIE1FU1NBR0Vf
UkVDRUlWRVJTID0gXAogCVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ciBcCiAJVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkgXAotCVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
IFwKIAlVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCkBAIC0xNzYsNiArMTc1LDcgQEAgTUVT
U0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQcm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJveHkgXAogCVVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKIAlVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIgXAorCVVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlXZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5IFwKQEAgLTIyMCw3ICsyMjAsNiBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlBy
b2Nlc3MvV2ViUHJvY2VzcyBcCi0JV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkgXAogCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAJV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCkBAIC0yMzksNiArMjM4LDcgQEAgTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eSBcCiAJV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwK
IAlXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24g
XAorCVdlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uIFwKIAlQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDY1MDQ4N2EzMTBhYmNiNzU3NzY2NWI5ZmE3NzFmMTA2YzRiMzMzZmEuLmUxMjEz
MTJhZDFlZjNjMDNkMGQxMTA3ZTNlNDdhZDA4Yzg5MmFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMjE3LDcgKzIxNyw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9G
SUxFUwogCiAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlcgogCi0gICAgVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0KICAgICBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkKICAgICBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5CkBAIC0yNTUsNyArMjU0LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJ
TEVTCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yCiAKLSAgICBXZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eQogICAgIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogICAgIFdl
YlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIKICAgICBXZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVlOTlkMTY0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlSWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVk
ZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0g
WFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFhSRGV2aWNlSWRlbnRpZmllclR5cGU+OwotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UkRldmljZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYx
Nzc1NTAyNGM5OWI3YjdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2Rl
cjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgWFJE
ZXZpY2VJbmZvIHsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29s
IHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBzdXBwb3J0
c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNlIH07Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0
dXJlTGlzdCBmZWF0dXJlczsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1
dGlvbiB7IDAsIDAgfTsKLQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2Rl
ciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8u
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MGI4ZGRjYjMxMmUyNDIyMGM1NGE4MzBlN2U2ODdkNDE5
OTc2YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
WFJEZXZpY2VJbmZvLmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBYUkRldmljZUlu
Zm86OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8
PCBpZGVudGlmaWVyIDw8IHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA8PCBzdXBwb3J0c1N0
ZXJlb1JlbmRlcmluZyA8PCBmZWF0dXJlcyA8PCByZWNvbW1lbmRlZFJlc29sdXRpb247Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCi17Ci0gICAgWFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZl
YXR1cmVzLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZykpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBv
cnRzU3RlcmVvUmVuZGVyaW5nKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuZmVhdHVyZXMpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0
dXJlcy5yZWNvbW1lbmRlZFJlc29sdXRpb24pKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgcmV0dXJuIGRldmljZUZlYXR1cmVzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZv
OwotCi1jbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmlj
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZp
Y2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOwotICAgIFhSRGV2aWNlSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lk
IHNlc3Npb25EaWRFbmQoKTsKLQotcHJpdmF0ZToKLSAgICBYUkRldmljZVByb3h5KFhSRGV2aWNl
SW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUg
cmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IHJl
dHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKLSAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5j
ZVNwYWNlVHlwZSkgZmluYWwgeyB9Ci0gICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwotICAg
IHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsK
LSAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYm
KSBmaW5hbDsKLQotICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2Vh
a1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07Ci0gICAgYm9vbCBtX3N1cHBv
cnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmVj
b21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VQcm94eS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJmY2I0MGJh
NjUwYWI5MjQzNjdiYjQ3NzRiNzE5Y2NiYzM4Y2ZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZVByb3h5Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlUHJveHkuaCIKLQotI2lmIEVOQUJM
RShXRUJYUikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCi0jaW1wb3J0ICJY
UkRldmljZUluZm8uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1SZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhS
RGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0p
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmlj
ZUluZm8pLCB4clN5c3RlbSkpOwotfQotCi1YUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhS
RGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0p
Ci0gICAgOiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKLXsKLSAgICBtX2lkZW50
aWZpZXIgPSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7Ci0gICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRl
cmluZyA9IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7Ci0gICAgbV9zdXBwb3J0
c09yaWVudGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFj
a2luZzsKLSAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5k
ZWRSZXNvbHV0aW9uOwotICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmlj
ZUluZm8uZmVhdHVyZXMpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQo
KQotewotICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQotICAgICAgICB0cmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNl
c3Npb25Nb2RlIHNlc3Npb25Nb2RlKQotewotICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9y
bVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX3hyU3lzdGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKLXsKLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+
c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOwotfQotCi1WZWN0b3I8UGxhdGZvcm1YUjo6
RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkg
Y29uc3QKLXsKLSAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7Ci0gICAgaWYgKG1f
c3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZl
VnIpIHsKLSAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9
KTsKLSAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6
Ok5vbmUgfSk7Ci0gICAgcmV0dXJuIHZpZXdzOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnJlcXVl
c3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1Y
Ujo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50
MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQotewotICAgIHJldHVybiBt
X3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWln
aHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzdWJt
aXRGcmFtZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKLXsKLSAgICBpZiAo
bV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThiYjJi
YWRjY2VhNDMzYWZkYmE4NWVkMGI2OGNkZWU5OWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBYUkRldmljZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFhSRGV2aWNlSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8WFJEZXZpY2VJZGVudGlmaWVyVHlwZT47CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hS
RGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQwZWIwNWQ4ZjliZmY0ZmVhMzA5M2Q2YjU4OGJhOTdlMzNjMGFhMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3Bw
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiWFJEZXZpY2VJbmZvLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFJE
ZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3Vw
cG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMgPDwgcmVjb21tZW5kZWRSZXNvbHV0aW9u
OworfQorCitzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJl
czsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
ZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJl
cy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2
aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBkZXZpY2VGZWF0dXJlczsKK30KKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJE
ZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhS
KQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVu
Y29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvIHsK
KyAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBib29sIHN1cHBvcnRzT3Jp
ZW50YXRpb25UcmFja2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRl
cmluZyB7IGZhbHNlIH07CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0
dXJlczsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNzA4ZTlmMDQ0
ZDNmZWM4ZjhiYjI0MTllNGQ4MzMwOWQ4N2YzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHku
aCIKKyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3Jt
WFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQ
cm94eTo6Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSYgeHJTeXN0ZW0pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94
eShXVEZNb3ZlKGRldmljZUluZm8pLCB4clN5c3RlbSkpOworfQorCitYUkRldmljZVByb3h5OjpY
UkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSYgeHJTeXN0ZW0pCisgICAgOiBtX3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkK
K3sKKyAgICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJbmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBw
b3J0c1N0ZXJlb1JlbmRlcmluZyA9IGRldmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7
CisgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
T3JpZW50YXRpb25UcmFja2luZzsKKyAgICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmlj
ZUluZm8ucmVjb21tZW5kZWRSZXNvbHV0aW9uOworICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJl
cy5pc0VtcHR5KCkpCisgICAgICAgIHNldEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1t
ZXJzaXZlVnIsIGRldmljZUluZm8uZmVhdHVyZXMpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OnNlc3Npb25EaWRFbmQoKQoreworICAgIGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgp
KQorICAgICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2RlKQoreworICAgIGlmIChzZXNzaW9u
TW9kZSAhPSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAg
ICAgbV94clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCitWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vz
c2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmll
d3M7CisgICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9u
TW9kZTo6SW1tZXJzaXZlVnIpIHsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRy
dWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUs
IEV5ZTo6UmlnaHQgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3Rp
dmUgPSB0cnVlLCBFeWU6Ok5vbmUgfSk7CisgICAgcmV0dXJuIHZpZXdzOworfQorCit2b2lkIFhS
RGV2aWNlUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFt
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1f
eHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVy
UHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQor
eworICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0
aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBYUkRl
dmljZVByb3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4m
JikKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJh
bWUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZl
NDYzOTQ2Njg2OWE1ZTNkMDc5ZjdhY2M3ZmE1NTgyZTY5NjM3ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9y
bVhSU3lzdGVtUHJveHk7CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNl
UHJveHkgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFhSRGV2aWNlUHJveHk+IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Jik7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOwor
Citwcml2YXRlOgorICAgIFhSRGV2aWNlUHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRp
b24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgcmV0dXJuIG1fcmVjb21tZW5kZWRS
ZXNvbHV0aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3Rp
ZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7
IH0KKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBs
YXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9u
KHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQ
bGF0Zm9ybVhSOjpMYXllckhhbmRsZSkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgc3VibWl0RnJh
bWUoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpIGZpbmFsOworCisgICAgWFJE
ZXZpY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWFrUHRyPFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eT4gbV94clN5c3RlbTsKKyAgICBib29sIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcg
eyBmYWxzZSB9OworICAgIFdlYkNvcmU6OkludFNpemUgbV9yZWNvbW1lbmRlZFJlc29sdXRpb24g
eyAwLCAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDkyZTE0N2I4ZjNiMDRhN2NjZTc2YWRlODFiODU2NmZh
OTQ3ZmE0ZTguLjVmNjJmYWZhNzZhNmFhNTc5NGQxN2Q0YmM2ZjdlMzMzMzNhM2NlZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMjg5LDYgKzI4OSw5IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdp
bkluZm9ybWF0aW9uLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmNwcAogCitTaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcAorU2hhcmVkL1hSL1hSRGV2aWNl
UHJveHkuY3BwCisKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nl
c3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtNTA0LDYgKzUwNyw4IEBAIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAogCitVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAK
KwogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIFdl
YkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0
aG5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzIzLDggKzcyOCwxMiBAQCBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCitXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5jcHAKKwogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VSZWNlaXZl
ci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitQ
bGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVhOTUxNGNkZjc5
NGNiZGU3OWU4YzRjZjE5Nzk4YzNmMTgxYmQzYTguLjM0ODU5YTBmZjU5Yjc2NWZkNGY3MmU3OTY0
ZDVhNDhjM2Q3N2MwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4NCw4ICsxODQsNiBA
QCBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQogU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1
ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQotU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQot
U2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KIAogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQogU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtNDAx
LDcgKzM5OSw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNz
L0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KLVVJ
UHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTU5NSw3ICs1OTMsNiBA
QCBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKIAogV2ViUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogCi1XZWJQ
cm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291
cmNlLmNwcApAQCAtNzEyLDggKzcwOSw2IEBAIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVj
c01lc3NhZ2VSZWNlaXZlci5jcHAKIE1lc3NhZ2VOYW1lcy5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlv
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
WFIpCi0KLSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmlj
ZUluZm8uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLSNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsK
LQotY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogVGVtcG9y
YXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgotICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpMYXll
ckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJldHVybiAxOyB9Ci0KLSAgICB1c2luZyBE
ZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJ
bmZvPik+OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJbmZv
Q2FsbGJhY2smJikgPSAwOwotCi0gICAgLy8gU2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlvbi4K
LSAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZpY2VJ
ZGVudGlmaWVyKT47Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJveHkm
LCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNlc3Np
b25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7Ci0KLSAgICAvLyBTZXNzaW9uIGRpc3BsYXkg
bG9vcC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdlUHJv
eHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFnZVByb3h5JikgeyB9Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZGQ1YTU1ZDA0Y2JkNmYwYjk5MDM1ZjEwZmNiYjVkYzQyYjdiOTk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLm1tCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdF
QlhSKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvUGxhdGZvcm1YUlN5c3RlbUFkZGl0aW9ucy5tbT4KKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjA0NGFkMTZlOTk0Yjk3NjNlZTVkNmVjZWVlMDg1ODNkYTE3YWZmYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKLWNs
YXNzIFdlYlBhZ2VQcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgUGxhdGZv
cm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJv
eHkmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7Ci0KLSAgICB2b2lkIGludmFs
aWRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4
ckNvb3JkaW5hdG9yKCk7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4m
Jik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYm
KTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTNhYWQ5
MGMzMTc2YjhiYTFmODZmYzBmMzk1ZDJkMDAwNDY2MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
dGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1l
c3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7Ci0gICAgRW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2
aWNlc0luZm9zKSBBc3luYwotICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCi0g
ICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgUmVxdWVzdEZyYW1lKCkgLT4g
KHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5jCi0g
ICAgU3VibWl0RnJhbWUoKQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiN2YzZDdmNDk4YzZiYzMxZWU1MDc3MzhkMjEyNTk0ZTdmOWM2ZmMzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1Y
UlN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9y
dCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1QbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkK
LSAgICA6IG1fcGFnZShwYWdlKQotewotICAgIG1fcGFnZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtOjp+UGxh
dGZvcm1YUlN5c3RlbSgpCi17Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLndlYlBhZ2VJRCgpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlk
YXRlKCkKLXsKLSAgICBpZiAoeHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9y
KCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0
ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8q
IHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAg
aWYgKCF4ckNvb3JkaW5hdG9yKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2
aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
c3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11dGFibGUgewotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBXVEZNb3ZlKGRldmljZUluZm8pXSgpIG11
dGFibGUgewotICAgICAgICAgICAgaWYgKCFkZXZpY2VJbmZvKSB7Ci0gICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgZGV2aWNlSW5mby52YWx1
ZSgpIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVt
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIGF1dG8qIHhyQ29vcmRp
bmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNv
b3JkaW5hdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5zdGFydFNl
c3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFhSRGV2aWNlSWRl
bnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRFbmQoZGV2aWNlSWRlbnRp
ZmllcikpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVt
OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBpZiAoYXV0byogeHJDb29y
ZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJD
b29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZv
cm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYg
KGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkp
Ci0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxlQW5pbWF0aW9uRnJhbWUobV9wYWdlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6
c3VibWl0RnJhbWUoKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1Y
UlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRG
cmFtZShtX3BhZ2UpOwotfQotCi19Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhSU3lzdGVtQWRkaXRpb25zLm1tPgotI2Vs
c2UKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIFBsYXRmb3Jt
WFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi19
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGE3MTg4NWJhNDZiNmQ4YzM3MGNmMjNkNDJiODFlNmVl
OGZjZmVkNjkuLmIwMGNlM2RjMzM4YWYwY2M2OWU2NzJiZjFjYTRhY2NjOTgzMzUyMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAzMyw3ICsxMDMzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIG1f
d2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYm
ICFVU0UoT1BFTlhSKQogICAgIEFTU0VSVCghbV94clN5c3RlbSk7CiAgICAgbV94clN5c3RlbSA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1YUlN5c3RlbT4oKnRoaXMpOwogI2VuZGlmCkBAIC03ODAzLDcg
Kzc4MDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29u
IHJlc2V0U3RhdGVSZWFzb24pCiAKICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIgPSBudWxscHRyOwogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkK
KyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIGlmIChtX3hyU3lzdGVtKSB7
CiAgICAgICAgIG1feHJTeXN0ZW0tPmludmFsaWRhdGUoKTsKICAgICAgICAgbV94clN5c3RlbSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGVjNWQw
Y2YwNWUzYjQzNTQ3YWY1OTNkZDY1MzdjMDM3ODE3ZTZhOWUuLmViNTMxMzA0NGE2YmVjZmI0ZjY3
YzJjYTQ4NTJkMWY4OTVkZjEwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xODUsNyArMTg1LDcgQEAgaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9Q
RU5YUikKICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCiAjZW5kaWYKIApAQCAtMzA0Miw3
ICszMDQyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKLSNpZiBFTkFC
TEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShP
UEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
Q29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0
ODcwN2EzY2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIv
UGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRv
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZh
dWx0OworCisgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4K
KyAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkg
eyByZXR1cm4gMTsgfQorCisgICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNl
c3Npb24gY3JlYXRpb24vdGVybWluYXRpb24uCisgICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAw
OworCisgICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3AuCisgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1
ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdl
YlBhZ2VQcm94eSYpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZTJjYmE2Njc5ZTUzNmRmNzc0YjQyMGEwM2EyMDFl
MWIxY2NiMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCisKKyNpZiBFTkFC
TEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVt
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3Rl
bTo6UGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFn
ZSkKK3sKKyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlE
KCksICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQor
eworICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQ
bGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYg
KHhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZF
eGlzdHMobV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1l
cnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZv
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0g
UGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRv
cikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgeHJDb29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJE
ZXZpY2VJbmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkZXZpY2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICghZGV2aWNlSW5mbykgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1Y
UlN5c3RlbTo6eHJDb29yZGluYXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgeHJDb29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRl
bnRpZmllcikgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBk
ZXZpY2VJZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQor
ICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbVByb3h5OjpTZXNzaW9uRGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2lu
Z0FuZFJlbmRlcmluZygpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9y
bVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNl
c3Npb25JZkV4aXN0cyhtX3BhZ2UpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVl
c3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5h
dG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3Jk
aW5hdG9yLT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKK3sK
KyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRp
bmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKK30K
KworfQorCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9y
KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2RhZTQ1M2Q3MmNjNzI2NDExNWU4ODhkYWMxMzYwYjU0ZGM2ZGM0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW0uaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
WFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRv
cjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworc3RydWN0IFhSRGV2aWNlSW5mbzsKKworY2xhc3Mg
UGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQ
YWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtKCk7CisKKyAgICB2b2lk
IGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5h
dG9yKiB4ckNvb3JkaW5hdG9yKCk7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBlbnVtZXJhdGVJbW1l
cnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZv
PiYmKT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAg
ICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RG
cmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
JiYpPiYmKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJT
eXN0ZW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY0YzhiYjYyNjQ2OTM0YjA2NjJlZjEzYmUx
NjFlZDUyZjUyYmJlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisgCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVt
IE5vdFJlZkNvdW50ZWQgeworICAgIEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+IChW
ZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMKKyAgICBJbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQorICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3luYworICAgIFN1Ym1pdEZyYW1lKCkKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjMDkzNWM1MjRkY2I0ODVjYWI1YzQwMDA4YzhkZWNiMzMzYmM0NWE4Li4yMDRkNzZiYmYx
NWM4NzMyYjQyMjljOGFiNzQzYjk4YzNkMDUwYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMTMsMTIgKzExMTMsNiBAQAogCQk1
MUZBRUMzQTFCMDY1NzYzMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBRUMzNzFCMDY1
NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmggKi87IH07CiAJCTUxRkFF
QzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM2
MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNTFGRDE4QjYxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGRDE4
QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovOyB9OwotCQk1
MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUwODBBRTI2MUJERTZCMDA2
NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi87IH07Ci0JCTUyNTA4MEIyMjYxQkRFNkMw
MDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8u
aCAqLzsgfTsKLQkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjU1MjYx
RTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi87IH07Ci0JCTUyNjNFMjVBMjYxRTkz
QTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLzsgfTsKLQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
LmggKi87IH07Ci0JCTUyNjNFMjVGMjYxRTk2RUYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
NjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLzsgfTsK
IAkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJENEM3MUU3MzVG
MDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI4QzM3QzExOTVDQkIxQTAwRDhCOUNDIC8q
IFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE5RjI4MTAxOTU4RjQ3ODAwOENBQzcyIC8qIFdLQmFja0Zvcndh
cmRMaXN0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aCAqLzsgfTsKQEAgLTI1NjEsNiArMjU1NSwxOSBAQAogCQkwRkZFRDk4RjIzQTMyMDM3MDBFRUY0
NTkgLyogV0tXZWJWaWV3TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tXZWJWaWV3TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZF
RDk5MDIzQTMyMDM4MDBFRUY0NTkgLyogV0tXZWJWaWV3TWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxMDU4QzdCMUZFQTU1ODVFMTFDQTJDQkIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTEx
ODUwMjU2MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTExODUwMjU3MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHku
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1ODI2NzNCMDE2MDBBNjQyNUUgLyogUGxh
dGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVBMjY3M0Iw
NzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBs
YXRmb3JtWFJTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1
QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTExODUwMjVFMjY3M0IwQTcwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhS
Q29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjYxMjY3
M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNl
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjIyNjczQjBEQTAw
QTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFJEZXZpY2VQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjYzMjY3M0IwREEw
MEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjY0MjY3M0Iw
REEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFJEZXZp
Y2VJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjUyNjczQjBE
QTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0UxOTZCMzI5NDAwQjlBRDQ0
IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25T
dGF0ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTg4LDE4ICs0
MTk1LDYgQEAKIAkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjMxNjUxRkJBRDAwREJFMUNF
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBBRDI2MUJERTZCMDA2
NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gWFJEZXZpY2VJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyog
UGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI0RTI2MUU3MkVCMDAx
OEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRm
b3JtWFJTeXN0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjRGMjYx
RTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtWFJTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTAyNjFF
NzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZv
cm1YUlN5c3RlbS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2
M0UyNTQyNjFFNzNERTAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZVByb3h5Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjVEMjYx
RTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
NjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9u
U3BhY2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1Byb3RlY3Rpb25T
cGFjZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjcyRDRDODFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9u
U3BhY2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUHJv
dGVjdGlvblNwYWNlTlMubW07IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTY0MjYsNiArNjQyMSwzOSBAQAogCQkJbmFtZSA9ICJPdGhlciBGcmFtZXdvcmtz
IjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTExODUwMjU1MjY3M0IwMTYw
MEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMTE4NTAyNTgyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5j
cHAgKi8sCisJCQkJMTE4NTAyNTYyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5oICovLAorCQkJCTExODUwMjU3MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IFhSOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTE4NTAyNTkyNjczQjA3MTAwQTY0MjVFIC8qIFhS
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1
QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCisJCQkJMTE4
NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0uY3BwICovLAorCQkJCTEx
ODUwMjVDMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8sCisJCQkJMTE4
NTAyNUQyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8s
CisJCQkpOworCQkJcGF0aCA9IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJE
ZXZpY2VJZGVudGlmaWVyLmggKi8sCisJCQkJMTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8qIFhS
RGV2aWNlSW5mby5jcHAgKi8sCisJCQkJMTE4NTAyNjUyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2
aWNlSW5mby5oICovLAorCQkJCTExODUwMjYyMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVBy
b3h5LmNwcCAqLywKKwkJCQkxMTg1MDI2MTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94
eS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTFBMEVDNkIwMTI0QkJEMzYwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTY2OTIsNiArNjcyMCw3
IEBACiAJCQkJMUFBRTA1OEMxMjc5RENENDAwODUyNDE4IC8qIFBsdWdpbnMgKi8sCiAJCQkJMkQy
RTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90ZUxheWVyVHJlZSAqLywKIAkJCQkxQUJGNDM3
ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCisJCQkJMTE4NTAyNjAyNjczQjBE
QTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUzQkNFODc3MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nl
c3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUUzQkNFODc4MjY3MjUyMTIwMDExRDhE
QiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaCAqLywKIAkJCQlBN0Q3OTJENTE3NjdDQjZF
MDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwICovLApAQCAtNzA0OSwxMCArNzA3OCw3
IEBACiAJCQkJMUFCQzNERjMxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAq
LywKIAkJCQk1QzZDRTZEMzFGNTlFQTM1MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5o
ICovLAogCQkJCTVDNkNFNkQwMUY1OUJDNDYwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29h
Lm1tICovLAotCQkJCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaCAqLywKLQkJCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5
c3RlbS5oICovLAotCQkJCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lz
dGVtLm1lc3NhZ2VzLmluICovLAotCQkJCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtLm1tICovLAorCQkJCTExODUwMjVFMjY3M0IwQTcwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IubW0gKi8sCiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8q
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIyMUNCRUI2MUEw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJQ0RBMjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbSAqLywKQEAgLTgzMzAsMTEgKzgzNTYsNiBAQAogCQkJCUMxNEQzMDY1MjRCNzk0RTcwMDQ4
MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLywKIAkJCQlDMTREMzA2ODI0Qjc5NEU3MDA0ODAzODcg
LyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLywKIAkJCQlDMTREMzA2NjI0Qjc5NEU3MDA0ODAzODcg
LyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi8sCi0JCQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVF
IC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovLAotCQkJCTUyNTA4MEFGMjYxQkRFNkMwMDY3OEFF
RSAvKiBYUkRldmljZUluZm8uaCAqLywKLQkJCQk1MjUwODBBRDI2MUJERTZCMDA2NzhBRUUgLyog
WFJEZXZpY2VJbmZvLm1tICovLAotCQkJCTUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRl
dmljZVByb3h5LmggKi8sCi0JCQkJNTI2M0UyNTQyNjFFNzNERTAwMThENDdEIC8qIFhSRGV2aWNl
UHJveHkubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29hOwogCQkJcGF0aCA9IENvY29hOwpA
QCAtOTMzMSw5ICs5MzUyLDYgQEAKIAkJCQlDMUExNTJENjI0RTVBMjlBMDA5NzhDOEIgLyogSGFu
ZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSAqLywKIAkJCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYw
MTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIuaCAqLywKIAkJCQlDMTREMzdGRDI0
QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi8sCi0J
CQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICov
LAotCQkJCTUyNjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHku
bWVzc2FnZXMuaW4gKi8sCi0JCQkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5tbSAqLywKIAkJCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQx
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNC
REJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApA
QCAtOTc5OSw2ICs5ODE3LDcgQEAKIAkJCQlCQzAzMkQ1RDEwRjQzNzIyMDA1OEMxNUEgLyogV2Vi
Q29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2Ug
Ki8sCiAJCQkJMUFBQzREREUxNkIxQ0JGNjAwOTQyNUUzIC8qIFdlYlN0b3JhZ2UgKi8sCisJCQkJ
MTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhSICovLAogCQkJCUJDRTlDMENGMTQ4NTk2NUQw
MEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwICovLAogCQkJCUJDRTlDMEQw
MTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCAqLywKIAkJCQlC
QzExMUFFMzExMkY1QzI2MDAzMzdCQUIgLyogV2ViUHJvY2Vzcy5jcHAgKi8sCkBAIC05OTY0LDYg
Kzk5ODMsNyBAQAogCQkJCTFBQUYwODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAq
LywKIAkJCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8s
CiAJCQkJMUE1M0MyQTMxQTMyNTY5MTAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhICovLAorCQkJCTEx
ODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLywKIAkJCQlFMTUxM0M2NDE2NkVBQkIyMDAx
NDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlFMTUxM0M2NTE2NkVB
QkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJNDZBMkI2MDYx
RTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5j
cHAgKi8sCkBAIC0xMjE4Miw5ICsxMjIwMiw2IEBACiAJCQkJMkQ4NzEwMTcxODI4NDE1RDAwMThG
QTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFj
a2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBs
YXRmb3JtUG9wdXBNZW51RGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUEyNjFFOTNB
NzAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTI2M0UyNUIyNjFFOTNBQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUyNjNFMjVGMjYxRTk2RUYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0NkRDNjRDMjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlB
MUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQTI5QTI5MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTMwNzgsOSArMTMwOTUsNiBAQAogCQkJ
CUMxNUU2Q0IzMjRCN0JFNkYwMEU1MDFBMiAvKiBYUENFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzE1RTZDQjQyNEI3QkU3NjAwRTUwMUEyIC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVu
dHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAv
KiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNTA4MEIyMjYxQkRF
NkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjU3
MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE0
MTI4LDcgKzE0MTQyLDYgQEAKIAkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNj
cmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
MUExNTJENzI0RTVBMjlBMDA5NzhDOEIgLyogSGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ0MjE0NjU2MUIwMDgzODBCRiAvKiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RGMUI5MUIyNjcwMjU1NTAw
MDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5
RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5QkY1RUM2NDI1NDExNDU2MDA5ODRFNzcgLyogSlNJUENCaW5kaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05Q
TWV0aG9kLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTQ0NzIsNiArMTQ0ODUsNyBAQAogCQkJCTFB
NjI4MEYzMTkxOTk4MkEwMDZBRDlGOSAvKiBXZWJLaXQubSBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTJBNzhCMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJLaXQySW5pdGlhbGl6ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTgxQTc5ODIxQUNDNzRCMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RGMUI5MUIyNjcwMjU1NTAwMDdFQzEwIC8qIFdlYktpdFN3
aWZ0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4
MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTJBNzhDMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJNb3VzZUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxQkE5MjREMTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCAwNDU1N2E4NWZjODdjNjc0NTFlNzBhZTE3ZjlmNTBjMGZmZmNjNTNmLi4zNTYz
M2MxOTZkYjVmZDg3YTYzZDRlYjIxZTc3MjQ4OTg1YzQ3YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMTUwMyw3ICsxNTAzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05U
RVhUTUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJh
dGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9y
bVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fcGFnZS54clN5c3RlbVByb3h5KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4MzViZmQwY2M0
OGUzNDNmMWZiMzQ5Y2M5ZWU0NGFmYzRiMTkxMjgyLi5lYmQ5ODk4OTNiMzRkN2EyYzZjNzc0OWQ5
MjUxZDk3YTgyYzg3OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00NDgsNyArNDQ4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6
RmxvYXRSZWN0JiYsIFZlY3RvcjxXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVt
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0
TWVudUl0ZW06OklEKT4mJikgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xT
X0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdFQlhS
KSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQog
ICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDQ0OTA3NTVmZmY3NjhkNDEwYjUzNTdmYzYxMDIyMjZl
ZjdlYjU2ZWUuLmUxNDE1MGI1YjhkYTZjMTU3MDliMzBjYWMyYTlkZTQ2N2RlMmJhYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0KQEAgLTQ0MywxNSArNDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBh
Z2VTaXplKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQ
cmludGluZygpKSk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi1QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkmIFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQotewotICAgIGlmICghbV94clN5c3RlbVByb3h5
KQotICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5
c3RlbVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7Ci0gICAgcmV0dXJu
ICptX3hyU3lzdGVtUHJveHk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKIAogdm9pZCBXZWJQYWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1bHQoY29u
c3QgRGF0YURldGVjdG9yRWxlbWVudEluZm8mIGluZm8sIGNvbnN0IEludFBvaW50JiBjbGlja0xv
Y2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAzN2I0M2U5YzdjNWYyZDdjMDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4Li40NjUyMmMwNDY5
ZGE1YTNmMDk2Y2JjN2ExMmZkMWI3NjFlNTQwOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzM0MCw2ICs3MzQwLDE1IEBAIHZvaWQgV2Vi
UGFnZTo6dGV4dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCkKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNF
KE9QRU5YUikKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSgp
Cit7CisgICAgaWYgKCFtX3hyU3lzdGVtUHJveHkpCisgICAgICAgIG1feHJTeXN0ZW1Qcm94eSA9
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkoKnRoaXMpKTsKKyAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKK30KKyNlbmRp
ZgorCiB2b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpCiB7CiAgICAgaWYgKG1lZGlhVHlwZSA9PSBtX292ZXJyaWRkZW5NZWRpYVR5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDRjNmFj
MjliNDk3MzgxMzA3NzQ1ZDU5ZGEzYzcxYjk0ODYyNWFhMy4uZjQyZTI3MjAxYmZiNWE0NzBmOWQz
NGI1M2JjNTUwYWRiYWZhOWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3Qg
QXRrT2JqZWN0OwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJM
RShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5
LmgiCiAjZW5kaWYKIApAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4
dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNF
KE9QRU5YUikKICAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNl
bmRpZgogCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8V2Vha1B0cjxXZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdU
ZXh0UmVjb2duaXRpb247CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CiAjZW5kaWYKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUw
NThjMmNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgor
CisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShX
ZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOwor
fQorCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5p
ZGVudGlmaWVyKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6
OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNp
dmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmlj
ZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2
aWNlTGlzdCBkZXZpY2VzOworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2Vz
SW5mb3MpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmll
cihkZXZpY2VJbmZvLmlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5k
KCpkZXZpY2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBw
ZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOwor
ICAgICAgICB9CisgICAgICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtX2RldmljZXMpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW06OlNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpS
ZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5k
bGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90
LCB1aW50MzJfdCwgYm9vbCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpk
ZWZhdWx0TGF5ZXJIYW5kbGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1
Ym1pdEZyYW1lKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6U3VibWl0RnJhbWUoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNz
aW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlm
IChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5
PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykg
eworICAgICAgICBhdXRvKiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkq
PihkZXZpY2UucHRyKCkpOworICAgICAgICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9
PSBpZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKwor
ICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Y
Ui9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2Qw
NjUyZThjYzc0NDk2ZWQ0MDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlhSRGV2aWNlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhS
U3lzdGVtUHJveHkoKTsKKworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxp
c3QmKT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAg
ICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RG
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlv
bih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpOworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKwor
cHJpdmF0ZToKKyAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhS
RGV2aWNlSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhS
RGV2aWNlSWRlbnRpZmllcik7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlz
dCBtX2RldmljZXM7CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFj
MWY3ZjYyNGI0OTZkYTU3YTEwZjk2NGVmNGRkOTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21l
c3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNz
aW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0
ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgot
I2luY2x1ZGUgIlhSRGV2aWNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6
Ci0gICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0
Zm9ybVhSU3lzdGVtUHJveHkoKTsKLQotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRl
dmljZUxpc3QmKT4mJik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KTsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwot
ICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJv
amVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUo
KTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlm
aWVyKFhSRGV2aWNlSWRlbnRpZmllcik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgot
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlk
RW5kKFhSRGV2aWNlSWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2
aWNlTGlzdCBtX2RldmljZXM7Ci0gICAgV2ViUGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3
MDgyOTNkNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNz
YWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1Y
UlN5c3RlbVByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpY
UkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3
OGU1MWMzZDMwZmZlYTczM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0j
aWYgRU5BQkxFKFdFQlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNp
bXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5
c3RlbVByb3h5TWVzc2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgotCi11c2luZyBuYW1lc3BhY2UgUGxhdGZvcm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBh
Z2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRm
b3JtWFJTeXN0ZW1Qcm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIo
KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlz
dCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cygpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBk
ZXZpY2VzSW5mb3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRl
dmljZXM7Ci0gICAgICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewot
ICAgICAgICAgICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUlu
Zm8uaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZp
Y2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9kZXZpY2VzLnN3YXAoZGV2aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1fZGV2aWNlcyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6U2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFt
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJh
Y2spKTsKLX0KLQotc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZv
cm1YUlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90
LCBib29sKQotewotICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXll
ckhhbmRsZSgpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUo
KQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRG
cmFtZSgpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQo
WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2
aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZp
Y2UtPnNlc3Npb25EaWRFbmQoKTsKLX0KLQotUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKQotewotICAgIGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAg
IGF1dG8qIGRldmljZVByb3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5w
dHIoKSk7Ci0gICAgICAgIGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm4gZGV2aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQlhSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432271</attachid>
            <date>2021-06-25 08:03:15 -0700</date>
            <delta_ts>2021-07-06 07:09:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210625170313.patch</filename>
            <type>text/plain</type>
            <size>107535</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViYzMzNDkzMTIzMjI5M2Nk
NTRlNmIxNzU1MDljYmNlM2NjOTBhMmYuLmEwZWZmMWVhNTQ5MmI1ZTljMGFjMjcyZWRiMjM5ODc4
YzY2Zjg3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNi0yNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dMaWJdIEd1YXJkIENhaXJvIGluY2x1c2lvbnMgaW4gc2hhcmVkIEdMaWIgQVBJIGlt
cGxlbWVudGF0aW9uIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBmNjMxMjgzODU5Yjg3N2Jk
OTY4ODY3MTI4OTA4MGNhMjk1MTcxMzdhLi42OTk5OTZmODM2YWQ3ZGFhZjIxYjA1MzVkZjI1MTdh
NjMzMGNmYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0KFdlYktp
dF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXllclRyZWUi
CiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dFQktJVF9E
SVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAgIiR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAiJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtXRUJLSVRf
RElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBwbGVQYXki
CkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9ESVJ9L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvWFIiCiAg
ICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJDRV9ESVJ9
L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNiw2ICsyMTksOCBAQCBzZXQoV2ViS2l0X01FU1NB
R0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtCisKICAg
ICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODUsNiArMjkwLDggQEAgc2V0KFdlYktpdF9NRVNT
QUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAgICBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3MvWFIvUGxh
dGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFlMDM0MTU0
NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIxODk0MjJj
NjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
U2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVDVF9ESVIp
L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3IEBAICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
VUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBAQCAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvQXVkaW9D
YXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGRh
ODNiYjJjNWJkMTFmZDAxZTUzOTNhMWRmMzVjMjQ5ZGU3NmRlODEuLmI5OTM2MzA3NzMyZjRiZWM0
N2IzYzYwOWIyMDlhYWQ3MjExNjM4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3MvaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Q
cm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlVSVByb2Nl
c3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkg
XApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJvY2Vzcy9N
ZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBAIC0yMjAs
NyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlByb2Nlc3Mv
Y29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXApAQCAt
MjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1Nzc2NjVi
OWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQwOGM4OTJh
ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtCiAgICAg
VUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1ZWQwYjY4
Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9OwotdXNp
bmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlkZW50aWZp
ZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhSRGV2
aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJZGVudGlm
aWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBm
YWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OwotICAg
IFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2ViQ29yZTo6
SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmlj
ZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBiOGRkY2Iz
MTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNl
SW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09yaWVudGF0
aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMgPDwgcmVj
b21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJE
ZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhSRGV2aWNl
SW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1
cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1
cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0dXJlczsK
LX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmU0
NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhSRGV2aWNl
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8WFJE
ZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkm
KTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVByb3h5Jik7
Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRpb247IH0K
LSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNz
aW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VT
cGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAgIFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpTZXNzaW9u
TW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVp
bnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3JtWFI6Okxh
eWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0b3I8UGxh
dGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PiBtX3hy
U3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNlIH07Ci0g
ICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMzOGNmZjYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEw
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJYUkRl
dmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRmb3JtWFJT
eXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5hbWVzcGFj
ZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNlUHJveHk+
IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhS
RGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQotWFJEZXZp
Y2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vha1B0cih4
clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlmaWVyOwot
ICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzU3RlcmVv
UmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2aWNlSW5m
by5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJlc29sdXRp
b24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRldmljZUlu
Zm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMoU2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9pZCBYUkRl
dmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+c2Vzc2lv
bkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsKLSAgICBp
ZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3Rl
bS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJEZXZpY2VQ
cm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1feHJTeXN0
ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsK
LX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNlUHJveHk6
OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmljZTo6Vmll
d0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYmIG1vZGUg
PT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7IC5h
Y3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3Rp
dmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3cy5hcHBl
bmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3czsKLX0K
LQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpS
ZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lzdGVtKQot
ICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykpOwotfQot
Ci1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVByb3h5Ojpj
cmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9v
bCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNyZWF0ZUxh
eWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7Ci19Ci0K
LXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmlj
ZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0t
PnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVlOTlkMTY0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNlSWRlbnRp
ZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZmNGZlYTMw
OTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisjaWYgRU5B
QkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3VwcG9ydHNP
cmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZlYXR1cmVz
IDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRldmljZUlu
Zm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBY
UkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZp
Y2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZp
Y2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVzb2x1dGlv
bikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2aWNlRmVh
dHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2
MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgSVBDIHsK
K2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9OworICAg
IGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRmb3JtWFI6
OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNv
bW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRlY29k
ZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJE
ZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdmMzU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5j
cHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVk
ZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVm
PFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZp
Y2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0p
KTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZp
Y2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94clN5c3Rl
bShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5m
by5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZv
LnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNr
aW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAgbV9yZWNv
bW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKKyAg
ICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRFbmFibGVk
RmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsK
K30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBpZiAodHJh
Y2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OmluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9u
TW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6
OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3RlbSkKKyAg
ICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Cit9CisK
K3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7Cisg
ICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+
IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVj
dG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVu
ZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAgICAgIHZp
ZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAgIHZpZXdz
LmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxzZQorICAg
ICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOworICAgIHJl
dHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlm
IChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShj
YWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBY
UkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQz
Ml90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJT
eXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6
Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBs
YXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAg
ICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2ZhNTU4MmU2
OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmlj
ZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3QgWFJEZXZp
Y2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6
OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUo
WFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2aWNlSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAg
ICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVByb3h5KFhS
RGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNvcmU6Oklu
dFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKKyAg
ICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJl
ZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5k
bGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFs
OworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRl
IHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6Okxh
eWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cisg
ICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAgYm9vbCBt
X3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MmUxNDdi
OGYzYjA0YTdjY2U3NmFkZTgxYjg1NjZmYTk0N2ZhNGU4Li41ZjYyZmFmYTc2YTZhYTU3OTRkMTdk
NGJjNmY3ZTMzMzMzYTNjZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI4OSw2ICsyODksOSBAQCBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgQG5vLXVuaWZ5CiAKIFNo
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAorU2hhcmVkL1hSL1hSRGV2aWNlSW5m
by5jcHAKK1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorCiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTUw
NCw2ICs1MDcsOCBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
CiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKIAorVUlQcm9jZXNz
L1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCisKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNw
cAogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTcyMyw4ICs3MjgsMTIgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKIAorV2Vi
UHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCisKIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5j
cHAKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCA1YTk1MTRjZGY3OTRjYmRlNzllOGM0Y2YxOTc5OGMzZjE4MWJkM2E4Li4z
NDg1OWEwZmY1OWI3NjVmZDRmNzJlNzk2NGQ1YTQ4YzNkNzdjMDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0xODQsOCArMTg0LDYgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0K
IFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1t
CiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KLVNoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8ubW0KLVNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCiAK
IFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW0KQEAgLTQwMSw3ICszOTksNyBAQCBVSVByb2Nlc3MvQ29jb2EvTWVk
aWFVdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLm1tCi1VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5t
bQorVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQogVUlQcm9jZXNzL0Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC01OTUsNyArNTkzLDYgQEAgV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCiAKIFdlYlByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yQ29jb2EubW0KIAotV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkubW0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQogV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTcxMiw4ICs3MDksNiBAQCBHUFVQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBNZXNzYWdlTmFt
ZXMuY3BwCi1QbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJlY2VpdmVyLmNwcAotUGxhdGZvcm1YUlN5
c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1
ZWQ0NjZhYzc0ODcwN2EzY2MwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0
OwotCi0gICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KLSAg
ICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyBy
ZXR1cm4gMTsgfQotCi0gICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJp
bWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKLQotICAgIC8vIFNlc3Np
b24gY3JlYXRpb24vdGVybWluYXRpb24uCi0gICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRpZmllcik+OwotICAgIHZpcnR1YWwgdm9pZCBz
dGFydFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOwot
Ci0gICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3AuCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
QW5pbWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0
RnJhbWVDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBh
Z2VQcm94eSYpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNWE1NWQwNGNiZDZmMGI5OTAz
NWYxMGZjYmI1ZGM0MmI3Yjk5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRp
bmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJYUikgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtWFJTeXN0ZW1BZGRpdGlvbnMubW0+
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNDRhZDE2ZTk5NGI5NzYzZWU1ZDZlY2VlZTA4
NTgzZGExN2FmZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBQ
bGF0Zm9ybVhSQ29vcmRpbmF0b3I7Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLXN0cnVjdCBYUkRl
dmljZUluZm87Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFBs
YXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5Jik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5
c3RlbSgpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGlj
IFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJDb29yZGluYXRvcigpOwotCi0gICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAg
IHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7Ci0gICAgdm9pZCBzdWJtaXRGcmFtZSgpOwotCi0g
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNDUzYWFkOTBjMzE3NmI4YmExZjg2ZmMwZjM5NWQyZDAwMDQ2NjA4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KKysrIC9k
ZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKFdFQlhSKQotCi1tZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJl
ZkNvdW50ZWQgewotICAgIEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8
V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMKLSAgICBJbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotICAgIFNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KQotICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGEgZnJhbWVEYXRhKSBBc3luYwotICAgIFN1Ym1pdEZyYW1lKCkKLX0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdmM2Q3ZjQ5OGM2YmMzMWVlNTA3NzM4ZDIx
MjU5NGU3ZjljNmZjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShXRUJYUikK
LQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhS
U3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2Vz
LmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5
c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLXsKLSAgICBtX3Bh
Z2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0aGlzKTsKLX0K
LQotUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQotewotICAgIG1fcGFnZS5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVt
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Ci19Ci0KLXZvaWQg
UGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKHhyQ29vcmRpbmF0b3Io
KSkKLSAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsK
LX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpOwotICAgIGlmICgheHJDb29yZGluYXRvcikgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgeHJD
b29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZp
Y2VJbmZvKSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZpY2VJbmZvID0g
V1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghZGV2aWNl
SW5mbykgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KCkKLXsKLSAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29y
ZGluYXRvcigpOwotICAgIGlmICgheHJDb29yZGluYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgeHJDb29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikgewotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJZGVudGlmaWVy
XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpT
ZXNzaW9uRGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Ci17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNv
b3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25JZkV4aXN0cyht
X3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFtZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1Y
UlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5zY2hlZHVs
ZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQot
Ci12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBpZiAoYXV0byog
eHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAg
ICAgeHJDb29yZGluYXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKLX0KLQotfQotCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1Y
UlN5c3RlbUFkZGl0aW9ucy5tbT4KLSNlbHNlCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGxhdGZv
cm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKLXsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiMWM2Mjdl
ZjAzN2FkNDM4ZGJlYWU2NDVhZmI3OGI5MDFkNDFiYzcwLi42OGQ3ZjBiN2NjYTYyNzM4MjY5MzU4
YmFjYWU1ZjExMjdhOGM5MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hU
b1J1bm5pbmdQcm9jZXNzKCkKICAgICBtX3dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5PigqdGhpcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBBU1NFUlQoIW1feHJT
eXN0ZW0pOwogICAgIG1feHJTeXN0ZW0gPSBtYWtlVW5pcXVlPFBsYXRmb3JtWFJTeXN0ZW0+KCp0
aGlzKTsKICNlbmRpZgpAQCAtNzgwNyw3ICs3ODA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogCiAgICAgbV9zcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKIAotI2lmIEVOQUJMRShX
RUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5Y
UikKICAgICBpZiAobV94clN5c3RlbSkgewogICAgICAgICBtX3hyU3lzdGVtLT5pbnZhbGlkYXRl
KCk7CiAgICAgICAgIG1feHJTeXN0ZW0gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBlYzVkMGNmMDVlM2I0MzU0N2FmNTkzZGQ2NTM3YzAzNzgxN2U2
YTllLi5lYjUzMTMwNDRhNmJlY2ZiNGY2N2MyY2E0ODUyZDFmODk1ZGYxMDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTg1LDcgKzE4NSw3IEBAIGludGVyZmFj
ZSBJRDNEMTFEZXZpY2UxOwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lm
IEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3Rl
bS5oIgogI2VuZGlmCiAKQEAgLTMwNDIsNyArMzA0Miw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50OwogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNp
ZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVhSU3lzdGVtPiBtX3hyU3lzdGVtOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMxNjEx
OGZjZjZmNzFlNDVkOWRjNWVkNDY2YWM3NDg3MDdhM2NjMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikK
KworI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5m
by5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitj
bGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgflBsYXRm
b3JtWFJDb29yZGluYXRvcigpID0gZGVmYXVsdDsKKworICAgIC8vIEZJWE1FOiBUZW1wb3Jhcnkg
YW5kIHdpbGwgYmUgZml4ZWQgbGF0ZXIuCisgICAgc3RhdGljIFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlIGRlZmF1bHRMYXllckhhbmRsZSgpIHsgcmV0dXJuIDE7IH0KKworICAgIHVzaW5nIERldmlj
ZUluZm9DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
KT47CisgICAgdmlydHVhbCB2b2lkIGdldFByaW1hcnlEZXZpY2VJbmZvKERldmljZUluZm9DYWxs
YmFjayYmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0aW9uLgorICAg
IHVzaW5nIE9uU2Vzc2lvbkVuZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRldmljZUlkZW50
aWZpZXIpPjsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9u
U2Vzc2lvbkVuZENhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklm
RXhpc3RzKFdlYlBhZ2VQcm94eSYpID0gMDsKKworICAgIC8vIFNlc3Npb24gZGlzcGxheSBsb29w
LgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYs
IFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdWJtaXRGcmFtZShXZWJQYWdlUHJveHkmKSB7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2UyY2Jh
NjY3OWU1MzZkZjc3NGI0MjBhMDNhMjAxZTFiMWNjYjBmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1YUlN5c3RlbS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1BsYXRmb3JtWFJTeXN0ZW06OlBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5
JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1BsYXRmb3JtWFJTeXN0
ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKK3sKKyAgICBtX3BhZ2UucHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06
OmludmFsaWRhdGUoKQoreworICAgIGlmICh4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29v
cmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhyQ29vcmRpbmF0b3ItPmdldFBy
aW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUoZGV2aWNlSW5m
byldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWRldmljZUluZm8pIHsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXZpY2VJ
bmZvLnZhbHVlKCkgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3Jt
WFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgYXV0byog
eHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKKyAgICBp
ZiAoIXhyQ29vcmRpbmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIHhyQ29vcmRpbmF0b3It
PnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oWFJE
ZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wYWdl
LnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6U2Vzc2lvbkRpZEVuZChkZXZp
Y2VJZGVudGlmaWVyKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3Jt
WFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIGlmIChhdXRv
KiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAg
ICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRp
bmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+c2NoZWR1bGVBbmltYXRpb25GcmFtZSht
X3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhS
U3lzdGVtOjpzdWJtaXRGcmFtZSgpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQ
bGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3It
PnN1Ym1pdEZyYW1lKG1fcGFnZSk7Cit9CisKK30KKworI2lmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJDb29yZGluYXRvciogUGxhdGZv
cm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWU0NTNkNzJjYzcy
NjQxMTVlODg4ZGFjMTM2MGI1NGRjNmRjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgKQEAgLTAsMCArMSw2NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3N0cnVj
dCBYUkRldmljZUluZm87CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW0gOiBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIFBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+UGxhdGZv
cm1YUlN5c3RlbSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6CisgICAg
c3RhdGljIFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJDb29yZGluYXRvcigpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7CisgICAgdm9pZCBzdWJtaXRGcmFtZSgp
OworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVm
NGM4YmI2MjY0NjkzNGIwNjYyZWYxM2JlMTYxZWQ1MmY1MmJiZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2lmIEVOQUJMRShXRUJYUikKKworbWVz
c2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbSBOb3RSZWZDb3VudGVkIHsKKyAgICBFbnVtZXJhdGVJ
bW1lcnNpdmVYUkRldmljZXMoKSAtPiAoVmVjdG9yPFdlYktpdDo6WFJEZXZpY2VJbmZvPiBkZXZp
Y2VzSW5mb3MpIEFzeW5jCisgICAgSW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKKyAg
ICBTaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKKyAgICBSZXF1ZXN0RnJhbWUoKSAtPiAo
c3RydWN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkgQXN5bmMKKyAg
ICBTdWJtaXRGcmFtZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzA5MzVjNTI0ZGNiNDg1Y2FiNWM0MDAwOGM4
ZGVjYjMzM2JjNDVhOC4uMjA0ZDc2YmJmMTVjODczMmI0MjI5YzhhYjc0M2I5OGMzZDA1MGIwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMTEzLDEyICsxMTEzLDYgQEAKIAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8qIEF1eGls
aWFyeVByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGQUVDMzcxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NN
ZXNzYWdlcy5oICovOyB9OwogCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQXV4aWxpYXJ5
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUZBRUMzNjFCMDY1NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFD
RSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2
aWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICov
OyB9OwotCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUwODBBRjI2MUJERTZD
MDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi87IH07Ci0JCTUyNjNFMjU3MjYxRTczREYwMDE4
RDQ3RCAvKiBYUkRldmljZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5o
ICovOyB9OwotCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5h
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYz
RTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi87IH07Ci0J
CTUyNjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI0RjI2MUU3MkVCMDAx
OEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovOyB9OwotCQk1MjYzRTI1RjI2MUU5NkVGMDAx
OEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbVByb3h5LmggKi87IH07CiAJCTUyNzJENEM5MUU3MzVGMDkwMEVCNDI5MCAvKiBX
S1Byb3RlY3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VO
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUy
OEMzN0MxMTk1Q0JCMUEwMEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYyODEwMTk1OEY0
NzgwMDhDQUM3MiAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkQ1QTFCMDFDNTc0OTVBMDBERTM0
QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi87IH07CkBAIC0yNTYxLDYgKzI1NTUsMTkgQEAK
IAkJMEZGRUQ5OEYyM0EzMjAzNzAwRUVGNDU5IC8qIFdLV2ViVmlld01hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRUQ5OTAyM0EzMjAzODAwRUVGNDU5IC8qIFdLV2ViVmll
d01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZpZXdNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3QjFGRUE1NTg1RTExQ0EyQ0JCIC8q
IENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRo
ID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxMTg1MDI1NjI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZv
cm1YUlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1NzI2NzNCMDE2MDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAy
NTgyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUMyNjczQjA3MTAwQTY0MjVFIC8qIFBs
YXRmb3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQyNUUgLyogUGxh
dGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RTI2NzNCMEE3MDBBNjQy
NUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxMTg1MDI2MTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTExODUwMjYyMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxMTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tT
ZXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lv
blN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDQyMTk2QjMzNzAw
MEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDE4OCwxOCArNDE5NSw2IEBACiAJCTUxRkIwOTAyMTYzQTNCMUMwMEVD
MzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjQxNjUxRkJBRDAwREJF
MUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2
aWNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmlj
ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUYyNjFC
REU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2
M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3Rl
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAvKiBYUkRldmlj
ZVByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFJEZXZp
Y2VQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTUyNjFFNzNE
RjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYz
RTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0QzcxRTczNUYw
OTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBwYXRoID0gbWFjL1dLUHJvdGVjdGlv
blNwYWNlTlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0QzgxRTczNUYw
OTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBwYXRoID0gbWFjL1dL
UHJvdGVjdGlvblNwYWNlTlMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVB
MUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDI2LDYgKzY0MjEsMzkgQEAKIAkJ
CW5hbWUgPSAiT3RoZXIgRnJhbWV3b3JrcyI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAv
KiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICovLAorCQkJCTExODUwMjU2MjY3M0IwMTYwMEE2
NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKKwkJCQkxMTg1MDI1NzI2NzNCMDE2
MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsK
KwkJCXBhdGggPSBYUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUw
MjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oICovLAorCQkJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9y
bVhSU3lzdGVtLmNwcCAqLywKKwkJCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZv
cm1YUlN5c3RlbS5oICovLAorCQkJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9y
bVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBY
UiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAy
NjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovLAorCQkJCTExODUw
MjY0MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICovLAorCQkJCTExODUwMjY1
MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLywKKwkJCQkxMTg1MDI2MjI2NzNC
MERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5jcHAgKi8sCisJCQkJMTE4NTAyNjEyNjczQjBE
QTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQTBFQzZCMDEyNEJCRDM2MDA3RUY0
QTUgLyogUGx1Z2luUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC02NjkyLDYgKzY3MjAsNyBAQAogCQkJCTFBQUUwNThDMTI3OURDRDQwMDg1MjQx
OCAvKiBQbHVnaW5zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVM
YXllclRyZWUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRh
ICovLAorCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKIAkJCQlFM0JDRTg3
NzI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNwcCAqLywKIAkJ
CQlFM0JDRTg3ODI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmgg
Ki8sCiAJCQkJQTdENzkyRDUxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNw
cCAqLywKQEAgLTcwNDksMTAgKzcwNzgsNyBAQAogCQkJCTFBQkMzREYzMTg5OUU0MzcwMDRGMDYy
NiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2RDMxRjU5RUEzNTAwMDdDNkNC
IC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKIAkJCQk1QzZDRTZEMDFGNTlCQzQ2MDAwN0M2
Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLywKLQkJCQk1MjYzRTI0RDI2MUU2RkI5MDAx
OEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCi0JCQkJNTI2M0UyNEYyNjFFNzJF
QjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKLQkJCQk1MjYzRTI1MDI2MUU3MkVD
MDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1MjYzRTI0
RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLywKKwkJCQkxMTg1MDI1
RTI2NzNCMEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovLAogCQkJCUNE
QTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAq
LywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCkBAIC04MzMwLDExICs4MzU2LDYgQEAK
IAkJCQlDMTREMzA2NTI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0gKi8sCiAJCQkJ
QzE0RDMwNjgyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggKi8sCiAJCQkJ
QzE0RDMwNjYyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1tICovLAotCQkJ
CTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywKLQkJ
CQk1MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCi0JCQkJNTI1
MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLywKLQkJCQk1MjYzRTI1
NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovLAotCQkJCTUyNjNFMjU0MjYx
RTczREUwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBj
b2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTkzMzEsOSArOTM1Miw2IEBACiAJCQkJQzFBMTUy
RDYyNEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gKi8sCiAJ
CQkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5h
Z2VyLmggKi8sCiAJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VNYW5hZ2VyLm1tICovLAotCQkJCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKLQkJCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTUyNjNFMjVDMjYx
RTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8sCiAJCQkJNDQ2REM2
NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk3OTksNiArOTgxNyw3IEBACiAJCQkJQkMwMzJE
NUQxMEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0ICovLAogCQkJCUJDMDMyRDVFMTBG
NDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovLAogCQkJCTFBQUM0RERFMTZCMUNCRjYwMDk0MjVF
MyAvKiBXZWJTdG9yYWdlICovLAorCQkJCTExODUwMjU1MjY3M0IwMTYwMEE2NDI1RSAvKiBYUiAq
LywKIAkJCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmNwcCAqLywKIAkJCQlCQ0U5QzBEMDE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmggKi8sCiAJCQkJQkMxMTFBRTMxMTJGNUMyNjAwMzM3QkFCIC8qIFdlYlBy
b2Nlc3MuY3BwICovLApAQCAtOTk2NCw2ICs5OTgzLDcgQEAKIAkJCQkxQUFGMDg5RTE5MjY4MUFD
MDBCNjM5MEMgLyogVXNlckNvbnRlbnQgKi8sCiAJCQkJNTc2MDgyOTQyMDJCRDg0OTAwMTE2Njc4
IC8qIFdlYkF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNTNDMkEzMUEzMjU2OTEwMDRFOEM3MCAv
KiBXZWJzaXRlRGF0YSAqLywKKwkJCQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8s
CiAJCQkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVByb2Nlc3NQcm94eS5j
cHAgKi8sCiAJCQkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oICovLAogCQkJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLApAQCAtMTIxODIsOSArMTIyMDIsNiBAQAog
CQkJCTJEODcxMDE3MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODk0OUYxMTgyMDQ0RjYwMEU4OThBQSAvKiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzQz
QUJCMTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1RjI2MUU5NkVGMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDZEQzY0
QzI0QTJEOEU1MDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQTI5QTFCMUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUEyOTFDQkVCNjdBMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMDc4LDkgKzEzMDk1LDYgQEAKIAkJCQlDMTVFNkNCMzI0QjdCRTZGMDBFNTAxQTIgLyogWFBD
RW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNUU2Q0I0MjRCN0JFNzYwMEU1MDFBMiAv
KiBYUENFbmRwb2ludENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRUNERTgxNkI2NDE2
ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1
MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNDEyOCw3ICsxNDE0Miw2IEBACiAJCQkJQ0RBOTNEQjEy
MkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFBMTUyRDcyNEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRs
ZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NDIxNDY1
NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4MEJGIC8qIEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGNUVDNjQyNTQxMTQ1
NjAwOTg0RTc3IC8qIEpTSVBDQmluZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkxMzQ0
MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE0
NDcyLDYgKzE0NDg1LDcgQEAKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0
Lm0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QjIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2l0
MkluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MUE3OTgyMUFDQzc0QjAwNTlB
MzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNERjFCOTFCMjY3
MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QzIxMkI2QUIxMDBGNDkzRkQgLyog
V2ViTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUJBOTI0RDE0ODgzMTI2MDA2
MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMDQ1NTdhODVmYzg3YzY3NDUxZTcw
YWUxN2Y5ZjUwYzBmZmZjYzUzZi4uMzU2MzNjMTk2ZGI1ZmQ4N2E2M2Q0ZWIyMWU3NzI0ODk4NWM0
N2M0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEZsb2F0UmVjdCYm
IHRhcmdldEZyYW1lLCBWZWN0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09O
VEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYm
IFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UueHJTeXN0ZW1Qcm94eSgpLmVudW1lcmF0
ZUltbWVyc2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggODM1YmZkMGNjNDhlMzQzZjFmYjM0OWNjOWVlNDRhZmM0YjE5MTI4Mi4u
ZWJkOTg5ODkzYjM0ZDdhMmM2Yzc3NDlkOTI1MWQ5N2E4MmM4NzhlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93TWVkaWFDb250
cm9sc0NvbnRleHRNZW51KFdlYkNvcmU6OkZsb2F0UmVjdCYmLCBWZWN0b3I8V2ViQ29yZTo6TWVk
aWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+JiYpIGZpbmFsOwogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhU
TUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxF
KFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpE
ZXZpY2VMaXN0Jik+JiYpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA0NDkwNzU1
ZmZmNzY4ZDQxMGI1MzU3ZmM2MTAyMjI2ZWY3ZWI1NmVlLi5lMTQxNTBiNWI4ZGE2YzE1NzA5YjMw
Y2FjMmE5ZGU0NjdkZTJiYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00NDMsMTUgKzQ0Myw2IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoRmxvYXRTaXplKHBs
dWdpbi0+cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOwogfQogCi0jaWYgRU5BQkxFKFdF
QlhSKQotUGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4clN5c3RlbVByb3h5KCkKLXsK
LSAgICBpZiAoIW1feHJTeXN0ZW1Qcm94eSkKLSAgICAgICAgbV94clN5c3RlbVByb3h5ID0gc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3IFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSgqdGhpcykpOwotICAgIHJldHVybiAqbV94clN5c3RlbVByb3h5OwotfQotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZTo6aGFuZGxlQ2xpY2tG
b3JEYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3RvckVsZW1lbnRJbmZvJiBpbmZv
LCBjb25zdCBJbnRQb2ludCYgY2xpY2tMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGU1YjFlNDVmZTI1N2MzMDEyYmEzMzhmMDVl
MDM2ODVhZGE5YTAyZS4uYzM4ZDQzZWMyYTM4M2RjNWE5OTY2M2U1MWRmNDRjODBiMjQyNGY3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcz
NDQsNiArNzM0NCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3Rl
bnRNb2RlQ2hhbmdlZCgpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAor
I2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCitQbGF0Zm9ybVhSU3lzdGVtUHJveHkm
IFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQoreworICAgIGlmICghbV94clN5c3RlbVByb3h5KQor
ICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3Rl
bVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7CisgICAgcmV0dXJuICpt
X3hyU3lzdGVtUHJveHk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZGVu
TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewogICAgIGlmIChtZWRpYVR5cGUg
PT0gbV9vdmVycmlkZGVuTWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDQ0YzZhYzI5YjQ5NzM4MTMwNzc0NWQ1OWRhM2M3MWI5NDg2MjVh
YTMuLmY0MmUyNzIwMWJmYjVhNDcwZjlkMzRiNTNiYzU1MGFkYmFmYTlkYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCB0
eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQ
TEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogI2luY2x1
ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgogI2VuZGlmCiAKQEAgLTE0NTcsNyArMTQ1Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlQ2hh
bmdlZCgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQor
I2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5JiB4clN5c3RlbVByb3h5KCk7CiAjZW5kaWYKIApAQCAtMjM1MCw3ICsyMzUwLDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+
LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4m
Jik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9uOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVT
RShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4gbV94
clN5c3RlbVByb3h5OwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1OWI5NmM3
Yjc3YzRjODg5M2NkMmRkOTRiNDAyODI1MDU4YzJjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcApAQCAtMCww
ICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUg
IlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJYUkRl
dmljZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBQ
bGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbVByb3h5
OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdl
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojp+UGxh
dGZvcm1YUlN5c3RlbVByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6RW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShWZWN0b3I8WFJEZXZpY2VJbmZvPiYmIGRldmljZXNJbmZvcykgbXV0YWJsZSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
UGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgZGV2aWNlczsKKyAgICAgICAgZm9yIChh
dXRvJiBkZXZpY2VJbmZvIDogZGV2aWNlc0luZm9zKSB7CisgICAgICAgICAgICBpZiAoYXV0byBk
ZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5pZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgICAgICBkZXZpY2VzLmFwcGVuZCgqZGV2aWNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChYUkRldmljZVByb3h5OjpjcmVhdGUoV1RGTW92
ZShkZXZpY2VJbmZvKSwgKnRoaXMpKTsKKyAgICAgICAgfQorICAgICAgICBtX2RldmljZXMuc3dh
cChkZXZpY2VzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9kZXZpY2VzKTsKKyAgICB9
KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0
ZW06OkluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpKTsKK30KKwordm9pZCBQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6cmVxdWVzdEZy
YW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lz
dGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmNyZWF0
ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpCit7CisgICAgcmV0dXJu
IFBsYXRmb3JtWFJDb29yZGluYXRvcjo6ZGVmYXVsdExheWVySGFuZGxlKCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzdWJtaXRGcmFtZSgpCit7CisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlN1Ym1pdEZyYW1lKCkpOworfQorCit2b2lkIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIgZGV2
aWNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZp
ZXIoZGV2aWNlSWRlbnRpZmllcikpCisgICAgICAgIGRldmljZS0+c2Vzc2lvbkRpZEVuZCgpOwor
fQorCitSZWZQdHI8WFJEZXZpY2VQcm94eT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpkZXZpY2VC
eUlkZW50aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgZm9yIChh
dXRvJiBkZXZpY2UgOiBtX2RldmljZXMpIHsKKyAgICAgICAgYXV0byogZGV2aWNlUHJveHkgPSBz
dGF0aWNfY2FzdDxYUkRldmljZVByb3h5Kj4oZGV2aWNlLnB0cigpKTsKKyAgICAgICAgaWYgKGRl
dmljZVByb3h5LT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVy
biBkZXZpY2VQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVkNDA5MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHku
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJYUkRl
dmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgeworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJik7
CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7CisKKyAgICB2b2lkIGVudW1l
cmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRm
b3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0
RnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKTsKKyAg
ICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFhSRGV2aWNlUHJv
eHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIpOworCisgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycwor
ICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIpOworCisgICAgUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOworICAgIFdlYlBhZ2UmIG1fcGFn
ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcwOTBhYzFmN2Y2MjRiNDk2ZGE1N2ExMGY5NjRlZjRkZDkxZjVj
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkg
Tm90UmVmQ291bnRlZCB7CisgICAgU2Vzc2lvbkRpZEVuZChXZWJLaXQ6OlhSRGV2aWNlSWRlbnRp
ZmllciBkZXZpY2VJZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVk
NDA5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRl
ICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJQYWdlOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQ
YWdlJik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7Ci0KLSAgICB2b2lk
IGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOwotICAgIHZvaWQgaW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpS
ZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6Okxh
eWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29s
KTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFhSRGV2
aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIpOwotCi0gICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAgLy8gTWVzc2FnZSBoYW5k
bGVycwotICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIpOwotCi0gICAg
UGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOwotICAgIFdlYlBhZ2Um
IG1fcGFnZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTQwNTc5
MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCWFIp
Ci0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKLSAg
ICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZp
ZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzZWZhNWI4ODJmZTZkOTdmMzFlNzhlNTFjM2QzMGZmZWE3MzNmZDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEx
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2ltcG9ydCAiUGxh
dGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMu
aCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJX
ZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0jaW1wb3J0ICJYUkRldmljZUluZm8u
aCIKLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZp
ZXIoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lz
dGVtUHJveHkoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpF
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBQbGF0Zm9ybVhS
OjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOwotICAgICAgICBmb3IgKGF1dG8mIGRldmlj
ZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRl
dmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUlu
Zm8pLCAqdGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMpOwotICAgIH0pOwotfQotCi12
b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIG1f
cGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVl
c3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9q
ZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlm
aWVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJ
ZGVudGlmaWVyKSkKLSAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLVJlZlB0
cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmll
cihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBmb3IgKGF1dG8mIGRldmlj
ZSA6IG1fZGV2aWNlcykgewotICAgICAgICBhdXRvKiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0
PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOwotICAgICAgICBpZiAoZGV2aWNlUHJveHkt
PmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIGRldmljZVBy
b3h5OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432922</attachid>
            <date>2021-07-06 07:09:53 -0700</date>
            <delta_ts>2021-07-06 07:34:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210706160952.patch</filename>
            <type>text/plain</type>
            <size>106481</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NDcxZjhkZTg5ODA4Yjk2
MGE0ZTQ2OThmZTdjN2ZjN2JlMzU2MzEuLmM3NTE4YjQ1YTE5ZTU1ZjlkOTQ4NjdlMjkxNWNlZTAx
NTY1MjgwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNy0wNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgog
CiAgICAgICAgIFtHVEs0XSBOYXZpZ2F0aW9uIHN3aXBlIGRvZXNuJ3Qgd29yayB3aGVuIHRoZSBw
YWdlIHNjcm9sbHMgaG9yaXpvbnRhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyYTdjYjg1NWE4
N2RkNjFhZWY2NzI2NjE4M2Y1MjQxNGJjNmUzM2E4Li4wOGY1MmU1Zjc4YjA0MjdiNDYyNzMwYTZi
NzdmNmZlNTIzYmFjOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBw
bGVQYXkiCkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
WFIiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNCw2ICsyMTcsOCBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
CisKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODMsNiArMjg4LDggQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFl
MDM0MTU0NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIx
ODk0MjJjNjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2Ev
QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZlMzI5Yjg5MGE4MWI4ZGNkMzhkZGZjMDFiZDU1YzMwNDVkNjZhMzIuLjc4YTc5Mjk2ZDE1
MmI3ZTM5ODkyZjEwNzhlNmNlYzAwMmUwNWIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgXApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJ
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBA
IC0yMjAsNyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIg
XApAQCAtMjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1
Nzc2NjViOWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQw
OGM4OTJhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
CiAgICAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1
ZWQwYjY4Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9
OwotdXNpbmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlk
ZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9
OwotICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxY
UkRldmljZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBi
OGRkY2IzMTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMg
PDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhS
RGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NmU0NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhS
RGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8WFJEZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZh
dGU6Ci0gICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRp
b247IH0KLSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAg
IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3Jt
WFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5
PiBtX3hyU3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMz
OGNmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJYUkRldmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNl
UHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQot
WFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vh
a1B0cih4clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlm
aWVyOwotICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
U3RlcmVvUmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2
aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJl
c29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRl
dmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMo
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+
c2Vzc2lvbkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsK
LSAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2
ZVZyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNl
UHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYm
IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3
cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3
czsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lz
dGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCi1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJT
eXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVl
OTlkMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZm
NGZlYTMwOTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZl
YXR1cmVzIDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVz
b2x1dGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2
aWNlRmVhdHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1
Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdm
MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQ
cm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJT
eXN0ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94
clN5c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2
aWNlSW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZp
Y2VJbmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAg
bV9yZWNvbW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlv
bjsKKyAgICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRF
bmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1
cmVzKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBp
ZiAodHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBz
ZXNzaW9uTW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAg
ICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxz
ZQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwor
ICAgIHJldHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RG
TW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/
IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRm
b3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBj
cmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2
aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVBy
b3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNv
cmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
KSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkxheWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAg
Ym9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBk
NDg4YTNkOTY2ZWM2NDFkOGRjZjY1MmZhMzdiMmI0OWQ5Y2Q0NWQ3Li5hZmQ1YTIwZjZlYjc5ZmVm
MmZkMjQxOWUxNDJiNTVhM2FjZDlkMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI4Nyw2ICsyODcsOSBA
QCBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgQG5vLXVuaWZ5
CiAKIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAorU2hhcmVkL1hSL1hSRGV2
aWNlSW5mby5jcHAKK1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorCiBVSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAK
QEAgLTUwMyw2ICs1MDYsOCBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKIAorVUlQ
cm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCisKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRo
bkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9j
ZXNzLmNwcAogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKQEAgLTcyMSw4ICs3MjYsMTIgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
IAorV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCisKIFJUQ0RhdGFDaGFu
bmVsUmVtb3RlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNl
aXZlci5jcHAKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAppbmRleCA0MDUwYzQwM2M0NmQ1NjRjMmU5ODNjNWYyNjU1NTFjNjk3NWNl
OGZkLi4zZTQyMTJhMjg2ZGVhMDY1Y2MwNmU3YmRlYTQ5N2VkMTIzYTI0M2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xODUsOCArMTg1LDYgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRy
YXMubW0KIFNoYXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2Jq
ZWN0Lm1tCiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0K
LVNoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KLVNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
Lm1tCiAKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTQwMyw3ICs0MDEsNyBAQCBVSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVt
ZW50Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQotVUlQcm9jZXNzL0NvY29h
L1BsYXRmb3JtWFJTeXN0ZW0ubW0KK1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0
b3IubW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1Nh
ZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNTk5LDcgKzU5Nyw2IEBAIFdlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAogCiBXZWJQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvckNvY29hLm1tCiAKLVdlYlByb2Nlc3MvY29jb2Ev
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubW0KIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwCiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC03
MTYsOCArNzEzLDYgQEAgR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzTWVzc2FnZVJlY2Vp
dmVyLmNwcAogTWVzc2FnZU5hbWVzLmNwcAotUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZl
ci5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9IYXJk
d2FyZUxpc3RlbmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMx
NjExOGZjZjZmNzFlNDVkOWRjNWVkNDY2YWM3NDg3MDdhM2NjMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1
ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgflBsYXRmb3JtWFJDb29y
ZGluYXRvcigpID0gZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgYW5kIHdpbGwg
YmUgZml4ZWQgbGF0ZXIuCi0gICAgc3RhdGljIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGRlZmF1
bHRMYXllckhhbmRsZSgpIHsgcmV0dXJuIDE7IH0KLQotICAgIHVzaW5nIERldmljZUluZm9DYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+KT47Ci0gICAg
dmlydHVhbCB2b2lkIGdldFByaW1hcnlEZXZpY2VJbmZvKERldmljZUluZm9DYWxsYmFjayYmKSA9
IDA7Ci0KLSAgICAvLyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0aW9uLgotICAgIHVzaW5nIE9u
U2Vzc2lvbkVuZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRldmljZUlkZW50aWZpZXIpPjsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9uU2Vzc2lvbkVu
ZENhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklmRXhpc3RzKFdl
YlBhZ2VQcm94eSYpID0gMDsKLQotICAgIC8vIFNlc3Npb24gZGlzcGxheSBsb29wLgotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFBsYXRmb3Jt
WFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzdWJtaXRGcmFtZShXZWJQYWdlUHJveHkmKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVk
ZDVhNTVkMDRjYmQ2ZjBiOTkwMzVmMTBmY2JiNWRjNDJiN2I5OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0K
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhS
U3lzdGVtQWRkaXRpb25zLm1tPgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxhdGZvcm1YUlN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
dGZvcm1YUlN5c3RlbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDQ0YWQxNmU5
OTRiOTc2M2VlNWQ2ZWNlZWUwODU4M2RhMTdhZmZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRm
b3JtWFJTeXN0ZW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOwotY2xhc3MgV2ViUGFnZVBy
b3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDog
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOwotICAgIHZp
cnR1YWwgflBsYXRmb3JtWFJTeXN0ZW0oKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3Io
KTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLQotICAgIC8vIE1l
c3NhZ2UgaGFuZGxlcnMKLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKLSAgICB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOwotICAgIHZvaWQgc2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpOwotICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOwotICAgIHZvaWQg
c3VibWl0RnJhbWUoKTsKLQotICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdl
cy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ1M2FhZDkwYzMxNzZiOGJhMWY4
NmZjMGYzOTVkMmQwMDA0NjYwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0g
Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxh
dGZvcm1YUlN5c3RlbSBOb3RSZWZDb3VudGVkIHsKLSAgICBFbnVtZXJhdGVJbW1lcnNpdmVYUkRl
dmljZXMoKSAtPiAoVmVjdG9yPFdlYktpdDo6WFJEZXZpY2VJbmZvPiBkZXZpY2VzSW5mb3MpIEFz
eW5jCi0gICAgSW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLSAgICBTaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKLSAgICBSZXF1ZXN0RnJhbWUoKSAtPiAoc3RydWN0IFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkgQXN5bmMKLSAgICBTdWJtaXRGcmFt
ZSgpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxhdGZvcm1YUlN5c3RlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXRmb3JtWFJTeXN0ZW0ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZjNkN2Y0
OThjNmJjMzFlZTUwNzczOGQyMTI1OTRlN2Y5YzZmYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
dGZvcm1YUlN5c3RlbS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtLmgiCi0K
LSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgot
I2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhS
U3lzdGVtUHJveHlNZXNzYWdlcy5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJT
eXN0ZW06OlBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5JiBwYWdlKQotICAgIDogbV9wYWdl
KHBhZ2UpCi17Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBh
Z2VJRCgpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVt
KCkKLXsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFn
ZUlEKCkpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmludmFsaWRhdGUoKQotewotICAg
IGlmICh4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lv
bklmRXhpc3RzKG1fcGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNl
SW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRv
ciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRp
bmF0b3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBpZiAoIWRldmljZUluZm8pIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRm
b3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHhyQ29vcmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2Us
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmlj
ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhp
cywgZGV2aWNlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eTo6U2Vzc2lvbkRpZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxh
dGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5l
bmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpy
ZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogeHJDb29y
ZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJD
b29yZGluYXRvci0+c2NoZWR1bGVBbmltYXRpb25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzdWJtaXRGcmFtZSgp
Ci17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNv
b3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnN1Ym1pdEZyYW1lKG1fcGFnZSk7
Ci19Ci0KLX0KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL1BsYXRmb3JtWFJTeXN0ZW1BZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJDb29yZGluYXRvciogUGxhdGZvcm1YUlN5c3RlbTo6eHJD
b29yZGluYXRvcigpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KLSNlbmRpZgotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMzdkNmJhNmJjYjYyODU1OGJlYTdhNWU4ZDlmNDBkY2Q1NTBlMGUyZC4uODAy
YzZjZWMzNjUyYjc1NGUyZGFlNDcxZWVjNDQyNTA4ZTI1MDIxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAgICAgbV93ZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgPSBtYWtlVW5pcXVlPFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VC
WFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIp
CiAgICAgQVNTRVJUKCFtX3hyU3lzdGVtKTsKICAgICBtX3hyU3lzdGVtID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVhSU3lzdGVtPigqdGhpcyk7CiAjZW5kaWYKQEAgLTc4MTQsNyArNzgxNCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJl
YXNvbikKIAogICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxw
dHI7CiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShX
RUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgaWYgKG1feHJTeXN0ZW0pIHsKICAgICAgICAgbV94
clN5c3RlbS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX3hyU3lzdGVtID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWQ3NDRmZWVhNWQ2ZTlhMWVk
ZTE1MGM0YzQwZTUxN2JkMjY1NjVhNS4uYmU2MjdjNWM5YTFhOWFiOGMwMTY1Y2VlOWQyYTIyNTA4
MTU1MjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4NSw3
ICsxODUsNyBAQCBpbnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQ
TEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogI2luY2x1
ZGUgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKICNlbmRpZgogCkBAIC0zMDYyLDcgKzMwNjIsNyBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKIAotI2lmIEVOQUJMRShXRUJYUikgJiYg
UExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbT4gbV94clN5c3RlbTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJYUkRldmljZUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICAv
LyBGSVhNRTogVGVtcG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgorICAgIHN0YXRpYyBQ
bGF0Zm9ybVhSOjpMYXllckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJldHVybiAxOyB9
CisKKyAgICB1c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0
aW9uYWw8WFJEZXZpY2VJbmZvPik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQcmltYXJ5RGV2aWNl
SW5mbyhEZXZpY2VJbmZvQ2FsbGJhY2smJikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBjcmVhdGlv
bi90ZXJtaW5hdGlvbi4KKyAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoWFJEZXZpY2VJZGVudGlmaWVyKT47CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vzc2lv
bihXZWJQYWdlUHJveHkmLCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGVuZFNlc3Npb25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7CisKKyAgICAvLyBT
ZXNzaW9uIGRpc3BsYXkgbG9vcC4KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb25G
cmFtZShXZWJQYWdlUHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFnZVByb3h5Jikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW0uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmNlMmNiYTY2NzllNTM2ZGY3NzRiNDIwYTAzYTIwMWUxYjFjY2IwZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW0uY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShXRUJYUikKKwor
I2luY2x1ZGUgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJT
eXN0ZW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhS
U3lzdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIG1f
cGFnZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lz
dGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMpOwor
fQorCitQbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCit7CisgICAgbV9wYWdl
LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0
ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoeHJDb29yZGluYXRv
cigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2Up
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lz
dGVtOjp4ckNvb3JkaW5hdG9yKCk7CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB4
ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRl
dmljZUluZm8pIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8g
PSBXVEZNb3ZlKGRldmljZUluZm8pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFkZXZp
Y2VJbmZvKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgZGV2aWNlSW5mby52YWx1ZSgpIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKQoreworICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNv
b3JkaW5hdG9yKCk7CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisK
KyAgICB4ckNvb3JkaW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZp
ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OlNlc3Npb25EaWRFbmQoZGV2aWNlSWRlbnRpZmllcikpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5n
KCkKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06Onhy
Q29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3Rz
KG1fcGFnZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9y
bVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVk
dWxlQW5pbWF0aW9uRnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQoreworICAgIGlmIChhdXRv
KiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAg
ICAgICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOworfQorCit9CisKKyNpZiAh
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhS
Q29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQoreworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZGFlNDUzZDcyY2M3MjY0MTE1ZTg4OGRhYzEzNjBiNTRkYzZkYzQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOworY2xhc3MgV2Vi
UGFnZVByb3h5OworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvOworCitjbGFzcyBQbGF0Zm9ybVhSU3lz
dGVtIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOwor
ICAgIHZpcnR1YWwgflBsYXRmb3JtWFJTeXN0ZW0oKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
OworCitwcml2YXRlOgorICAgIHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRp
bmF0b3IoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1dERv
d25UcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOworICAg
IHZvaWQgc3VibWl0RnJhbWUoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjRjOGJiNjI2NDY5MzRiMDY2MmVmMTNiZTE2MWVkNTJmNTJiYmVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1Y
UlN5c3RlbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZiBF
TkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRl
ZCB7CisgICAgRW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6
OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0luZm9zKSBBc3luYworICAgIEluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZygpCisgICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAg
UmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBm
cmFtZURhdGEpIEFzeW5jCisgICAgU3VibWl0RnJhbWUoKQorfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyMzU2NDc2
NmUyMzAxZjQxOTZmZTJiZjIwMjk2NWQwMjcwYjhmMzIuLjEwMjA5M2YyMDkxZjFkNGUxOGExNjQx
ZjBjNzNjMDNlYjE3MTUzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTExNCwxMiArMTExNCw2IEBACiAJCTUxRkFFQzNBMUIwNjU3
NjMwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM3MUIwNjU3MzEwMDA5QzRFNyAv
KiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAw
MDlDNEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlD
NEU3IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUZE
MThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBE
QkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07Ci0JCTUyNTA4MEIxMjYxQkRF
NkMwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRl
dmljZUlkZW50aWZpZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhS
RGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9OwotCQk1
MjYzRTI1NzI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThENDdE
IC8qIFhSRGV2aWNlUHJveHkuaCAqLzsgfTsKLQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8q
IFBsYXRmb3JtWFJDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29y
ZGluYXRvci5oICovOyB9OwotCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UlN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsKLQkJ
NTI2M0UyNUYyNjFFOTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFFOTZE
RjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRDOTFF
NzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8q
IFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2Fy
ZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTlGMjgxMDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJE
NUExQjAxQzU3NDk1QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3
NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpAQCAt
MjU2Nyw2ICsyNTYxLDE5IEBACiAJCTBGRkVEOThGMjNBMzIwMzcwMEVFRjQ1OSAvKiBXS1dlYlZp
ZXdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZp
ZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkVEOTkwMjNBMzIwMzgw
MEVFRjQ1OSAvKiBXS1dlYlZpZXdNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJWaWV3TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThDN0Ix
RkVBNTU4NUUxMUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENv
Y29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZy
YW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMTE4NTAyNTYyNjczQjAx
NjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAy
NTcyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3Rl
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVCMjY3M0IwNzEwMEE2
NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVDMjY3
M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtWFJTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUQyNjcz
QjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZv
cm1YUlN5c3RlbS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4
NTAyNUUyNjczQjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjEyNjczQjBEQTAwQTY0MjVF
IC8qIFhSRGV2aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJE
ZXZpY2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhS
RGV2aWNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8q
IFhSRGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZUluZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyog
WFJEZXZpY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lv
blN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLU2Vz
c2lvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRjE5NkIz
Mjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTAwMkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxODgsMTggKzQxOTUsNiBAQAogCQk1
MUZCMDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgcGF0aCA9
IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRl
dmljZUluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRl
dmljZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFFMjYxQkRF
NkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUyNTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0
Zm9ybVhSU3lzdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NDI2MUU3M0RF
MDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUUyNjFFOTZF
MDAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0
aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNzJENEM4MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VO
Uy5tbTsgcGF0aCA9IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQz
NSw2ICs2NDMwLDM5IEBACiAJCQluYW1lID0gIk90aGVyIEZyYW1ld29ya3MiOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhS
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1
ODI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLywKKwkJCQkx
MTg1MDI1NjI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCisJ
CQkJMTE4NTAyNTcyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNz
YWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjVCMjY3M0IwNzEwMEE2
NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKKwkJCQkxMTg1MDI1QTI2NzNCMDcx
MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5jcHAgKi8sCisJCQkJMTE4NTAyNUMyNjczQjA3
MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKKwkJCQkxMTg1MDI1RDI2NzNCMDcx
MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlw
YXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxMTg1MDI2MDI2
NzNCMERBMDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZp
ZXIuaCAqLywKKwkJCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNw
cCAqLywKKwkJCQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmggKi8s
CisJCQkJMTE4NTAyNjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovLAor
CQkJCTExODUwMjYxMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmggKi8sCisJCQkp
OworCQkJcGF0aCA9IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUEw
RUM2QjAxMjRCQkQzNjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNjcwMSw2ICs2NzI5LDcgQEAKIAkJCQkxQUFF
MDU4QzEyNzlEQ0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRG
MDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJUcmVlICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNG
QjBFNiAvKiBXZWJzaXRlRGF0YSAqLywKKwkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyog
WFIgKi8sCiAJCQkJRTNCQ0U4NzcyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVm
ZXJlbmNlcy5jcHAgKi8sCiAJCQkJRTNCQ0U4NzgyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2li
aWxpdHlQcmVmZXJlbmNlcy5oICovLAogCQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNCRSAvKiBB
Y3Rpdml0eUFzc2VydGlvbi5jcHAgKi8sCkBAIC03MDU5LDEwICs3MDg4LDcgQEAKIAkJCQkxQUJD
M0RGMzE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tICovLAogCQkJCTVDNkNF
NkQzMUY1OUVBMzUwMDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmggKi8sCiAJCQkJNUM2
Q0U2RDAxRjU5QkM0NjAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0gKi8sCi0JCQkJ
NTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovLAot
CQkJCTUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8sCi0J
CQkJNTI2M0UyNTAyNjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMu
aW4gKi8sCi0JCQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0u
bW0gKi8sCisJCQkJMTE4NTAyNUUyNjczQjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGlu
YXRvci5tbSAqLywKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFD
QkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLApAQCAt
ODM0NywxMSArODM3Myw2IEBACiAJCQkJQzE0RDMwNjUyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0Vu
ZHBvaW50Lm1tICovLAogCQkJCUMxNEQzMDY4MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2lu
dENsaWVudC5oICovLAogCQkJCUMxNEQzMDY2MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2lu
dENsaWVudC5tbSAqLywKLQkJCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJ
ZGVudGlmaWVyLmggKi8sCi0JCQkJNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNl
SW5mby5oICovLAotCQkJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8u
bW0gKi8sCi0JCQkJNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAq
LywKLQkJCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC05MzQxLDkgKzkz
NjIsNiBAQAogCQkJCUMxQTE1MkQ2MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2lu
dE1lc3NhZ2VzLm1tICovLAogCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5oICovLAogCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAx
NCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKLQkJCQk1MjYzRTI1RDI2
MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCi0JCQkJNTI2M0Uy
NUUyNjFFOTZFMDAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAq
LywKLQkJCQk1MjYzRTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5
Lm1tICovLAogCQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05ODA5LDYgKzk4
MjcsNyBAQAogCQkJCUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAvKiBXZWJDb3JlU3VwcG9ydCAq
LywKIAkJCQlCQzAzMkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLywKIAkJCQkxQUFD
NERERTE2QjFDQkY2MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywKKwkJCQkxMTg1MDI1NTI2NzNC
MDE2MDBBNjQyNUUgLyogWFIgKi8sCiAJCQkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAgKi8sCiAJCQkJQkNFOUMwRDAxNDg1OTY1RDAwRTMz
RDYxIC8qIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICovLAogCQkJCUJDMTExQUUzMTEyRjVD
MjYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzLmNwcCAqLywKQEAgLTk5NzQsNiArOTk5Myw3IEBACiAJ
CQkJMUFBRjA4OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTU3NjA4
Mjk0MjAyQkQ4NDkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkxQTUzQzJB
MzFBMzI1NjkxMDA0RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCisJCQkJMTE4NTAyNTkyNjczQjA3
MTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAv
KiBBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RF
REEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKQEAgLTEy
MTk3LDkgKzEyMjE3LDYgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg5NDlGMTE4MjA0
NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyog
UGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QjI2MUU5
M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2
M0UyNUYyNjFFOTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RB
MjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzA5Niw5ICsxMzExMyw2IEBACiAJCQkJQzE1RTZDQjMyNEI3
QkU2RjAwRTUwMUEyIC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTVFNkNC
NDI0QjdCRTc2MDBFNTAxQTIgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQkVDREU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8q
IFhSRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNTcyNjFFNzNERjAwMThE
NDdEIC8qIFhSRGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCA4OWYwNWQ1Y2M3MDY0YWNlZTQ1Y2YwOWE1MzAxNDNiNWUzYTJmZTFkLi4zMDc3NmEw
MGRiMDc0ZjJkMTk3ZDI3YTAwMDg5MjkyYjU4ODA3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtMTUwMyw3ICsxNTAzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhU
TUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxF
KFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJhdGVJ
bW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhS
OjpJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1f
cGFnZS54clN5c3RlbVByb3h5KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYjVjOWU4ODg3MDk2
ZDc5NjFiMGRiZTM1MDNmOWI4NDYyNmFmNzMzLi5jMTUxMmY5OTg3NWQ5OTcwNzQ1ZjYyYzY1ZjVk
YjI5NTIxMTE1NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6Rmxv
YXRSZWN0JiYsIFZlY3RvcjxXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW06OklEKT4mJikgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xTX0NP
TlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdFQlhSKSAm
JiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAg
IHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCmluZGV4IDQ0OTA3NTVmZmY3NjhkNDEwYjUzNTdmYzYxMDIyMjZlZjdl
YjU2ZWUuLmUxNDE1MGI1YjhkYTZjMTU3MDliMzBjYWMyYTlkZTQ2N2RlMmJhYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KQEAgLTQ0MywxNSArNDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VT
aXplKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAgICBj
b21wbGV0aW9uSGFuZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQcmlu
dGluZygpKSk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHkm
IFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQotewotICAgIGlmICghbV94clN5c3RlbVByb3h5KQot
ICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3Rl
bVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7Ci0gICAgcmV0dXJuICpt
X3hyU3lzdGVtUHJveHk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
IAogdm9pZCBXZWJQYWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1bHQoY29uc3Qg
RGF0YURldGVjdG9yRWxlbWVudEluZm8mIGluZm8sIGNvbnN0IEludFBvaW50JiBjbGlja0xvY2F0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBhY2Y4MmM5NmRmYjdhYzJlZGVlMDFlYTg4YTY3NmRmMjMzMzViMGY5Li43M2Q0ZjAxMTY4Njg5
ODY1ZTM5ZDZiNmVlNzIyNmQyOTc1OTM1ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzM1MSw2ICs3MzUxLDE1IEBAIHZvaWQgV2ViUGFn
ZTo6dGV4dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCkKIH0KICNlbmRpZiAv
LyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9Q
RU5YUikKK1BsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSgpCit7
CisgICAgaWYgKCFtX3hyU3lzdGVtUHJveHkpCisgICAgICAgIG1feHJTeXN0ZW1Qcm94eSA9IHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkoKnRoaXMpKTsKKyAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKK30KKyNlbmRpZgor
CiB2b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpCiB7CiAgICAgaWYgKG1lZGlhVHlwZSA9PSBtX292ZXJyaWRkZW5NZWRpYVR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjU0NTFmMDk2
MjcxYjU0ZjQyYjQ0NGZkYjZlNDVlZTU2NGE3MWUxOC4uZDVjYjViMTk3YjlkYzIzZjdmOTFlODUw
YWRmYjgxZGEwNDVlODM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRr
T2JqZWN0OwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShX
RUJYUikgJiYgIVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmgi
CiAjZW5kaWYKIApAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dEF1
dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9Q
RU5YUikKICAgICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRp
ZgogCkBAIC0yMzYyLDcgKzIzNjIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8
V2Vha1B0cjxXZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdUZXh0
UmVjb2duaXRpb247CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CiAjZW5kaWYKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUwNThj
MmNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Y
UlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQ
YWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQor
CitQbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVu
dGlmaWVyKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1t
ZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRl
dmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUlu
Zm8+JiYgZGV2aWNlc0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNl
TGlzdCBkZXZpY2VzOworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5m
b3MpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihk
ZXZpY2VJbmZvLmlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpk
ZXZpY2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5k
KFhSRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOworICAg
ICAgICB9CisgICAgICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtX2RldmljZXMpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVu
ZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06OlNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1
ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1
aW50MzJfdCwgYm9vbCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZh
dWx0TGF5ZXJIYW5kbGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1p
dEZyYW1lKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6
U3VibWl0RnJhbWUoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9u
RGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlmIChh
dXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5PiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgewor
ICAgICAgICBhdXRvKiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihk
ZXZpY2UucHRyKCkpOworICAgICAgICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBp
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKworICAg
IHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUy
ZThjYzc0NDk2ZWQ0MDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlhSRGV2aWNlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUGxh
dGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lz
dGVtUHJveHkoKTsKKworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3Qm
KT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2
b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFt
ZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1
aW50MzJfdCwgdWludDMyX3QsIGJvb2wpOworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2
aWNlSWRlbnRpZmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2
aWNlSWRlbnRpZmllcik7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBt
X2RldmljZXM7CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Y
Ui9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFjMWY3
ZjYyNGI0OTZkYTU3YTEwZjk2NGVmNGRkOTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21lc3Nh
Z2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9u
RGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0ZGU1
MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2lu
Y2x1ZGUgIlhSRGV2aWNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0g
ICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVhSU3lzdGVtUHJveHkoKTsKLQotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmlj
ZUxpc3QmKT4mJik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsK
LSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVl
c3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAg
IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVj
dGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUoKTsK
LQotcHJpdmF0ZToKLSAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVy
KFhSRGV2aWNlSWRlbnRpZmllcik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5k
KFhSRGV2aWNlSWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNl
TGlzdCBtX2RldmljZXM7Ci0gICAgV2ViUGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgy
OTNkNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdl
cy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5
c3RlbVByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRl
dmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3OGU1
MWMzZDMwZmZlYTczM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0jaWYg
RU5BQkxFKFdFQlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBv
cnQgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3Rl
bVByb3h5TWVzc2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nl
c3MuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
Ci11c2luZyBuYW1lc3BhY2UgUGxhdGZvcm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2Up
Ci0gICAgOiBtX3BhZ2UocGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7
Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRl
dmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZp
Y2VzSW5mb3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmlj
ZXM7Ci0gICAgICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewotICAg
ICAgICAgICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8u
aWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQ
cm94eTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9kZXZpY2VzLnN3YXAoZGV2aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fZGV2aWNlcyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7
Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6
U2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2sp
KTsKLX0KLQotc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1Y
UlN5c3RlbVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBi
b29sKQotewotICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhh
bmRsZSgpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUoKQot
ewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRGcmFt
ZSgpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJE
ZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNl
ID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZpY2Ut
PnNlc3Npb25EaWRFbmQoKTsKLX0KLQotUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAgIGF1
dG8qIGRldmljZVByb3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIo
KSk7Ci0gICAgICAgIGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIp
Ci0gICAgICAgICAgICByZXR1cm4gZGV2aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQo=
</data>
<flag name="commit-queue"
          id="455010"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432926</attachid>
            <date>2021-07-06 07:33:59 -0700</date>
            <delta_ts>2021-07-06 07:58:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210706163357.patch</filename>
            <type>text/plain</type>
            <size>107037</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NDcxZjhkZTg5ODA4Yjk2
MGE0ZTQ2OThmZTdjN2ZjN2JlMzU2MzEuLmM3NTE4YjQ1YTE5ZTU1ZjlkOTQ4NjdlMjkxNWNlZTAx
NTY1MjgwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNy0wNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgog
CiAgICAgICAgIFtHVEs0XSBOYXZpZ2F0aW9uIHN3aXBlIGRvZXNuJ3Qgd29yayB3aGVuIHRoZSBw
YWdlIHNjcm9sbHMgaG9yaXpvbnRhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyYTdjYjg1NWE4
N2RkNjFhZWY2NzI2NjE4M2Y1MjQxNGJjNmUzM2E4Li4wOGY1MmU1Zjc4YjA0MjdiNDYyNzMwYTZi
NzdmNmZlNTIzYmFjOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBw
bGVQYXkiCkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
WFIiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNCw2ICsyMTcsOCBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
CisKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODMsNiArMjg4LDggQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFl
MDM0MTU0NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIx
ODk0MjJjNjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2Ev
QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZlMzI5Yjg5MGE4MWI4ZGNkMzhkZGZjMDFiZDU1YzMwNDVkNjZhMzIuLjc4YTc5Mjk2ZDE1
MmI3ZTM5ODkyZjEwNzhlNmNlYzAwMmUwNWIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgXApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJ
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBA
IC0yMjAsNyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIg
XApAQCAtMjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1
Nzc2NjViOWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQw
OGM4OTJhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
CiAgICAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1
ZWQwYjY4Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9
OwotdXNpbmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlk
ZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9
OwotICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxY
UkRldmljZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBi
OGRkY2IzMTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMg
PDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhS
RGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NmU0NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhS
RGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8WFJEZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZh
dGU6Ci0gICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRp
b247IH0KLSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAg
IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3Jt
WFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5
PiBtX3hyU3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMz
OGNmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJYUkRldmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNl
UHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQot
WFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vh
a1B0cih4clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlm
aWVyOwotICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
U3RlcmVvUmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2
aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJl
c29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRl
dmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMo
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+
c2Vzc2lvbkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsK
LSAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2
ZVZyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNl
UHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYm
IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3
cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3
czsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lz
dGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCi1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJT
eXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVl
OTlkMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZm
NGZlYTMwOTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZl
YXR1cmVzIDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVz
b2x1dGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2
aWNlRmVhdHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1
Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdm
MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQ
cm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJT
eXN0ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94
clN5c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2
aWNlSW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZp
Y2VJbmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAg
bV9yZWNvbW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlv
bjsKKyAgICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRF
bmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1
cmVzKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBp
ZiAodHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBz
ZXNzaW9uTW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAg
ICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxz
ZQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwor
ICAgIHJldHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RG
TW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/
IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRm
b3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBj
cmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2
aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVBy
b3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNv
cmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
KSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkxheWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAg
Ym9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQ3Vyc29yLmNwcAppbmRleCBmYmU0MjI3MzA2ZjgwZjYxYzEyN2MzMzhjNzFlZmE1NGEyZDIw
Yzg3Li45NmI2ZTFmNjgxMWRmMjMzNzVlOTVkNDAyMjgzYTU4NjBlNzE1MmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJNX0ZPUk1BVF9SRUFERVIpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFUcmFja1JlYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NhbXBsZU1hcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDQ4OGEzZDk2NmVjNjQx
ZDhkY2Y2NTJmYTM3YjJiNDlkOWNkNDVkNy4uYWZkNWEyMGY2ZWI3OWZlZjJmZDI0MTllMTQyYjU1
YTNhY2Q5ZDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODcsNiArMjg3LDkgQEAgU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIEBuby11bmlmeQogCiBTaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCiAKK1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCitT
aGFyZWQvWFIvWFJEZXZpY2VQcm94eS5jcHAKKwogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5jcHAKIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwCiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC01MDMsNiArNTA2
LDggQEAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCiAKK1VJUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtLmNwcAorCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKIFdlYkF1
dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03MjEs
OCArNzI2LDEyIEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCiAKK1dlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcAorCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKK1BsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIuY3BwCitQbGF0
Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggNDA1MGM0MDNjNDZkNTY0YzJlOTgzYzVmMjY1NTUxYzY5NzVjZThmZC4uM2U0MjEyYTI4
NmRlYTA2NWNjMDZlN2JkZWE0OTdlZDEyM2EyNDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtMTg1LDggKzE4NSw2IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCiBTaGFyZWQv
Q29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9XS09iamVjdC5tbQogU2hhcmVk
L0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tCi1TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VJbmZvLm1tCi1TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQogCiBTaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50
Lm1tCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VNYWluLm1tCkBAIC00MDMsNyArNDAxLDcgQEAgVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KLVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tCitVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCiBVSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2Ev
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW0KQEAgLTU5OSw3ICs1OTcsNiBAQCBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAKIAogV2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDb2NvYS5tbQogCi1XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBX
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNzE2LDggKzcxMyw2IEBA
IEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKIE1lc3Nh
Z2VOYW1lcy5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIuY3BwCi1QbGF0Zm9y
bVhSU3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29y
ZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3Jk
aW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMTYxMThmY2Y2ZjcxZTQ1
ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJYUkRldmljZUlk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtWFIuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5h
dG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVy
LgotICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUo
KSB7IHJldHVybiAxOyB9Ci0KLSAgICB1c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPik+OwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJbmZvQ2FsbGJhY2smJikgPSAwOwotCi0gICAgLy8g
U2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlvbi4KLSAgICB1c2luZyBPblNlc3Npb25FbmRDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZpY2VJZGVudGlmaWVyKT47Ci0gICAgdmlydHVhbCB2
b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJveHkmLCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNlc3Npb25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9
IDA7Ci0KLSAgICAvLyBTZXNzaW9uIGRpc3BsYXkgbG9vcC4KLSAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdlUHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJl
cXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUo
V2ViUGFnZVByb3h5JikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGQ1YTU1ZDA0Y2JkNmYw
Yjk5MDM1ZjEwZmNiYjVkYzQyYjdiOTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJD
b29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUlN5c3RlbUFkZGl0aW9u
cy5tbT4KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0NGFkMTZlOTk0Yjk3NjNlZTVkNmVj
ZWVlMDg1ODNkYTE3YWZmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotc3RydWN0
IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVhSU3lzdGVtKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7Ci0KLSAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
Ci0gICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7
Ci0KLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTNhYWQ5MGMzMTc2YjhiYTFmODZmYzBmMzk1ZDJkMDAw
NDY2MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgor
KysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0g
Tm90UmVmQ291bnRlZCB7Ci0gICAgRW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZl
Y3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0luZm9zKSBBc3luYwotICAgIEluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpCi0gICAgUmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFzeW5jCi0gICAgU3VibWl0RnJhbWUoKQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2YzZDdmNDk4YzZiYzMxZWU1MDc3
MzhkMjEyNTk0ZTdmOWM2ZmMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVz
c2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1By
b3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9y
bVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQotewotICAg
IG1fcGFnZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhS
U3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMp
OwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCi17Ci0gICAgbV9w
YWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJT
eXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKLX0KLQot
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAoeHJDb29yZGlu
YXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3Bh
Z2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhS
U3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB4ckNvb3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRldmljZUluZm8pIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUlu
Zm8gPSBXVEZNb3ZlKGRldmljZUluZm8pXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFk
ZXZpY2VJbmZvKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgZGV2aWNlSW5mby52YWx1ZSgpIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4
ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB4ckNvb3JkaW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50
aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6OlNlc3Npb25EaWRFbmQoZGV2aWNlSWRlbnRpZmllcikpOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhp
c3RzKG1fcGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0
Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnNj
aGVkdWxlQW5pbWF0aW9uRnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQotewotICAgIGlmIChh
dXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQot
ICAgICAgICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOwotfQotCi19Ci0KLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0
Zm9ybVhSU3lzdGVtQWRkaXRpb25zLm1tPgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1Q
bGF0Zm9ybVhSQ29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQot
ewotICAgIHJldHVybiBudWxscHRyOwotfQotCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM3
ZDZiYTZiY2I2Mjg1NThiZWE3YTVlOGQ5ZjQwZGNkNTUwZTBlMmQuLjgwMmM2Y2VjMzY1MmI3NTRl
MmRhZTQ3MWVlYzQ0MjUwOGUyNTAyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0
dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9S
TShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIEFTU0VSVCgh
bV94clN5c3RlbSk7CiAgICAgbV94clN5c3RlbSA9IG1ha2VVbmlxdWU8UGxhdGZvcm1YUlN5c3Rl
bT4oKnRoaXMpOwogI2VuZGlmCkBAIC03ODE0LDcgKzc4MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAKICAgICBt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogCi0jaWYgRU5B
QkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0Uo
T1BFTlhSKQogICAgIGlmIChtX3hyU3lzdGVtKSB7CiAgICAgICAgIG1feHJTeXN0ZW0tPmludmFs
aWRhdGUoKTsKICAgICAgICAgbV94clN5c3RlbSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVkNzQ0ZmVlYTVkNmU5YTFlZGUxNTBjNGM0MGU1MTdi
ZDI2NTY1YTUuLmJlNjI3YzVjOWExYTlhYjhjMDE2NWNlZTlkMmEyMjUwODE1NTIwYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODUsNyArMTg1LDcgQEAgaW50
ZXJmYWNlIElEM0QxMURldmljZTE7CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25JZGVu
dGlmaWVyLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICNpbmNsdWRlICJQbGF0Zm9ybVhS
U3lzdGVtLmgiCiAjZW5kaWYKIApAQCAtMzA2Miw3ICszMDYyLDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ7CiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09B
KQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MzE2MTE4ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2EzY2MwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZp
Y2VJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgLy8gRklYTUU6IFRlbXBv
cmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KKyAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQorCisgICAgdXNpbmcg
RGV2aWNlSW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNl
SW5mbz4pPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5m
b0NhbGxiYWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24u
CisgICAgdXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNl
SWRlbnRpZmllcik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5
JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNz
aW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBkaXNwbGF5
IGxvb3AuCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVBy
b3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBhZ2VQcm94eSYpIHsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJj
ZTJjYmE2Njc5ZTUzNmRmNzc0YjQyMGEwM2EyMDFlMWIxY2NiMGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcApAQCAtMCww
ICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVhSU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5c3RlbShXZWJQYWdl
UHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBtX3BhZ2UucHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1Y
UlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQoreworICAgIG1fcGFnZS5wcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5
c3RlbTo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAg
eHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGlu
YXRvcigpOworICAgIGlmICgheHJDb29yZGluYXRvcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHJDb29yZGluYXRvci0+
Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZpY2VJbmZvKSBtdXRh
YmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZpY2VJbmZvID0gV1RGTW92ZShkZXZp
Y2VJbmZvKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghZGV2aWNlSW5mbykgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGRl
dmljZUluZm8udmFsdWUoKSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBh
dXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOwor
ICAgIGlmICgheHJDb29yZGluYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHJDb29yZGlu
YXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJZGVudGlmaWVyXSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5t
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpTZXNzaW9uRGlkRW5k
KGRldmljZUlkZW50aWZpZXIpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgaWYg
KGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkp
CisgICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOworfQor
Cit2b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJD
b29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5zY2hlZHVsZUFuaW1hdGlvbkZy
YW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFBsYXRm
b3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRv
ciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGlu
YXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKK30KKworfQorCisjaWYgIVVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiBQ
bGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RhZTQ1M2Q3
MmNjNzI2NDExNWU4ODhkYWMxMzYwYjU0ZGM2ZGM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwor
c3RydWN0IFhSRGV2aWNlSW5mbzsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybVhSU3lzdGVtKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCisgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7CisgICAgdm9pZCBpbml0aWFs
aXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKKyAgICB2b2lkIHN1Ym1pdEZy
YW1lKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWY0YzhiYjYyNjQ2OTM0YjA2NjJlZjEzYmUxNjFlZDUyZjUyYmJlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWYgRU5BQkxFKFdFQlhSKQor
CittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJlZkNvdW50ZWQgeworICAgIEVudW1l
cmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+
IGRldmljZXNJbmZvcykgQXN5bmMKKyAgICBJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KQorICAgIFNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFJlcXVlc3RGcmFtZSgp
IC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3lu
YworICAgIFN1Ym1pdEZyYW1lKCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjM1NjQ3NjZlMjMwMWY0MTk2ZmUy
YmYyMDI5NjVkMDI3MGI4ZjMyLi4xMDIwOTNmMjA5MWYxZDRlMThhMTY0MWYwYzczYzAzZWIxNzE1
MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExMTQsMTIgKzExMTQsNiBAQAogCQk1MUZBRUMzQTFCMDY1NzYzMDAwOUM0RTcgLyog
QXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUZBRUMzNzFCMDY1NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJv
Y2Vzc01lc3NhZ2VzLmggKi87IH07CiAJCTUxRkFFQzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBBdXhp
bGlhcnlQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM2MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlh
cnlQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFGRDE4QjYxNjUxRkJBRDAw
REJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdv
cmtSZXNvdXJjZUxvYWRlci5oICovOyB9OwotCQk1MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyog
WFJEZXZpY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVy
LmggKi87IH07Ci0JCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFGMjYx
QkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLzsgfTsKLQkJNTI2M0UyNTcyNjFFNzNE
RjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVBy
b3h5LmggKi87IH07Ci0JCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLzsg
fTsKLQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjRGMjYxRTcy
RUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi87IH07Ci0JCTUyNjNFMjVGMjYxRTk2
RUYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLzsgfTsKIAkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0Mjkw
IC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25T
cGFjZU5TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTI4QzM3QzExOTVDQkIxQTAwRDhCOUNDIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RjI4MTAx
OTU4RjQ3ODAwOENBQzcyIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyRDVBMUIwMUM1NzQ5NUEw
MERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLzsgfTsKQEAgLTI1NjcsNiArMjU2MSwx
OSBAQAogCQkwRkZFRDk4RjIzQTMyMDM3MDBFRUY0NTkgLyogV0tXZWJWaWV3TWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZFRDk5MDIzQTMyMDM4MDBFRUY0NTkgLyogV0tX
ZWJWaWV3TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld01h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1ODVFMTFDQTJD
QkIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7
IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTExODUwMjU2MjY3M0IwMTYwMEE2NDI1RSAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjU3MjY3M0IwMTYwMEE2
NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
MTg1MDI1ODI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lz
dGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAv
KiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVFMjY3M0IwQTcw
MEE2NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTExODUwMjYxMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTE4NTAyNjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gWFJEZXZpY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTExODUwMjY0MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFJEZXZpY2VJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjUyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEwMDJEM0UxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8q
IF9XS1Nlc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tT
ZXNzaW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJENDIxOTZC
MzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MTg4LDE4ICs0MTk1LDYgQEAKIAkJNTFGQjA5MDIxNjNBM0Ix
QzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGRDE4QjMxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZEMThCNDE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MjUwODBBRDI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFJEZXZpY2VJbmZvLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyog
WFJEZXZpY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhS
RGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBB
RjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MjYzRTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhS
U3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTAyNjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJT
eXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTQyNjFFNzNERTAwMThENDdEIC8qIFhS
RGV2aWNlUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBY
UkRldmljZVByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NTI2
MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUyNjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAvKiBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDNzFF
NzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90
ZWN0aW9uU3BhY2VOUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDODFF
NzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMubW07IHBhdGggPSBt
YWMvV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTJENUExQUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MzUsNiArNjQzMCwzOSBA
QAogCQkJbmFtZSA9ICJPdGhlciBGcmFtZXdvcmtzIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTExODUwMjU1MjY3M0IwMTYwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNTgyNjczQjAxNjAwQTY0
MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAgKi8sCisJCQkJMTE4NTAyNTYyNjczQjAx
NjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovLAorCQkJCTExODUwMjU3MjY3
M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MTE4NTAyNTkyNjczQjA3MTAwQTY0MjVFIC8qIFhSICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZv
cm1YUkNvb3JkaW5hdG9yLmggKi8sCisJCQkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBs
YXRmb3JtWFJTeXN0ZW0uY3BwICovLAorCQkJCTExODUwMjVDMjY3M0IwNzEwMEE2NDI1RSAvKiBQ
bGF0Zm9ybVhSU3lzdGVtLmggKi8sCisJCQkJMTE4NTAyNUQyNjczQjA3MTAwQTY0MjVFIC8qIFBs
YXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IFhSOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVF
IC8qIFhSICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkx
MTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi8sCisJCQkJ
MTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5jcHAgKi8sCisJCQkJMTE4
NTAyNjUyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5oICovLAorCQkJCTExODUwMjYy
MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmNwcCAqLywKKwkJCQkxMTg1MDI2MTI2
NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBY
UjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFBMEVDNkIwMTI0QkJEMzYw
MDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTY3MDEsNiArNjcyOSw3IEBACiAJCQkJMUFBRTA1OEMxMjc5RENENDAw
ODUyNDE4IC8qIFBsdWdpbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJl
bW90ZUxheWVyVHJlZSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0
ZURhdGEgKi8sCisJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUz
QkNFODc3MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwICov
LAogCQkJCUUzQkNFODc4MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXMuaCAqLywKIAkJCQlBN0Q3OTJENTE3NjdDQjZFMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRp
b24uY3BwICovLApAQCAtNzA1OSwxMCArNzA4OCw3IEBACiAJCQkJMUFCQzNERjMxODk5RTQzNzAw
NEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKIAkJCQk1QzZDRTZEMzFGNTlFQTM1MDAw
N0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5oICovLAogCQkJCTVDNkNFNkQwMUY1OUJDNDYw
MDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tICovLAotCQkJCTUyNjNFMjREMjYxRTZG
QjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKLQkJCQk1MjYzRTI0RjI2
MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovLAotCQkJCTUyNjNFMjUwMjYx
RTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAotCQkJCTUy
NjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1tICovLAorCQkJCTEx
ODUwMjVFMjY3M0IwQTcwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gKi8sCiAJ
CQkJQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5oICovLAogCQkJCUNEQTI5QTIyMUNCRUI2MUEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMUYxQ0JFQjVGQjAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLywKQEAgLTgzNDcsMTEgKzgzNzMs
NiBAQAogCQkJCUMxNEQzMDY1MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLywK
IAkJCQlDMTREMzA2ODI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLywK
IAkJCQlDMTREMzA2NjI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi8s
Ci0JCQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICov
LAotCQkJCTUyNTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLywKLQkJ
CQk1MjUwODBBRDI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICovLAotCQkJCTUy
NjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8sCi0JCQkJNTI2M0Uy
NTQyNjFFNzNERTAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkubW0gKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IGNvY29hOwogCQkJcGF0aCA9IENvY29hOwpAQCAtOTM0MSw5ICs5MzYyLDYgQEAKIAkJCQlD
MUExNTJENjI0RTVBMjlBMDA5NzhDOEIgLyogSGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSAq
LywKIAkJCQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU1hbmFnZXIuaCAqLywKIAkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU1hbmFnZXIubW0gKi8sCi0JCQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovLAotCQkJCTUyNjNFMjVFMjYxRTk2RTAwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTI2M0Uy
NUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSAqLywKIAkJCQk0
NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtOTgwOSw2ICs5ODI3LDcgQEAKIAkJCQlC
QzAzMkQ1RDEwRjQzNzIyMDA1OEMxNUEgLyogV2ViQ29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJE
NUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJMUFBQzREREUxNkIxQ0JGNjAw
OTQyNUUzIC8qIFdlYlN0b3JhZ2UgKi8sCisJCQkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8q
IFhSICovLAogCQkJCUJDRTlDMENGMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuY3BwICovLAogCQkJCUJDRTlDMEQwMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuaCAqLywKIAkJCQlCQzExMUFFMzExMkY1QzI2MDAzMzdCQUIgLyog
V2ViUHJvY2Vzcy5jcHAgKi8sCkBAIC05OTc0LDYgKzk5OTMsNyBAQAogCQkJCTFBQUYwODlFMTky
NjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKIAkJCQk1NzYwODI5NDIwMkJEODQ5MDAx
MTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8sCiAJCQkJMUE1M0MyQTMxQTMyNTY5MTAwNEU4
QzcwIC8qIFdlYnNpdGVEYXRhICovLAorCQkJCTExODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBY
UiAqLywKIAkJCQlFMTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmNwcCAqLywKIAkJCQlFMTUxM0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmggKi8sCiAJCQkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCkBAIC0xMjE5Nyw5ICsxMjIxNyw2
IEBACiAJCQkJMkQ4NzEwMTcxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8q
IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdEIC8q
IFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVGMjYxRTk2RUYw
MDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
NkRDNjRDMjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTI5MUNCRUI2N0Ew
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMTMwOTYsOSArMTMxMTMsNiBAQAogCQkJCUMxNUU2Q0IzMjRCN0JFNkYwMEU1MDFBMiAv
KiBYUENFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE1RTZDQjQyNEI3QkU3NjAwRTUw
MUEyIC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2
QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8u
aCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjU3MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmlj
ZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggODlmMDVk
NWNjNzA2NGFjZWU0NWNmMDlhNTMwMTQzYjVlM2EyZmUxZC4uMzA3NzZhMDBkYjA3NGYyZDE5N2Qy
N2EwMDA4OTI5MmI1ODgwNzg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE1MDMsNyAr
MTUwMyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRN
ZW51KEZsb2F0UmVjdCYmIHRhcmdldEZyYW1lLCBWZWN0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKLSNpZiBF
TkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVT
RShPUEVOWFIpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRl
dmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UueHJTeXN0ZW1Q
cm94eSgpLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWI1YzllODg4NzA5NmQ3OTYxYjBkYmUzNTAz
ZjliODQ2MjZhZjczMy4uYzE1MTJmOTk4NzVkOTk3MDc0NWY2MmM2NWY1ZGIyOTUyMTExNTUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KFdlYkNvcmU6OkZsb2F0UmVjdCYmLCBWZWN0
b3I8V2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+JiYp
IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAm
JiBVU0UoVUlDT05URVhUTUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICB2b2lkIGVudW1lcmF0
ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3Jt
WFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQppbmRleCA0NDkwNzU1ZmZmNzY4ZDQxMGI1MzU3ZmM2MTAyMjI2ZWY3ZWI1NmVlLi5lMTQxNTBi
NWI4ZGE2YzE1NzA5YjMwY2FjMmE5ZGU0NjdkZTJiYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00NDMs
MTUgKzQ0Myw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoRmxvYXRTaXplKHBsdWdpbi0+cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOwogfQog
Ci0jaWYgRU5BQkxFKFdFQlhSKQotUGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4clN5
c3RlbVByb3h5KCkKLXsKLSAgICBpZiAoIW1feHJTeXN0ZW1Qcm94eSkKLSAgICAgICAgbV94clN5
c3RlbVByb3h5ID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3IFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eSgqdGhpcykpOwotICAgIHJldHVybiAqbV94clN5c3RlbVByb3h5
OwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFn
ZTo6aGFuZGxlQ2xpY2tGb3JEYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3RvckVs
ZW1lbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRQb2ludCYgY2xpY2tMb2NhdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWNmODJjOTZkZmI3
YWMyZWRlZTAxZWE4OGE2NzZkZjIzMzM1YjBmOS4uNzNkNGYwMTE2ODY4OTg2NWUzOWQ2YjZlZTcy
MjZkMjk3NTkzNWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTczNTEsNiArNzM1MSwxNSBAQCB2b2lkIFdlYlBhZ2U6OnRleHRBdXRvc2l6
aW5nVXNlc0lkZW1wb3RlbnRNb2RlQ2hhbmdlZCgpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKIAorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCitQbGF0Zm9y
bVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQoreworICAgIGlmICghbV94
clN5c3RlbVByb3h5KQorICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1YUlN5c3RlbVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7
CisgICAgcmV0dXJuICptX3hyU3lzdGVtUHJveHk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdl
OjpzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewogICAg
IGlmIChtZWRpYVR5cGUgPT0gbV9vdmVycmlkZGVuTWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI1NDUxZjA5NjI3MWI1NGY0MmI0NDRm
ZGI2ZTQ1ZWU1NjRhNzFlMTguLmQ1Y2I1YjE5N2I5ZGMyM2Y3ZjkxZTg1MGFkZmI4MWRhMDQ1ZTgz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0
NCw3ICsxNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5B
QkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0Uo
T1BFTlhSKQogI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgogI2VuZGlmCiAKQEAg
LTE0NjEsNyArMTQ2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRBdXRvc2l6aW5nVXNlc0lk
ZW1wb3RlbnRNb2RlQ2hhbmdlZCgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBM
QVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgUGxh
dGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CiAjZW5kaWYKIApAQCAtMjM2Miw3
ICsyMzYyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2ViQ29y
ZTo6SFRNTEVsZW1lbnQ+LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2Vi
Q29yZTo6RWxlbWVudD4mJik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9uOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJM
RShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eT4gbV94clN5c3RlbVByb3h5OwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM1OWI5NmM3Yjc3YzRjODg5M2NkMmRkOTRiNDAyODI1MDU4YzJjZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVBy
b3h5LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKworI2lmIEVOQUJMRShXRUJY
UikKKworI2luY2x1ZGUgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZv
cm1YUlN5c3RlbVByb3h5OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYgcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5
c3RlbVByb3h5Ojp+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6RW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8WFJEZXZpY2VJbmZvPiYmIGRldmljZXNJ
bmZvcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgZGV2aWNlczsK
KyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2VJbmZvIDogZGV2aWNlc0luZm9zKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5pZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZCgqZGV2aWNlKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChYUkRldmljZVByb3h5
OjpjcmVhdGUoV1RGTW92ZShkZXZpY2VJbmZvKSwgKnRoaXMpKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2RldmljZXMuc3dhcChkZXZpY2VzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9k
ZXZpY2VzKTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OlBsYXRmb3JtWFJTeXN0ZW06OkluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpQbGF0Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOwor
fQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
Cit7CisgICAgcmV0dXJuIFBsYXRmb3JtWFJDb29yZGluYXRvcjo6ZGVmYXVsdExheWVySGFuZGxl
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzdWJtaXRGcmFtZSgpCit7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlN1Ym1pdEZyYW1lKCkp
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZChYUkRldmlj
ZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBk
ZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSWRlbnRpZmllcikpCisgICAgICAgIGRldmljZS0+c2Vz
c2lvbkRpZEVuZCgpOworfQorCitSZWZQdHI8WFJEZXZpY2VQcm94eT4gUGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjpkZXZpY2VCeUlkZW50aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBtX2RldmljZXMpIHsKKyAgICAgICAgYXV0byog
ZGV2aWNlUHJveHkgPSBzdGF0aWNfY2FzdDxYUkRldmljZVByb3h5Kj4oZGV2aWNlLnB0cigpKTsK
KyAgICAgICAgaWYgKGRldmljZVByb3h5LT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiBkZXZpY2VQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVBy
b3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVkNDA5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eShXZWJQYWdlJik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7CisK
KyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOworICAgIHZv
aWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6
RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRm
b3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQz
Ml90LCBib29sKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIp
OworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVz
c2FnZSBoYW5kbGVycworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIp
OworCisgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOworICAg
IFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTBhYzFmN2Y2MjRiNDk2ZGE1N2Ex
MGY5NjRlZjRkZDkxZjVjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2Vzc2lvbkRpZEVuZChXZWJLaXQ6
OlhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzNGRlNTFhMTI1ODdmMTQzMmNk
MDY1MmU4Y2M3NDQ5NmVkNDA5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmlj
ZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eShXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5
KCk7Ci0KLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOwot
ICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qs
IHVpbnQzMl90LCBib29sKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50
aWZpZXIpOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAg
Ly8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50
aWZpZXIpOwotCi0gICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2Vz
OwotICAgIFdlYlBhZ2UmIG1fcGFnZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3OTQwNTc5MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KKysrIC9kZXYv
bnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RS
ZWZDb3VudGVkIHsKLSAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlmaWVy
IGRldmljZUlkZW50aWZpZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEzZWZhNWI4ODJmZTZkOTdmMzFlNzhlNTFjM2QzMGZmZWE3MzNm
ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJYUikK
LQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhS
U3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2Vz
LmgiCi0jaW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0jaW1wb3J0
ICJYUkRldmljZUluZm8uaCIKLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVt
UHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQotICAgIDogbV9wYWdl
KHBhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHk6
On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOwotICAgICAgICBm
b3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIpKQot
ICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0ZShX
VEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIG1fZGV2aWNl
cy5zd2FwKGRldmljZXMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMpOwot
ICAgIH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwotfQotCi12b2lkIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0g
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1
ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxi
YWNrKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKLXsKLSAgICBy
ZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKLX0KLQot
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmll
ciBkZXZpY2VJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRl
bnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKLSAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5k
KCk7Ci19Ci0KLVJlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRl
dmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBm
b3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgewotICAgICAgICBhdXRvKiBkZXZpY2VQcm94
eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOwotICAgICAgICBp
ZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAgICAg
cmV0dXJuIGRldmljZVByb3h5OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
</data>
<flag name="commit-queue"
          id="455014"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432929</attachid>
            <date>2021-07-06 07:46:30 -0700</date>
            <delta_ts>2021-07-08 05:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210706164628.patch</filename>
            <type>text/plain</type>
            <size>107829</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NDcxZjhkZTg5ODA4Yjk2
MGE0ZTQ2OThmZTdjN2ZjN2JlMzU2MzEuLmM3NTE4YjQ1YTE5ZTU1ZjlkOTQ4NjdlMjkxNWNlZTAx
NTY1MjgwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNy0wNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgog
CiAgICAgICAgIFtHVEs0XSBOYXZpZ2F0aW9uIHN3aXBlIGRvZXNuJ3Qgd29yayB3aGVuIHRoZSBw
YWdlIHNjcm9sbHMgaG9yaXpvbnRhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyYTdjYjg1NWE4
N2RkNjFhZWY2NzI2NjE4M2Y1MjQxNGJjNmUzM2E4Li4wOGY1MmU1Zjc4YjA0MjdiNDYyNzMwYTZi
NzdmNmZlNTIzYmFjOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBw
bGVQYXkiCkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
WFIiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNCw2ICsyMTcsOCBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
CisKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODMsNiArMjg4LDggQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFl
MDM0MTU0NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIx
ODk0MjJjNjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2Ev
QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZlMzI5Yjg5MGE4MWI4ZGNkMzhkZGZjMDFiZDU1YzMwNDVkNjZhMzIuLjc4YTc5Mjk2ZDE1
MmI3ZTM5ODkyZjEwNzhlNmNlYzAwMmUwNWIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgXApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJ
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBA
IC0yMjAsNyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIg
XApAQCAtMjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1
Nzc2NjViOWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQw
OGM4OTJhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
CiAgICAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1
ZWQwYjY4Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9
OwotdXNpbmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlk
ZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9
OwotICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxY
UkRldmljZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBi
OGRkY2IzMTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMg
PDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhS
RGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NmU0NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhS
RGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8WFJEZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZh
dGU6Ci0gICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRp
b247IH0KLSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAg
IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3Jt
WFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5
PiBtX3hyU3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMz
OGNmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJYUkRldmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNl
UHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQot
WFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vh
a1B0cih4clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlm
aWVyOwotICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
U3RlcmVvUmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2
aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJl
c29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRl
dmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMo
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+
c2Vzc2lvbkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsK
LSAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2
ZVZyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNl
UHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYm
IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3
cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3
czsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lz
dGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCi1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJT
eXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVl
OTlkMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZm
NGZlYTMwOTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZl
YXR1cmVzIDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVz
b2x1dGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2
aWNlRmVhdHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1
Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdm
MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQ
cm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJT
eXN0ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94
clN5c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2
aWNlSW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZp
Y2VJbmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAg
bV9yZWNvbW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlv
bjsKKyAgICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRF
bmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1
cmVzKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBp
ZiAodHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBz
ZXNzaW9uTW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAg
ICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxz
ZQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwor
ICAgIHJldHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RG
TW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/
IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRm
b3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBj
cmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2
aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVBy
b3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNv
cmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
KSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkxheWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAg
Ym9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQ3Vyc29yLmNwcAppbmRleCBmYmU0MjI3MzA2ZjgwZjYxYzEyN2MzMzhjNzFlZmE1NGEyZDIw
Yzg3Li40YmUxYmVhMDY3OGE0NThhZTUyODhlMDE3NDFkNmIwOWJiMzNhYjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJNX0ZPUk1BVF9SRUFERVIpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFUcmFja1JlYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NhbXBsZU1hcC5oPgpAQCAtMzk4LDcgKzM5OSw3IEBAIE9TU3RhdHVzIE1l
ZGlhU2FtcGxlQ3Vyc29yOjpnZXRQbGF5YWJsZUhvcml6b24oQ01UaW1lKiBwbGF5YWJsZUhvcml6
b24pIGNvbnN0CiAKIFdURkxvZ0NoYW5uZWwmIE1lZGlhU2FtcGxlQ3Vyc29yOjpsb2dDaGFubmVs
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gTG9nTWVkaWE7CisgICAgcmV0dXJuIFdlYkNvcmU6Okxv
Z01lZGlhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVh
ZGVyLmNwcAppbmRleCAxZGMxY2FlMDMwMDhlMGEyMGE0NGFjNzNkMWFhMzcyNTM1N2YyMGZhLi5j
NmUxMGRjZTg0NzY0OWE5ZTUyNTE1OGUzZjAzMDZmOThlZDAyYjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
VHJhY2tSZWFkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCTV9GT1JN
QVRfUkVBREVSKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhRm9ybWF0
UmVhZGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCIKICNpbmNsdWRlICJN
ZWRpYVNhbXBsZUN1cnNvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDQ4OGEzZDk2NmVjNjQxZDhkY2Y2
NTJmYTM3YjJiNDlkOWNkNDVkNy4uYWZkNWEyMGY2ZWI3OWZlZjJmZDI0MTllMTQyYjU1YTNhY2Q5
ZDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODcsNiArMjg3LDkgQEAgU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIEBuby11bmlmeQogCiBTaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwCiAKK1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCitTaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAKKwogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5j
cHAKIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBV
SVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC01MDMsNiArNTA2LDggQEAg
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCiAKK1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtLmNwcAorCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKIFdlYkF1dGhuUHJv
Y2Vzcy9XZWJBdXRoblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03MjEsOCArNzI2
LDEyIEBAIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKIFdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCiAKK1dlYlByb2Nlc3MvWFIvUGxh
dGZvcm1YUlN5c3RlbVByb3h5LmNwcAorCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKK1BsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIuY3BwCitQbGF0Zm9ybVhS
U3lzdGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NDA1MGM0MDNjNDZkNTY0YzJlOTgzYzVmMjY1NTUxYzY5NzVjZThmZC4uM2U0MjEyYTI4NmRlYTA2
NWNjMDZlN2JkZWE0OTdlZDEyM2EyNDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMTg1
LDggKzE4NSw2IEBAIFNoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCiBTaGFyZWQvQ29jb2Ev
V0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9XS09iamVjdC5tbQogU2hhcmVkL0NvY29h
L1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tCi1TaGFyZWQvQ29jb2EvWFJEZXZp
Y2VJbmZvLm1tCi1TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQogCiBTaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCiBT
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWlu
Lm1tCkBAIC00MDMsNyArNDAxLDcgQEAgVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5t
bQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0KLVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1t
CitVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCiBVSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29j
b2EubW0KQEAgLTU5OSw3ICs1OTcsNiBAQCBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5jcHAKIAogV2ViUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JDb2NvYS5tbQogCi1XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94
eS5tbQogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCiBXZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNzE2LDggKzcxMyw2IEBAIEdQVVBy
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKIE1lc3NhZ2VOYW1l
cy5jcHAKLVBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdlUmVjZWl2ZXIuY3BwCi1QbGF0Zm9ybVhSU3lz
dGVtUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRv
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9y
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVl
ZDQ2NmFjNzQ4NzA3YTNjYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5h
dG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtWFIuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7
Ci0KLSAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgotICAg
IHN0YXRpYyBQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJl
dHVybiAxOyB9Ci0KLSAgICB1c2luZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPik+OwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcmlt
YXJ5RGV2aWNlSW5mbyhEZXZpY2VJbmZvQ2FsbGJhY2smJikgPSAwOwotCi0gICAgLy8gU2Vzc2lv
biBjcmVhdGlvbi90ZXJtaW5hdGlvbi4KLSAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoWFJEZXZpY2VJZGVudGlmaWVyKT47Ci0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0U2Vzc2lvbihXZWJQYWdlUHJveHkmLCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGVuZFNlc3Npb25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7Ci0K
LSAgICAvLyBTZXNzaW9uIGRpc3BsYXkgbG9vcC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVB
bmltYXRpb25GcmFtZShXZWJQYWdlUHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFn
ZVByb3h5JikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXRmb3JtWFJDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXRmb3JtWFJDb29yZGluYXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGQ1YTU1ZDA0Y2JkNmYwYjk5MDM1
ZjEwZmNiYjVkYzQyYjdiOTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCkBAIC0wLDAgKzEsMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGlu
YXRvci5oIgorCisjaWYgRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvUGxhdGZvcm1YUlN5c3RlbUFkZGl0aW9ucy5tbT4K
KworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0NGFkMTZlOTk0Yjk3NjNlZTVkNmVjZWVlMDg1
ODNkYTE3YWZmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBs
YXRmb3JtWFJDb29yZGluYXRvcjsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotc3RydWN0IFhSRGV2
aWNlSW5mbzsKLQotY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUGxh
dGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lz
dGVtKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMg
UGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7Ci0KLSAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAg
dm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsK
LSAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLSAg
ICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY0NTNhYWQ5MGMzMTc2YjhiYTFmODZmYzBmMzk1ZDJkMDAwNDY2MDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVm
Q291bnRlZCB7Ci0gICAgRW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxX
ZWJLaXQ6OlhSRGV2aWNlSW5mbz4gZGV2aWNlc0luZm9zKSBBc3luYwotICAgIEluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpCi0gICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Ci0gICAgUmVxdWVzdEZyYW1lKCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YSBmcmFtZURhdGEpIEFzeW5jCi0gICAgU3VibWl0RnJhbWUoKQotfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2YzZDdmNDk4YzZiYzMxZWU1MDc3MzhkMjEy
NTk0ZTdmOWM2ZmMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KKysr
IC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKFdFQlhSKQot
Ci0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJT
eXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMu
aCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhSU3lz
dGVtKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQotewotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVt
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMpOwotfQot
Ci1QbGF0Zm9ybVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCi17Ci0gICAgbV9wYWdlLnBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKLX0KLQotdm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjppbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAoeHJDb29yZGluYXRvcigp
KQotICAgICAgICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOwot
fQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVt
Ojp4ckNvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB4ckNv
b3JkaW5hdG9yLT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRldmlj
ZUluZm8pIG11dGFibGUgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBX
VEZNb3ZlKGRldmljZUluZm8pXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFkZXZpY2VJ
bmZvKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgZGV2aWNlSW5mby52YWx1ZSgpIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KQotewotICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3Jk
aW5hdG9yKCk7Ci0gICAgaWYgKCF4ckNvb3JkaW5hdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB4ckNvb3JkaW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7Ci0gICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJd
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAg
d2Vha1RoaXMtPm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNl
c3Npb25EaWRFbmQoZGV2aWNlSWRlbnRpZmllcikpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
LXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29v
cmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1f
cGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhS
U3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxl
QW5pbWF0aW9uRnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0K
LXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQotewotICAgIGlmIChhdXRvKiB4
ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAg
ICB4ckNvb3JkaW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOwotfQotCi19Ci0KLSNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhS
U3lzdGVtQWRkaXRpb25zLm1tPgotI2Vsc2UKLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9y
bVhSQ29vcmRpbmF0b3IqIFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQotewotICAg
IHJldHVybiBudWxscHRyOwotfQotCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM3ZDZiYTZi
Y2I2Mjg1NThiZWE3YTVlOGQ5ZjQwZGNkNTUwZTBlMmQuLjgwMmM2Y2VjMzY1MmI3NTRlMmRhZTQ3
MWVlYzQ0MjUwOGUyNTAyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRv
UnVubmluZ1Byb2Nlc3MoKQogICAgIG1fd2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5ID0gbWFrZVVuaXF1ZTxXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHk+KCp0aGlzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIEFTU0VSVCghbV94clN5
c3RlbSk7CiAgICAgbV94clN5c3RlbSA9IG1ha2VVbmlxdWU8UGxhdGZvcm1YUlN5c3RlbT4oKnRo
aXMpOwogI2VuZGlmCkBAIC03ODE0LDcgKzc4MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
ZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAKICAgICBtX3NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogCi0jaWYgRU5BQkxFKFdF
QlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhS
KQogICAgIGlmIChtX3hyU3lzdGVtKSB7CiAgICAgICAgIG1feHJTeXN0ZW0tPmludmFsaWRhdGUo
KTsKICAgICAgICAgbV94clN5c3RlbSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDVkNzQ0ZmVlYTVkNmU5YTFlZGUxNTBjNGM0MGU1MTdiZDI2NTY1
YTUuLmJlNjI3YzVjOWExYTlhYjhjMDE2NWNlZTlkMmEyMjUwODE1NTIwYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODUsNyArMTg1LDcgQEAgaW50ZXJmYWNl
IElEM0QxMURldmljZTE7CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25JZGVudGlmaWVy
Lmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYg
RU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVt
LmgiCiAjZW5kaWYKIApAQCAtMzA2Miw3ICszMDYyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IG1fcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ7CiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lm
IEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtWFJTeXN0ZW0+IG1feHJTeXN0ZW07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzE2MTE4
ZmNmNmY3MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2EzY2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQor
CisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2Ns
YXNzIFBsYXRmb3JtWFJDb29yZGluYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZv
cm1YUkNvb3JkaW5hdG9yKCkgPSBkZWZhdWx0OworCisgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBh
bmQgd2lsbCBiZSBmaXhlZCBsYXRlci4KKyAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5k
bGUgZGVmYXVsdExheWVySGFuZGxlKCkgeyByZXR1cm4gMTsgfQorCisgICAgdXNpbmcgRGV2aWNl
SW5mb0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4p
PjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxi
YWNrJiYpID0gMDsKKworICAgIC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24uCisgICAg
dXNpbmcgT25TZXNzaW9uRW5kQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRp
Zmllcik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25T
ZXNzaW9uRW5kQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZF
eGlzdHMoV2ViUGFnZVByb3h5JikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3Au
CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5Jiwg
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHN1Ym1pdEZyYW1lKFdlYlBhZ2VQcm94eSYpIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZTJjYmE2
Njc5ZTUzNmRmNzc0YjQyMGEwM2EyMDFlMWIxY2NiMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcApAQCAtMCwwICsxLDEy
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVhSU3lzdGVtLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVhS
Q29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGxhdGZvcm1YUlN5c3RlbTo6UGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkm
IHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3Rl
bTo6flBsYXRmb3JtWFJTeXN0ZW0oKQoreworICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6
aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKHhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29y
ZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsKK30KKwordm9pZCBQbGF0Zm9y
bVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigp
OworICAgIGlmICgheHJDb29yZGluYXRvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgeHJDb29yZGluYXRvci0+Z2V0UHJp
bWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJbmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZpY2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZv
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghZGV2aWNlSW5mbykgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGRldmljZUlu
Zm8udmFsdWUoKSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1Y
UlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBhdXRvKiB4
ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOworICAgIGlm
ICgheHJDb29yZGluYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHJDb29yZGluYXRvci0+
c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShYUkRl
dmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikgeworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJZGVudGlmaWVyXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpTZXNzaW9uRGlkRW5kKGRldmlj
ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1Y
UlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgaWYgKGF1dG8q
IHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAg
ICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGlu
YXRvcigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1f
cGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFBsYXRmb3JtWFJT
eXN0ZW06OnN1Ym1pdEZyYW1lKCkKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBs
YXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+
c3VibWl0RnJhbWUobV9wYWdlKTsKK30KKworfQorCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9T
REspCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9y
bVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
fQorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RhZTQ1M2Q3MmNjNzI2
NDExNWU4ODhkYWMxMzYwYjU0ZGM2ZGM0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFBsYXRmb3JtWFJDb29yZGluYXRvcjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworc3RydWN0
IFhSRGV2aWNlSW5mbzsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbSA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgUGxhdGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVhSU3lzdGVtKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiB4ckNvb3JkaW5hdG9yKCk7CisKKyAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
CisgICAgdm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4mJik7CisgICAgdm9pZCBpbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYpPiYmKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY0
YzhiYjYyNjQ2OTM0YjA2NjJlZjEzYmUxNjFlZDUyZjUyYmJlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNz
YWdlcyAtPiBQbGF0Zm9ybVhSU3lzdGVtIE5vdFJlZkNvdW50ZWQgeworICAgIEVudW1lcmF0ZUlt
bWVyc2l2ZVhSRGV2aWNlcygpIC0+IChWZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmlj
ZXNJbmZvcykgQXN5bmMKKyAgICBJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAg
IFNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQorICAgIFJlcXVlc3RGcmFtZSgpIC0+IChz
dHJ1Y3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3luYworICAg
IFN1Ym1pdEZyYW1lKCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjM1NjQ3NjZlMjMwMWY0MTk2ZmUyYmYyMDI5
NjVkMDI3MGI4ZjMyLi4xMDIwOTNmMjA5MWYxZDRlMThhMTY0MWYwYzczYzAzZWIxNzE1MzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTExMTQsMTIgKzExMTQsNiBAQAogCQk1MUZBRUMzQTFCMDY1NzYzMDAwOUM0RTcgLyogQXV4aWxp
YXJ5UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUZBRUMzNzFCMDY1NzMxMDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01l
c3NhZ2VzLmggKi87IH07CiAJCTUxRkFFQzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBBdXhpbGlhcnlQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM2MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFGRDE4QjYxNjUxRkJBRDAwREJFMUNF
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGRDE4QjQxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRlci5oICovOyB9OwotCQk1MjUwODBCMTI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZp
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi87
IH07Ci0JCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNTA4MEFGMjYxQkRFNkMw
MDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLzsgfTsKLQkJNTI2M0UyNTcyNjFFNzNERjAwMThE
NDdEIC8qIFhSRGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNjNFMjU1MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lmgg
Ki87IH07Ci0JCTUyNjNFMjVBMjYxRTkzQTcwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNF
MjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLzsgfTsKLQkJ
NTI2M0UyNUIyNjFFOTNBQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjRGMjYxRTcyRUIwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi87IH07Ci0JCTUyNjNFMjVGMjYxRTk2RUYwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkuaCAqLzsgfTsKIAkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdL
UHJvdGVjdGlvblNwYWNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5T
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI4
QzM3QzExOTVDQkIxQTAwRDhCOUNDIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RjI4MTAxOTU4RjQ3
ODAwOENBQzcyIC8qIFdLQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRB
MyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLzsgfTsKQEAgLTI1NjcsNiArMjU2MSwxOSBAQAog
CQkwRkZFRDk4RjIzQTMyMDM3MDBFRUY0NTkgLyogV0tXZWJWaWV3TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkZFRDk5MDIzQTMyMDM4MDBFRUY0NTkgLyogV0tXZWJWaWV3
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld01hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1ODVFMTFDQTJDQkIgLyog
Q29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGgg
PSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CisJCTExODUwMjU2MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjU3MjY3M0IwMTYwMEE2NDI1RSAv
KiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1
ODI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxMTg1MDI1QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUgLyogUGxh
dGZvcm1YUlN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVFMjY3M0IwQTcwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTExODUwMjYxMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTE4NTAyNjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gWFJEZXZpY2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTExODUwMjY0MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gWFJEZXZpY2VJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTE4NTAyNjUyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEwMDJEM0UxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nl
c3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9u
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJENDIxOTZCMzM3MDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MTg4LDE4ICs0MTk1LDYgQEAKIAkJNTFGQjA5MDIxNjNBM0IxQzAwRUMz
MjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFGRDE4QjMxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUx
Q0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MjUwODBBRDI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFJEZXZpY2VJbmZvLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZp
Y2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNl
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjUwODBBRjI2MUJE
RTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYz
RTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNjNFMjRGMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTI2M0UyNTAyNjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0u
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNTQyNjFFNzNERTAwMThENDdEIC8qIFhSRGV2aWNl
UHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmlj
ZVByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NTI2MUU3M0RG
MDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNF
MjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNjNFMjVEMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAvKiBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDNzFFNzM1RjA5
MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLmg7IHBhdGggPSBtYWMvV0tQcm90ZWN0aW9u
U3BhY2VOUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyRDRDODFFNzM1RjA5
MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMubW07IHBhdGggPSBtYWMvV0tQ
cm90ZWN0aW9uU3BhY2VOUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJENUEx
QUExQzU3NDk0RTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MzUsNiArNjQzMCwzOSBAQAogCQkJ
bmFtZSA9ICJPdGhlciBGcmFtZXdvcmtzIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTExODUwMjU1MjY3M0IwMTYwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNTgyNjczQjAxNjAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAgKi8sCisJCQkJMTE4NTAyNTYyNjczQjAxNjAwQTY0
MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovLAorCQkJCTExODUwMjU3MjY3M0IwMTYw
MEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkpOwor
CQkJcGF0aCA9IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTE4NTAy
NTkyNjczQjA3MTAwQTY0MjVFIC8qIFhSICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1QjI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggKi8sCisJCQkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3Jt
WFJTeXN0ZW0uY3BwICovLAorCQkJCTExODUwMjVDMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0Zm9y
bVhSU3lzdGVtLmggKi8sCisJCQkJMTE4NTAyNUQyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3Jt
WFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IFhSOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhS
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI2
MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmggKi8sCisJCQkJMTE4NTAy
NjQyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5jcHAgKi8sCisJCQkJMTE4NTAyNjUy
NjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5mby5oICovLAorCQkJCTExODUwMjYyMjY3M0Iw
REEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmNwcCAqLywKKwkJCQkxMTg1MDI2MTI2NzNCMERB
MDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFBMEVDNkIwMTI0QkJEMzYwMDdFRjRB
NSAvKiBQbHVnaW5Qcm9jZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTY3MDEsNiArNjcyOSw3IEBACiAJCQkJMUFBRTA1OEMxMjc5RENENDAwODUyNDE4
IC8qIFBsdWdpbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90ZUxh
eWVyVHJlZSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEg
Ki8sCisJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLAogCQkJCUUzQkNFODc3
MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuY3BwICovLAogCQkJ
CUUzQkNFODc4MjY3MjUyMTIwMDExRDhEQiAvKiBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMuaCAq
LywKIAkJCQlBN0Q3OTJENTE3NjdDQjZFMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3Bw
ICovLApAQCAtNzA1OSwxMCArNzA4OCw3IEBACiAJCQkJMUFCQzNERjMxODk5RTQzNzAwNEYwNjI2
IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKIAkJCQk1QzZDRTZEMzFGNTlFQTM1MDAwN0M2Q0Ig
LyogUGFnZUNsaWVudEltcGxDb2NvYS5oICovLAogCQkJCTVDNkNFNkQwMUY1OUJDNDYwMDA3QzZD
QiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tICovLAotCQkJCTUyNjNFMjREMjYxRTZGQjkwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKLQkJCQk1MjYzRTI0RjI2MUU3MkVC
MDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovLAotCQkJCTUyNjNFMjUwMjYxRTcyRUMw
MDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAotCQkJCTUyNjNFMjRF
MjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLm1tICovLAorCQkJCTExODUwMjVF
MjY3M0IwQTcwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gKi8sCiAJCQkJQ0RB
MjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICov
LAogCQkJCUNEQTI5QTIyMUNCRUI2MUEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLywKQEAgLTgzNDcsMTEgKzgzNzMsNiBAQAog
CQkJCUMxNEQzMDY1MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSAqLywKIAkJCQlD
MTREMzA2ODI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQuaCAqLywKIAkJCQlD
MTREMzA2NjI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnRDbGllbnQubW0gKi8sCi0JCQkJ
NTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovLAotCQkJ
CTUyNTA4MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLywKLQkJCQk1MjUw
ODBBRDI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLm1tICovLAotCQkJCTUyNjNFMjU1
MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8sCi0JCQkJNTI2M0UyNTQyNjFF
NzNERTAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNv
Y29hOwogCQkJcGF0aCA9IENvY29hOwpAQCAtOTM0MSw5ICs5MzYyLDYgQEAKIAkJCQlDMUExNTJE
NjI0RTVBMjlBMDA5NzhDOEIgLyogSGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSAqLywKIAkJ
CQlDMTREMzdGQzI0QUNERjQ1MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXIuaCAqLywKIAkJCQlDMTREMzdGRDI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gKi8sCi0JCQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovLAotCQkJCTUyNjNFMjVFMjYxRTk2RTAwMDE4RDQ3RCAv
KiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTI2M0UyNUMyNjFF
OTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSAqLywKIAkJCQk0NDZEQzY0
QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAq
LywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtOTgwOSw2ICs5ODI3LDcgQEAKIAkJCQlCQzAzMkQ1
RDEwRjQzNzIyMDA1OEMxNUEgLyogV2ViQ29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJENUUxMEY0
MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJMUFBQzREREUxNkIxQ0JGNjAwOTQyNUUz
IC8qIFdlYlN0b3JhZ2UgKi8sCisJCQkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhSICov
LAogCQkJCUJDRTlDMENGMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3MuY3BwICovLAogCQkJCUJDRTlDMEQwMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MuaCAqLywKIAkJCQlCQzExMUFFMzExMkY1QzI2MDAzMzdCQUIgLyogV2ViUHJv
Y2Vzcy5jcHAgKi8sCkBAIC05OTc0LDYgKzk5OTMsNyBAQAogCQkJCTFBQUYwODlFMTkyNjgxQUMw
MEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKIAkJCQk1NzYwODI5NDIwMkJEODQ5MDAxMTY2Nzgg
LyogV2ViQXV0aGVudGljYXRpb24gKi8sCiAJCQkJMUE1M0MyQTMxQTMyNTY5MTAwNEU4QzcwIC8q
IFdlYnNpdGVEYXRhICovLAorCQkJCTExODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLywK
IAkJCQlFMTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNw
cCAqLywKIAkJCQlFMTUxM0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggKi8sCiAJCQkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCkBAIC0xMjE5Nyw5ICsxMjIxNyw2IEBACiAJ
CQkJMkQ4NzEwMTcxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNDNB
QkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdEIC8qIFBsYXRm
b3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVGMjYxRTk2RUYwMDE4RDQ3
RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0NkRDNjRD
MjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTI5MUNCRUI2N0EwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTMwOTYsOSArMTMxMTMsNiBAQAogCQkJCUMxNUU2Q0IzMjRCN0JFNkYwMEU1MDFBMiAvKiBYUENF
bmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE1RTZDQjQyNEI3QkU3NjAwRTUwMUEyIC8q
IFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4
MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUy
NTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCBpbiBI
ZWFkZXJzICovLAotCQkJCTUyNjNFMjU3MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggODlmMDVkNWNjNzA2
NGFjZWU0NWNmMDlhNTMwMTQzYjVlM2EyZmUxZC4uMzA3NzZhMDBkYjA3NGYyZDE5N2QyN2EwMDA4
OTI5MmI1ODgwNzg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE1MDMsNyArMTUwMyw3
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEZs
b2F0UmVjdCYmIHRhcmdldEZyYW1lLCBWZWN0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09O
VFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKLSNpZiBFTkFCTEUo
V0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVO
WFIpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxp
c3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UueHJTeXN0ZW1Qcm94eSgp
LmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWI1YzllODg4NzA5NmQ3OTYxYjBkYmUzNTAzZjliODQ2
MjZhZjczMy4uYzE1MTJmOTk4NzVkOTk3MDc0NWY2MmM2NWY1ZGIyOTUyMTExNTUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93
TWVkaWFDb250cm9sc0NvbnRleHRNZW51KFdlYkNvcmU6OkZsb2F0UmVjdCYmLCBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+JiYpIGZpbmFs
OwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0Uo
VUlDT05URVhUTUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisj
aWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICB2b2lkIGVudW1lcmF0ZUltbWVy
c2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Oklu
c3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRl
eCA0NDkwNzU1ZmZmNzY4ZDQxMGI1MzU3ZmM2MTAyMjI2ZWY3ZWI1NmVlLi5lMTQxNTBiNWI4ZGE2
YzE1NzA5YjMwY2FjMmE5ZGU0NjdkZTJiYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00NDMsMTUgKzQ0
Myw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoRmxv
YXRTaXplKHBsdWdpbi0+cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOwogfQogCi0jaWYg
RU5BQkxFKFdFQlhSKQotUGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4clN5c3RlbVBy
b3h5KCkKLXsKLSAgICBpZiAoIW1feHJTeXN0ZW1Qcm94eSkKLSAgICAgICAgbV94clN5c3RlbVBy
b3h5ID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3IFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSgqdGhpcykpOwotICAgIHJldHVybiAqbV94clN5c3RlbVByb3h5OwotfQot
I2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZTo6aGFu
ZGxlQ2xpY2tGb3JEYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3RvckVsZW1lbnRJ
bmZvJiBpbmZvLCBjb25zdCBJbnRQb2ludCYgY2xpY2tMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWNmODJjOTZkZmI3YWMyZWRl
ZTAxZWE4OGE2NzZkZjIzMzM1YjBmOS4uNzNkNGYwMTE2ODY4OTg2NWUzOWQ2YjZlZTcyMjZkMjk3
NTkzNWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTczNTEsNiArNzM1MSwxNSBAQCB2b2lkIFdlYlBhZ2U6OnRleHRBdXRvc2l6aW5nVXNl
c0lkZW1wb3RlbnRNb2RlQ2hhbmdlZCgpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKIAorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCitQbGF0Zm9ybVhSU3lz
dGVtUHJveHkmIFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQoreworICAgIGlmICghbV94clN5c3Rl
bVByb3h5KQorICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1YUlN5c3RlbVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7CisgICAg
cmV0dXJuICptX3hyU3lzdGVtUHJveHk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpzZXRP
dmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewogICAgIGlmICht
ZWRpYVR5cGUgPT0gbV9vdmVycmlkZGVuTWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI1NDUxZjA5NjI3MWI1NGY0MmI0NDRmZGI2ZTQ1
ZWU1NjRhNzFlMTguLmQ1Y2I1YjE5N2I5ZGMyM2Y3ZjkxZTg1MGFkZmI4MWRhMDQ1ZTgzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NCw3ICsx
NDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdF
QlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhS
KQogI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgogI2VuZGlmCiAKQEAgLTE0NjEs
NyArMTQ2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3Rl
bnRNb2RlQ2hhbmdlZCgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JN
KENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgUGxhdGZvcm1Y
UlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CiAjZW5kaWYKIApAQCAtMjM2Miw3ICsyMzYy
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2ViQ29yZTo6SFRN
TEVsZW1lbnQ+LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6
RWxlbWVudD4mJik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9uOwogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJY
UikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eT4gbV94clN5c3RlbVByb3h5OwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM1OWI5NmM3Yjc3YzRjODg5M2NkMmRkOTRiNDAyODI1MDU4YzJjZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNw
cApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKworI2lmIEVOQUJMRShXRUJYUikKKwor
I2luY2x1ZGUgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJT
eXN0ZW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJYUkRldmljZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1f
cGFnZShwYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Ojp+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UGxhdGZvcm1YUlN5c3RlbTo6RW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8WFJEZXZpY2VJbmZvPiYmIGRldmljZXNJbmZvcykg
bXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgZGV2aWNlczsKKyAgICAg
ICAgZm9yIChhdXRvJiBkZXZpY2VJbmZvIDogZGV2aWNlc0luZm9zKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5pZGVudGlmaWVy
KSkKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZCgqZGV2aWNlKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChYUkRldmljZVByb3h5OjpjcmVh
dGUoV1RGTW92ZShkZXZpY2VJbmZvKSwgKnRoaXMpKTsKKyAgICAgICAgfQorICAgICAgICBtX2Rl
dmljZXMuc3dhcChkZXZpY2VzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9kZXZpY2Vz
KTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW06OkluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQor
eworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCitz
dGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpCit7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtWFJDb29yZGluYXRvcjo6ZGVmYXVsdExheWVySGFuZGxlKCk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzdWJtaXRGcmFtZSgpCit7CisgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlN1Ym1pdEZyYW1lKCkpOworfQor
Cit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50
aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VC
eUlkZW50aWZpZXIoZGV2aWNlSWRlbnRpZmllcikpCisgICAgICAgIGRldmljZS0+c2Vzc2lvbkRp
ZEVuZCgpOworfQorCitSZWZQdHI8WFJEZXZpY2VQcm94eT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5
OjpkZXZpY2VCeUlkZW50aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgZm9yIChhdXRvJiBkZXZpY2UgOiBtX2RldmljZXMpIHsKKyAgICAgICAgYXV0byogZGV2aWNl
UHJveHkgPSBzdGF0aWNfY2FzdDxYUkRldmljZVByb3h5Kj4oZGV2aWNlLnB0cigpKTsKKyAgICAg
ICAgaWYgKGRldmljZVByb3h5LT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikKKyAgICAgICAg
ICAgIHJldHVybiBkZXZpY2VQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVkNDA5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eShX
ZWJQYWdlJik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7CisKKyAgICB2
b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOworICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNl
OjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6
OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBi
b29sKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFhS
RGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIpOworCisg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZSBo
YW5kbGVycworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIpOworCisg
ICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOworICAgIFdlYlBh
Z2UmIG1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTBhYzFmN2Y2MjRiNDk2ZGE1N2ExMGY5NjRl
ZjRkZDkxZjVjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lz
dGVtUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2Vzc2lvbkRpZEVuZChXZWJLaXQ6OlhSRGV2
aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4
Y2M3NDQ5NmVkNDA5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
LSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZVByb3h5
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eShXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7Ci0K
LSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOwotICAgIHZv
aWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6
RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFBsYXRm
b3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQz
Ml90LCBib29sKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLXByaXZhdGU6Ci0gICAgUmVm
UHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIp
OwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAgLy8gTWVz
c2FnZSBoYW5kbGVycwotICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZpZXIp
OwotCi0gICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOwotICAg
IFdlYlBhZ2UmIG1fcGFnZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZv
cm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3OTQwNTc5MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApA
QCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3Vu
dGVkIHsKLSAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmlj
ZUlkZW50aWZpZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEzZWZhNWI4ODJmZTZkOTdmMzFlNzhlNTFjM2QzMGZmZWE3MzNmZDAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2lt
cG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVt
TWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCi0j
aW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0jaW1wb3J0ICJYUkRl
dmljZUluZm8uaCIKLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFBs
YXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2Up
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LmlkZW50aWZpZXIoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHk6On5QbGF0
Zm9ybVhSU3lzdGVtUHJveHkoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwotfQotCi12b2lkIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQbGF0Zm9ybVhS
U3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBQ
bGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOwotICAgICAgICBmb3IgKGF1
dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRl
dmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIpKQotICAgICAg
ICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KGRldmljZUluZm8pLCAqdGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIG1fZGV2aWNlcy5zd2Fw
KGRldmljZXMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMpOwotICAgIH0p
OwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwotfQotCi12b2lkIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpyZXF1ZXN0RnJh
bWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQot
ewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0
ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6Y3JlYXRl
TGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKLXsKLSAgICByZXR1cm4g
UGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKLX0KLQotdm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Ci19Ci0KLXZvaWQgUGxh
dGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmllciBkZXZp
Y2VJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmll
cihkZXZpY2VJZGVudGlmaWVyKSkKLSAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlkRW5kKCk7Ci19
Ci0KLVJlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmRldmljZUJ5
SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBmb3IgKGF1
dG8mIGRldmljZSA6IG1fZGV2aWNlcykgewotICAgICAgICBhdXRvKiBkZXZpY2VQcm94eSA9IHN0
YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOwotICAgICAgICBpZiAoZGV2
aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJu
IGRldmljZVByb3h5OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433127</attachid>
            <date>2021-07-08 05:28:58 -0700</date>
            <delta_ts>2021-07-08 07:50:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210708142856.patch</filename>
            <type>text/plain</type>
            <size>107096</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3NDcxZjhkZTg5ODA4Yjk2
MGE0ZTQ2OThmZTdjN2ZjN2JlMzU2MzEuLmM3NTE4YjQ1YTE5ZTU1ZjlkOTQ4NjdlMjkxNWNlZTAx
NTY1MjgwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGlu
YXRvci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
bW0uCisgICAgICAgICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0uaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbjogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVz
c2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnhyU3lzdGVtUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4K
KwogMjAyMS0wNy0wNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgog
CiAgICAgICAgIFtHVEs0XSBOYXZpZ2F0aW9uIHN3aXBlIGRvZXNuJ3Qgd29yayB3aGVuIHRoZSBw
YWdlIHNjcm9sbHMgaG9yaXpvbnRhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyYTdjYjg1NWE4
N2RkNjFhZWY2NzI2NjE4M2Y1MjQxNGJjNmUzM2E4Li4wOGY1MmU1Zjc4YjA0MjdiNDYyNzMwYTZi
NzdmNmZlNTIzYmFjOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBw
bGVQYXkiCkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
WFIiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNCw2ICsyMTcsOCBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
CisKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODMsNiArMjg4LDggQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFl
MDM0MTU0NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIx
ODk0MjJjNjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2Ev
QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZlMzI5Yjg5MGE4MWI4ZGNkMzhkZGZjMDFiZDU1YzMwNDVkNjZhMzIuLjc4YTc5Mjk2ZDE1
MmI3ZTM5ODkyZjEwNzhlNmNlYzAwMmUwNWIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgXApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJ
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBA
IC0yMjAsNyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIg
XApAQCAtMjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1
Nzc2NjViOWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQw
OGM4OTJhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
CiAgICAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1
ZWQwYjY4Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9
OwotdXNpbmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlk
ZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9
OwotICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxY
UkRldmljZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBi
OGRkY2IzMTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMg
PDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhS
RGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NmU0NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhS
RGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8WFJEZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZh
dGU6Ci0gICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRp
b247IH0KLSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAg
IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3Jt
WFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5
PiBtX3hyU3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMz
OGNmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJYUkRldmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNl
UHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQot
WFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vh
a1B0cih4clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlm
aWVyOwotICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
U3RlcmVvUmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2
aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJl
c29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRl
dmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMo
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+
c2Vzc2lvbkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsK
LSAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2
ZVZyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNl
UHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYm
IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3
cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3
czsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lz
dGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCi1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJT
eXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVl
OTlkMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZm
NGZlYTMwOTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZl
YXR1cmVzIDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVz
b2x1dGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2
aWNlRmVhdHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1
Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdm
MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQ
cm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJT
eXN0ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94
clN5c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2
aWNlSW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZp
Y2VJbmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAg
bV9yZWNvbW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlv
bjsKKyAgICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRF
bmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1
cmVzKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBp
ZiAodHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBz
ZXNzaW9uTW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAg
ICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxz
ZQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwor
ICAgIHJldHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RG
TW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/
IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRm
b3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBj
cmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2
aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVBy
b3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNv
cmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
KSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkxheWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAg
Ym9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQ3Vyc29yLmNwcAppbmRleCBmYmU0MjI3MzA2ZjgwZjYxYzEyN2MzMzhjNzFlZmE1NGEyZDIw
Yzg3Li5kN2MzMjkwYzI4ZWY0YWJmMTI0YjJlNGFjODFmYzQ3MDVhYWVkYjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
TV9GT1JNQVRfUkVBREVSKQogCiAjaW5jbHVkZSAiTWVkaWFUcmFja1JlYWRlci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZU1hcC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBkNDg4YTNkOTY2ZWM2
NDFkOGRjZjY1MmZhMzdiMmI0OWQ5Y2Q0NWQ3Li5hZmQ1YTIwZjZlYjc5ZmVmMmZkMjQxOWUxNDJi
NTVhM2FjZDlkMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI4Nyw2ICsyODcsOSBAQCBTaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgQG5vLXVuaWZ5CiAKIFNoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAorU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5jcHAK
K1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorCiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmNwcAogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAKIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTUwMyw2ICs1
MDYsOCBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKIAorVUlQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW0uY3BwCisKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNwcAogV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTcy
MSw4ICs3MjYsMTIgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKIAorV2ViUHJvY2Vz
cy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCisKIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5jcHAKK1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCA0MDUwYzQwM2M0NmQ1NjRjMmU5ODNjNWYyNjU1NTFjNjk3NWNlOGZkLi4zZTQyMTJh
Mjg2ZGVhMDY1Y2MwNmU3YmRlYTQ5N2VkMTIzYTI0M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0xODUsOCArMTg1LDYgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KIFNoYXJl
ZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCiBTaGFy
ZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KLVNoYXJlZC9Db2Nv
YS9YUkRldmljZUluZm8ubW0KLVNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCiAKIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0KQEAgLTQwMyw3ICs0MDEsNyBAQCBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxl
ckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQotVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubW0KK1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2Nv
YS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dh
cm5pbmdDb2NvYS5tbQpAQCAtNTk5LDcgKzU5Nyw2IEBAIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmNwcAogCiBXZWJQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvckNvY29hLm1tCiAKLVdlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5
c3RlbVByb3h5Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC03MTYsOCArNzEzLDYg
QEAgR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTWVz
c2FnZU5hbWVzLmNwcAotUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5jcHAKLVBsYXRm
b3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMxNjExOGZjZjZmNzFl
NDVkOWRjNWVkNDY2YWM3NDg3MDdhM2NjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhS
Q29vcmRpbmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhSRGV2aWNl
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBQbGF0Zm9ybVhSQ29vcmRp
bmF0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgflBsYXRmb3JtWFJDb29yZGluYXRvcigpID0g
ZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgYW5kIHdpbGwgYmUgZml4ZWQgbGF0
ZXIuCi0gICAgc3RhdGljIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGRlZmF1bHRMYXllckhhbmRs
ZSgpIHsgcmV0dXJuIDE7IH0KLQotICAgIHVzaW5nIERldmljZUluZm9DYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+KT47Ci0gICAgdmlydHVhbCB2b2lk
IGdldFByaW1hcnlEZXZpY2VJbmZvKERldmljZUluZm9DYWxsYmFjayYmKSA9IDA7Ci0KLSAgICAv
LyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0aW9uLgotICAgIHVzaW5nIE9uU2Vzc2lvbkVuZENh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRldmljZUlkZW50aWZpZXIpPjsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9uU2Vzc2lvbkVuZENhbGxiYWNrJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklmRXhpc3RzKFdlYlBhZ2VQcm94eSYp
ID0gMDsKLQotICAgIC8vIFNlc3Npb24gZGlzcGxheSBsb29wLgotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFBsYXRmb3JtWFI6OkRldmljZTo6
UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGcmFt
ZShXZWJQYWdlUHJveHkmKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZDVhNTVkMDRjYmQ2
ZjBiOTkwMzVmMTBmY2JiNWRjNDJiN2I5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhSU3lzdGVtQWRkaXRp
b25zLm1tPgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDQ0YWQxNmU5OTRiOTc2M2VlNWQ2
ZWNlZWUwODU4M2RhMTdhZmZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
aAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOwotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1zdHJ1
Y3QgWFJEZXZpY2VJbmZvOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOwotICAgIHZpcnR1YWwgflBsYXRm
b3JtWFJTeXN0ZW0oKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKLQotICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLQotICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpOwotICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpOwotICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOwotICAgIHZvaWQgc3VibWl0RnJhbWUo
KTsKLQotICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ1M2FhZDkwYzMxNzZiOGJhMWY4NmZjMGYzOTVkMmQw
MDA0NjYwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3Rl
bSBOb3RSZWZDb3VudGVkIHsKLSAgICBFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSAtPiAo
VmVjdG9yPFdlYktpdDo6WFJEZXZpY2VJbmZvPiBkZXZpY2VzSW5mb3MpIEFzeW5jCi0gICAgSW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLSAgICBTaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCkKLSAgICBSZXF1ZXN0RnJhbWUoKSAtPiAoc3RydWN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkgQXN5bmMKLSAgICBTdWJtaXRGcmFtZSgpCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZjNkN2Y0OThjNmJjMzFlZTUw
NzczOGQyMTI1OTRlN2Y5YzZmYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtLmgiCi0KLSNpZiBFTkFCTEUo
V0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgotI2ltcG9ydCAiUGxh
dGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlN
ZXNzYWdlcy5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJTeXN0ZW06OlBsYXRm
b3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5JiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi17Ci0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhp
cyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKLXsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwotfQot
Ci12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmludmFsaWRhdGUoKQotewotICAgIGlmICh4ckNvb3Jk
aW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1f
cGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3Jt
WFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNl
SW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAo
IWRldmljZUluZm8pIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZygpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHhyQ29vcmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6U2Vzc2lvbkRpZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZF
eGlzdHMobV9wYWdlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBs
YXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+
c2NoZWR1bGVBbmltYXRpb25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzdWJtaXRGcmFtZSgpCi17Ci0gICAgaWYg
KGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkp
Ci0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnN1Ym1pdEZyYW1lKG1fcGFnZSk7Ci19Ci0KLX0KLQot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1Bs
YXRmb3JtWFJTeXN0ZW1BZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVBsYXRmb3JtWFJDb29yZGluYXRvciogUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigp
Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MzdkNmJhNmJjYjYyODU1OGJlYTdhNWU4ZDlmNDBkY2Q1NTBlMGUyZC4uODAyYzZjZWMzNjUyYjc1
NGUyZGFlNDcxZWVjNDQyNTA4ZTI1MDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
QXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAgICAgbV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyUHJveHkgPSBtYWtlVW5pcXVlPFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRG
T1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgQVNTRVJU
KCFtX3hyU3lzdGVtKTsKICAgICBtX3hyU3lzdGVtID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVhSU3lz
dGVtPigqdGhpcyk7CiAjZW5kaWYKQEAgLTc4MTQsNyArNzgxNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIAogICAg
IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CiAKLSNpZiBF
TkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVT
RShPUEVOWFIpCiAgICAgaWYgKG1feHJTeXN0ZW0pIHsKICAgICAgICAgbV94clN5c3RlbS0+aW52
YWxpZGF0ZSgpOwogICAgICAgICBtX3hyU3lzdGVtID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWQ3NDRmZWVhNWQ2ZTlhMWVkZTE1MGM0YzQwZTUx
N2JkMjY1NjVhNS4uYmU2MjdjNWM5YTFhOWFiOGMwMTY1Y2VlOWQyYTIyNTA4MTU1MjBjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4NSw3ICsxODUsNyBAQCBp
bnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklk
ZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogI2luY2x1ZGUgIlBsYXRmb3Jt
WFJTeXN0ZW0uaCIKICNlbmRpZgogCkBAIC0zMDYyLDcgKzMwNjIsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1YUlN5c3RlbT4gbV94clN5c3RlbTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCWFIpCisKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRl
dmljZUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBGSVhNRTogVGVt
cG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgorICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJldHVybiAxOyB9CisKKyAgICB1c2lu
ZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZp
Y2VJbmZvPik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJ
bmZvQ2FsbGJhY2smJikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlv
bi4KKyAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZp
Y2VJZGVudGlmaWVyKT47CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJv
eHkmLCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNl
c3Npb25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGRpc3Bs
YXkgbG9vcC4KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdl
UHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFnZVByb3h5JikgeyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmNlMmNiYTY2NzllNTM2ZGY3NzRiNDIwYTAzYTIwMWUxYjFjY2IwZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCkBAIC0w
LDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtWFJTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlBs
YXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhSU3lzdGVtKFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIG1fcGFnZS5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMpOworfQorCitQbGF0Zm9y
bVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCit7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhS
U3lzdGVtOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoeHJDb29yZGluYXRvcigpKQorICAgICAg
ICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3Jk
aW5hdG9yKCk7CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB4ckNvb3JkaW5hdG9y
LT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBXVEZNb3ZlKGRl
dmljZUluZm8pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFkZXZpY2VJbmZvKSB7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
ZGV2aWNlSW5mby52YWx1ZSgpIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAg
IGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7
CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICB4ckNvb3Jk
aW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRF
bmQoZGV2aWNlSWRlbnRpZmllcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBp
ZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4
ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxlQW5pbWF0aW9u
RnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5h
dG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3Jk
aW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOworfQorCit9CisKKyNpZiAhVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iq
IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQoreworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGFlNDUz
ZDcyY2M3MjY0MTE1ZTg4OGRhYzEzNjBiNTRkYzZkYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOworY2xhc3MgV2ViUGFnZVByb3h5Owor
CitzdHJ1Y3QgWFJEZXZpY2VJbmZvOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwg
flBsYXRmb3JtWFJTeXN0ZW0oKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRl
OgorICAgIHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOworICAgIHZvaWQgc3VibWl0
RnJhbWUoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZjRjOGJiNjI2NDY5MzRiMDY2MmVmMTNiZTE2MWVkNTJmNTJiYmVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZiBFTkFCTEUoV0VCWFIp
CisKK21lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7CisgICAgRW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5m
bz4gZGV2aWNlc0luZm9zKSBBc3luYworICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZygpCisgICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAgUmVxdWVzdEZyYW1l
KCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFz
eW5jCisgICAgU3VibWl0RnJhbWUoKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyMzU2NDc2NmUyMzAxZjQxOTZm
ZTJiZjIwMjk2NWQwMjcwYjhmMzIuLjEwMjA5M2YyMDkxZjFkNGUxOGExNjQxZjBjNzNjMDNlYjE3
MTUzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTExNCwxMiArMTExNCw2IEBACiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAv
KiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM3MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQ
cm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIEF1
eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGls
aWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07Ci0JCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAv
KiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZp
ZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI1MDgwQUYy
NjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9OwotCQk1MjYzRTI1NzI2MUU3
M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNl
UHJveHkuaCAqLzsgfTsKLQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICov
OyB9OwotCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNEYyNjFF
NzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsKLQkJNTI2M0UyNUYyNjFF
OTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQy
OTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlv
blNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgx
MDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJENUExQjAxQzU3NDk1
QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3NDk0RTAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpAQCAtMjU2Nyw2ICsyNTYx
LDE5IEBACiAJCTBGRkVEOThGMjNBMzIwMzcwMEVFRjQ1OSAvKiBXS1dlYlZpZXdNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkVEOTkwMjNBMzIwMzgwMEVFRjQ1OSAvKiBX
S1dlYlZpZXdNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJWaWV3
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThDN0IxRkVBNTU4NUUxMUNB
MkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMTE4NTAyNTYyNjczQjAxNjAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNTcyNjczQjAxNjAw
QTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJT
eXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVDMjY3M0IwNzEwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUQyNjczQjA3MTAwQTY0MjVF
IC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUUyNjczQjBB
NzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjEyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNl
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxMTg1MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5m
by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRjE5NkIzMjk0MDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQ0MjE5
NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxODgsMTggKzQxOTUsNiBAQAogCQk1MUZCMDkwMjE2M0Ez
QjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEI0MTY1MUZC
QUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZUluZm8ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAv
KiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4
MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyog
WFJEZXZpY2VQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFhSRGV2aWNlUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU1
MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUUyNjFFOTZFMDAwMThENDdEIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM3
MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0aCA9IG1hYy9XS1By
b3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM4
MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgcGF0aCA9
IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzNSw2ICs2NDMwLDM5
IEBACiAJCQluYW1lID0gIk90aGVyIEZyYW1ld29ya3MiOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhSICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1ODI2NzNCMDE2MDBB
NjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLywKKwkJCQkxMTg1MDI1NjI2NzNC
MDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCisJCQkJMTE4NTAyNTcy
NjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywK
KwkJCSk7CisJCQlwYXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKKwkJCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyog
UGxhdGZvcm1YUlN5c3RlbS5jcHAgKi8sCisJCQkJMTE4NTAyNUMyNjczQjA3MTAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKKwkJCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQyNUUgLyog
UGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQy
NUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywKKwkJ
CQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNwcCAqLywKKwkJCQkx
MTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCisJCQkJMTE4NTAy
NjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovLAorCQkJCTExODUwMjYx
MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmggKi8sCisJCQkpOworCQkJcGF0aCA9
IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUEwRUM2QjAxMjRCQkQz
NjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtNjcwMSw2ICs2NzI5LDcgQEAKIAkJCQkxQUFFMDU4QzEyNzlEQ0Q0
MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyog
UmVtb3RlTGF5ZXJUcmVlICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJz
aXRlRGF0YSAqLywKKwkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyogWFIgKi8sCiAJCQkJ
RTNCQ0U4NzcyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5jcHAg
Ki8sCiAJCQkJRTNCQ0U4NzgyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVmZXJl
bmNlcy5oICovLAogCQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2Vy
dGlvbi5jcHAgKi8sCkBAIC03MDU5LDEwICs3MDg4LDcgQEAKIAkJCQkxQUJDM0RGMzE4OTlFNDM3
MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tICovLAogCQkJCTVDNkNFNkQzMUY1OUVBMzUw
MDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmggKi8sCiAJCQkJNUM2Q0U2RDAxRjU5QkM0
NjAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0gKi8sCi0JCQkJNTI2M0UyNEQyNjFF
NkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovLAotCQkJCTUyNjNFMjRG
MjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8sCi0JCQkJNTI2M0UyNTAy
NjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8sCi0JCQkJ
NTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubW0gKi8sCisJCQkJ
MTE4NTAyNUUyNjczQjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLywK
IAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZCMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLApAQCAtODM0NywxMSArODM3
Myw2IEBACiAJCQkJQzE0RDMwNjUyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1tICov
LAogCQkJCUMxNEQzMDY4MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5oICov
LAogCQkJCUMxNEQzMDY2MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSAq
LywKLQkJCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmgg
Ki8sCi0JCQkJNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovLAot
CQkJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0gKi8sCi0JCQkJ
NTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKLQkJCQk1MjYz
RTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC05MzQxLDkgKzkzNjIsNiBAQAogCQkJ
CUMxQTE1MkQ2MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1t
ICovLAogCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5oICovLAogCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKLQkJCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCi0JCQkJNTI2M0UyNUUyNjFFOTZFMDAw
MThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1MjYz
RTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tICovLAogCQkJ
CTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05ODA5LDYgKzk4MjcsNyBAQAogCQkJ
CUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAvKiBXZWJDb3JlU3VwcG9ydCAqLywKIAkJCQlCQzAz
MkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLywKIAkJCQkxQUFDNERERTE2QjFDQkY2
MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywKKwkJCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUg
LyogWFIgKi8sCiAJCQkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5jcHAgKi8sCiAJCQkJQkNFOUMwRDAxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICovLAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMzN0JBQiAv
KiBXZWJQcm9jZXNzLmNwcCAqLywKQEAgLTk5NzQsNiArOTk5Myw3IEBACiAJCQkJMUFBRjA4OUUx
OTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTU3NjA4Mjk0MjAyQkQ4NDkw
MDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkxQTUzQzJBMzFBMzI1NjkxMDA0
RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCisJCQkJMTE4NTAyNTkyNjczQjA3MTAwQTY0MjVFIC8q
IFhSICovLAogCQkJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlhcnlQcm9jZXNz
UHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaCAqLywKIAkJCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKQEAgLTEyMTk3LDkgKzEyMjE3
LDYgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg5NDlGMTE4MjA0NEY2MDBFODk4QUEg
LyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUYyNjFFOTZF
RjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JFQjY3
QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMzA5Niw5ICsxMzExMyw2IEBACiAJCQkJQzE1RTZDQjMyNEI3QkU2RjAwRTUwMUEy
IC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTVFNkNCNDI0QjdCRTc2MDBF
NTAxQTIgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkVDREU4
MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5m
by5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2
aWNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4OWYw
NWQ1Y2M3MDY0YWNlZTQ1Y2YwOWE1MzAxNDNiNWUzYTJmZTFkLi4zMDc3NmEwMGRiMDc0ZjJkMTk3
ZDI3YTAwMDg5MjkyYjU4ODA3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTUwMyw3
ICsxNTAzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIAotI2lm
IEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAh
VVNFKE9QRU5YUikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRl
dmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6
RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS54clN5c3Rl
bVByb3h5KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYjVjOWU4ODg3MDk2ZDc5NjFiMGRiZTM1
MDNmOWI4NDYyNmFmNzMzLi5jMTUxMmY5OTg3NWQ5OTcwNzQ1ZjYyYzY1ZjVkYjI5NTIxMTE1NTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6RmxvYXRSZWN0JiYsIFZl
Y3RvcjxXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OklEKT4m
JikgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMp
ICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShD
T0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHZvaWQgZW51bWVy
YXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZv
cm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCmluZGV4IDQ0OTA3NTVmZmY3NjhkNDEwYjUzNTdmYzYxMDIyMjZlZjdlYjU2ZWUuLmUxNDE1
MGI1YjhkYTZjMTU3MDliMzBjYWMyYTlkZTQ2N2RlMmJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTQ0
MywxNSArNDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQcmludGluZygpKSk7CiB9
CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6Onhy
U3lzdGVtUHJveHkoKQotewotICAgIGlmICghbV94clN5c3RlbVByb3h5KQotICAgICAgICBtX3hy
U3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PihuZXcg
UGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7Ci0gICAgcmV0dXJuICptX3hyU3lzdGVtUHJv
eHk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQ
YWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1bHQoY29uc3QgRGF0YURldGVjdG9y
RWxlbWVudEluZm8mIGluZm8sIGNvbnN0IEludFBvaW50JiBjbGlja0xvY2F0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhY2Y4MmM5NmRm
YjdhYzJlZGVlMDFlYTg4YTY3NmRmMjMzMzViMGY5Li43M2Q0ZjAxMTY4Njg5ODY1ZTM5ZDZiNmVl
NzIyNmQyOTc1OTM1ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNzM1MSw2ICs3MzUxLDE1IEBAIHZvaWQgV2ViUGFnZTo6dGV4dEF1dG9z
aXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKK1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSgpCit7CisgICAgaWYgKCFt
X3hyU3lzdGVtUHJveHkpCisgICAgICAgIG1feHJTeXN0ZW1Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkoKnRoaXMp
KTsKKyAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBh
Z2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7CiAg
ICAgaWYgKG1lZGlhVHlwZSA9PSBtX292ZXJyaWRkZW5NZWRpYVR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjU0NTFmMDk2MjcxYjU0ZjQyYjQ0
NGZkYjZlNDVlZTU2NGE3MWUxOC4uZDVjYjViMTk3YjlkYzIzZjdmOTFlODUwYWRmYjgxZGEwNDVl
ODM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVT
RShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCiAjZW5kaWYKIApA
QCAtMTQ2MSw3ICsxNDYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dEF1dG9zaXppbmdVc2Vz
SWRlbXBvdGVudE1vZGVDaGFuZ2VkKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYg
UExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRpZgogCkBAIC0yMzYy
LDcgKzIzNjIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxXZWJD
b3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRpb247
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5B
QkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Y
UlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzU5Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUwNThjMmNlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisjaWYgRU5BQkxFKFdF
QlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0
Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5
c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwor
fQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZp
Y2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNl
c0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2Vz
OworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJv
eHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOworICAgICAgICB9CisgICAg
ICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
X2RldmljZXMpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwor
fQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9v
bCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5k
bGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKK3sK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2
aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGRldmljZSA9
IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAgICAgICAgZGV2aWNlLT5z
ZXNzaW9uRGlkRW5kKCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgeworICAgICAgICBhdXRv
KiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkp
OworICAgICAgICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2ZWQ0
MDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlUHJv
eHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5c3Rl
bVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKTsK
KworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7CisgICAg
dm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXREb3du
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhS
OjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWlu
dDMyX3QsIGJvb2wpOworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmll
cik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRpZmll
cik7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2RldmljZXM7Cisg
ICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFjMWY3ZjYyNGI0OTZkYTU3
YTEwZjk2NGVmNGRkOTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9uRGlkRW5kKFdlYktp
dDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Q
cm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0ZGU1MWExMjU4N2YxNDMy
Y2QwNjUyZThjYzc0NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhSRGV2
aWNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgUGxhdGZvcm1Y
UlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkoKTsKLQotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7
Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0
Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAgIHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJf
dCwgdWludDMyX3QsIGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKLQotcHJpdmF0ZToK
LSAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRl
bnRpZmllcik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRl
bnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2Rldmlj
ZXM7Ci0gICAgV2ViUGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNkNjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5IE5v
dFJlZkNvdW50ZWQgewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRldmljZUlkZW50aWZp
ZXIgZGV2aWNlSWRlbnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3OGU1MWMzZDMwZmZlYTcz
M2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFdFQlhS
KQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRmb3Jt
WFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2Fn
ZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3MuaCIKLSNpbXBv
cnQgIlhSRGV2aWNlSW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1l
c3BhY2UgUGxhdGZvcm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCi0gICAgOiBtX3Bh
Z2UocGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQg
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBs
YXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2VzSW5mb3MpIG11
dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7Ci0gICAgICAg
IGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewotICAgICAgICAgICAgaWYg
KGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94eTo6Y3JlYXRl
KFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9kZXZp
Y2VzLnN3YXAoZGV2aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fZGV2aWNlcyk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9y
bVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQg
UGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsK
LSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCi17Ci0gICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxhdGZv
cm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5
OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQotewotICAg
IHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhhbmRsZSgpOwotfQot
Ci12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUoKQotewotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRGcmFtZSgpKTsKLX0KLQot
dm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJZGVudGlm
aWVyIGRldmljZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJ
ZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZpY2UtPnNlc3Npb25EaWRF
bmQoKTsKLX0KLQotUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAg
IGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRldmljZVBy
b3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7Ci0gICAgICAg
IGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCi0gICAgICAgICAg
ICByZXR1cm4gZGV2aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433131</attachid>
            <date>2021-07-08 07:50:15 -0700</date>
            <delta_ts>2021-07-12 01:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226919-20210708165013.patch</filename>
            <type>text/plain</type>
            <size>107156</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU4NjZlODZhMWU3NTI3NzRm
OGI4NzJkNTA1YjgxMDBlYzc2NjI4OTQuLjZhMThlODI5YTIzYjliMjlmOWI5Nzc4YTFlODFiODUz
OTk1MzA0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbGF0
Zm9ybVhSU3lzdGVtIGFuZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgYXJlIG9ubHkgY29tcGlsZWQg
aW4gQ29jb2EgcGxhdGZvcm0gd2hpbGUgV1BFIHVzZXMgT3BlblhSLAorICAgICAgICB3aGljaCBv
bmx5IGhhcyBjb2RlIGluIFdlYkNvcmUuIEluIG9yZGVyIHRvIHJ1biBXZWJLaXQgYmFzZWQgV2Vi
WFIgb24gbm9uLWNvY29hIFZSIFN0YW5kYWxvbmUgZGV2aWNlcworICAgICAgICB3ZSBhbHNvIG5l
ZWQgdG8gc3BsaXQgdGhlIGNvZGUgYW5kIElQQyBtZXNzYWdlcyBiZXR3ZWVuIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzLgorCisgICAgICAgIFRoZSBleGlzdGluZyBQbGF0Zm9ybVhSU3lzdGVtL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eSBwYXR0ZXJuIGZpdHMgdmVyeSB3ZWxsIHRvIHRoZSBWUiBzdGFuZGFs
b25lIHNjZW5hcmlvLgorICAgICAgICBUaGlzIHBhdGNoIGVuc3VyZXMgdGhhdCB0aGUgZXhpc3Rp
bmcgY29kZSBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYXRmb3JtcyBvdGhlciB0aGFuIENvY29hLgor
CisgICAgICAgIFRlc3RlZCBieSBXZWJYUiBXUFQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUlkZW50aWZpZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5oLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tLgorICAgICAgICAqIFNoYXJlZC9Y
Ui9YUkRldmljZUluZm8uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1hSRGV2aWNlSW5mby5oLgorICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0u
CisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkuaC4KKyAgICAgICAgKiBTaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcDogQWRkIGluY2x1ZGUg
dG8gZml4IGNvbXBpbGF0aW9uIGVycm9yCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0
dGFjaFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1tLgorICAgICAgICAq
IFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLmguCisgICAgICAgICogVUlQcm9j
ZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp4clN5c3RlbVByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkubW0uCisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJv
eHkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tZXNzYWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4uCisKIDIwMjEtMDctMDgg
IFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2V0IENhcHRpb24gcHJl
ZmVyZW5jZXMgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDJhN2NiODU1
YTg3ZGQ2MWFlZjY3MjY2MTgzZjUyNDE0YmM2ZTMzYTguLjA4ZjUyZTVmNzhiMDQyN2I0NjI3MzBh
NmI3N2Y2ZmU1MjNiYWM5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBz
ZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZSIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvV2Vic2l0ZURhdGEiCisgICAgIiR7
V0VCS0lUX0RJUn0vU2hhcmVkL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2VzcyIKICAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvQyIKQEAgLTY4LDYgKzY5LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uIgogICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YSIKKyAgICAiJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvWFIiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViQXV0aG5Qcm9jZXNzIgogICAgICIk
e1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9B
cHBsZVBheSIKQEAgLTEwOCw2ICsxMTAsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UiCiAgICAgIiR7V0VCS0lU
X0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZSIKICAgICAiJHtXRUJLSVRf
RElSfS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vz
cy9YUiIKICAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UiCiAgICAgIiR7Q01BS0VfU09V
UkNFX0RJUn0vV2ViS2l0TGlicmFyaWVzIgogKQpAQCAtMjE0LDYgKzIxNyw4IEBAIHNldChXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eQogCisgICAgVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW0KKwogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCiAgICAgV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkKQEAgLTI4Myw2ICsyODgsOCBAQCBzZXQoV2Vi
S2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UKIAog
ICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcAorCisgICAgV2ViUHJvY2Vz
cy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICkKIAogc2V0KFdlYktpdF9GUkFNRVdPUktTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMDYy
MWUwMzQxNTQ1ZGZjYTY5ZTQzOGQzMjZiNzk3ZmI4MDgwYWYwNS4uMDM1ODY4OGQzMWZkZmVlZjky
YjE4OTQyMmM2MmNhODJiZTEzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAwLDcgKzEwMCw2IEBAICQoUFJPSkVDVF9ESVIpL1No
YXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9TaGFyZWQvV2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
VUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgotJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzAsNiArMTI5
LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjAwLDggKzIwMCw4
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2Nv
YS9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggZmUzMjliODkwYTgxYjhkY2QzOGRkZmMwMWJkNTVjMzA0NWQ2NmEzMi4uNzhhNzkyOTZk
MTUyYjdlMzk4OTJmMTA3OGU2Y2VjMDAyZTA1YjA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTYyLDcgKzE2Miw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJvY2Vz
cy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAJVUlQcm9jZXNzL21hYy9TZWNJ
dGVtU2hpbVByb3h5IFwKIAlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAot
CVVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtIFwKIAlVSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKIAlVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eSBcCkBAIC0xNzYsNiArMTc1LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkgXAogCVVJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwK
IAlVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgXAorCVVJUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtIFwKIAlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbiBc
CiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwK
QEAgLTIyMCw3ICsyMjAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCi0JV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkgXAogCVdlYlByb2Nlc3MvY29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ciBcCkBAIC0yMzksNiArMjM4LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCiAJV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbVByb3h5IFwKIAlQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uIFwK
IAlQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDY1MDQ4N2EzMTBhYmNi
NzU3NzY2NWI5ZmE3NzFmMTA2YzRiMzMzZmEuLmUxMjEzMTJhZDFlZjNjMDNkMGQxMTA3ZTNlNDdh
ZDA4Yzg5MmFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjE3LDcgKzIxNyw2IEBA
IGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlcgogCi0gICAgVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0KICAgICBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAgICAg
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkKICAgICBVSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CkBAIC0yNTUsNyArMjU0LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yCiAKLSAgICBX
ZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eQogICAgIFdlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogICAgIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmll
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODE4YmIyYmFkY2NlYTQzM2FmZGJh
ODVlZDBiNjhjZGVlOTlkMTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSWRlbnRpZmllci5o
CisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Ci11c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMDhiYjczZTk3NWI5ZGIxZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1hSRGV2aWNlSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVk
ZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+
Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKLSAgICBYUkRldmlj
ZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHN1cHBvcnRzT3JpZW50YXRpb25UcmFj
a2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsKLSAgICBX
ZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKLQotICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFhSRGV2aWNlSW5mbz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5
MGI4ZGRjYjMxMmUyNDIyMGM1NGE4MzBlN2U2ODdkNDE5OTc2YTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFJEZXZpY2VJbmZvLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLSNpZiBF
TkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotdm9pZCBYUkRldmljZUluZm86OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHN1cHBvcnRz
T3JpZW50YXRpb25UcmFja2luZyA8PCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA8PCBmZWF0dXJl
cyA8PCByZWNvbW1lbmRlZFJlc29sdXRpb247Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJ
bmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
WFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2
aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzT3JpZW50YXRp
b25UcmFja2luZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2
aWNlRmVhdHVyZXMuZmVhdHVyZXMpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5yZWNvbW1lbmRlZFJlc29sdXRp
b24pKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIGRldmljZUZl
YXR1cmVzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2ZhNTU4MmU2OTYzN2QuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAi
WFJEZXZpY2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OwotCi1zdHJ1Y3QgWFJEZXZpY2VJbmZvOwotCi1jbGFzcyBYUkRldmljZVByb3h5
IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxYUkRldmljZVByb3h5PiBjcmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eSYpOwotICAgIFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKLQotcHJp
dmF0ZToKLSAgICBYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBs
YXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1
dGlvbjsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlKSBmaW5hbDsKLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKSBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9Ci0g
ICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6
OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50
MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZv
cm1YUjo6TGF5ZXJIYW5kbGUpIG92ZXJyaWRlIHsgfTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKFZl
Y3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKSBmaW5hbDsKLQotICAgIFhSRGV2aWNl
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk+IG1feHJTeXN0ZW07Ci0gICAgYm9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFs
c2UgfTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwg
MCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJmY2I0MGJhNjUwYWI5MjQzNjdiYjQ3NzRiNzE5Y2Ni
YzM4Y2ZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIlhSRGV2aWNlUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2ltcG9ydCAiUGxh
dGZvcm1YUlN5c3RlbVByb3h5LmgiCi0jaW1wb3J0ICJYUkRldmljZUluZm8uaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1SZWY8WFJEZXZp
Y2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8s
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8pLCB4clN5c3RlbSkpOwotfQot
Ci1YUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNlSW5mbyYmIGRldmljZUluZm8s
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCi0gICAgOiBtX3hyU3lzdGVtKG1ha2VX
ZWFrUHRyKHhyU3lzdGVtKSkKLXsKLSAgICBtX2lkZW50aWZpZXIgPSBkZXZpY2VJbmZvLmlkZW50
aWZpZXI7Ci0gICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9IGRldmljZUluZm8uc3VwcG9y
dHNTdGVyZW9SZW5kZXJpbmc7Ci0gICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSBk
ZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsKLSAgICBtX3JlY29tbWVuZGVk
UmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNvbHV0aW9uOwotICAgIGlmICgh
ZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNldEVuYWJsZWRGZWF0dXJl
cyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8uZmVhdHVyZXMpOwotfQotCi12
b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQotewotICAgIGlmICh0cmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudCgpKQotICAgICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgp
LT5zZXNzaW9uRGlkRW5kKCk7Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIHNlc3Npb25Nb2RlKQot
ewotICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJz
aXZlVnIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3hyU3lzdGVtKQotICAgICAgICBt
X3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLX0KLQotdm9pZCBY
UkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBpZiAo
bV94clN5c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpOwotfQotCi1WZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gWFJEZXZp
Y2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKLXsKLSAgICBWZWN0b3I8RGV2
aWNlOjpWaWV3RGF0YT4gdmlld3M7Ci0gICAgaWYgKG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcg
JiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKLSAgICAgICAgdmlld3MuYXBw
ZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKLSAgICAgICAgdmlld3MuYXBwZW5k
KHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZp
ZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUgfSk7Ci0gICAgcmV0dXJuIHZp
ZXdzOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpE
ZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKG1feHJT
eXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShXVEZNb3ZlKGNhbGxiYWNr
KSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNl
UHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVp
Z2h0LCBib29sIGFscGhhKQotewotICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+
Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9w
dDsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZvcm1Y
Ujo6RGV2aWNlOjpMYXllcj4mJikKLXsKLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Y
Ui9YUkRldmljZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNl
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MThiYjJiYWRjY2VhNDMzYWZkYmE4NWVkMGI2OGNk
ZWU5OWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRl
dmljZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBYUkRldmljZUlkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFhSRGV2aWNlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8WFJEZXZp
Y2VJZGVudGlmaWVyVHlwZT47CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZWIwNWQ4Zjli
ZmY0ZmVhMzA5M2Q2YjU4OGJhOTdlMzNjMGFhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCisK
KyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBz
dXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwg
ZmVhdHVyZXMgPDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOworfQorCitzdGQ6Om9wdGlvbmFsPFhS
RGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmlu
ZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRS
ZXNvbHV0aW9uKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBk
ZXZpY2VGZWF0dXJlczsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDhiYjczZTk3NWI5ZGIx
ZDVmNzQzMTYxNzc1NTAyNGM5OWI3YjdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgWFJEZXZpY2VJbmZvIHsKKyAgICBYUkRldmljZUlkZW50aWZpZXIg
aWRlbnRpZmllcjsKKyAgICBib29sIHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyB7IGZhbHNl
IH07CisgICAgYm9vbCBzdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNlIH07CisgICAgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsKKyAgICBXZWJDb3JlOjpJbnRT
aXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAgfTsKKworICAgIHZvaWQgZW5jb2RlKElQ
Qzo6RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNl
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNzA4ZTlmMDQ0ZDNmZWM4ZjhiYjI0MTllNGQ4MzMwOWQ4
N2YzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmlj
ZVByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJYUkRldmljZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKyNpbmNsdWRlICJYUkRldmljZUlu
Zm8uaCIKKwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitSZWY8WFJEZXZpY2VQcm94eT4gWFJEZXZpY2VQcm94eTo6Y3JlYXRlKFhSRGV2aWNlSW5m
byYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgWFJEZXZpY2VQcm94eShXVEZNb3ZlKGRldmljZUluZm8pLCB4
clN5c3RlbSkpOworfQorCitYUkRldmljZVByb3h5OjpYUkRldmljZVByb3h5KFhSRGV2aWNlSW5m
byYmIGRldmljZUluZm8sIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW0pCisgICAgOiBt
X3hyU3lzdGVtKG1ha2VXZWFrUHRyKHhyU3lzdGVtKSkKK3sKKyAgICBtX2lkZW50aWZpZXIgPSBk
ZXZpY2VJbmZvLmlkZW50aWZpZXI7CisgICAgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyA9IGRl
dmljZUluZm8uc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmc7CisgICAgbV9zdXBwb3J0c09yaWVudGF0
aW9uVHJhY2tpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZzsKKyAg
ICBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiA9IGRldmljZUluZm8ucmVjb21tZW5kZWRSZXNvbHV0
aW9uOworICAgIGlmICghZGV2aWNlSW5mby5mZWF0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHNl
dEVuYWJsZWRGZWF0dXJlcyhTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIsIGRldmljZUluZm8uZmVh
dHVyZXMpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnNlc3Npb25EaWRFbmQoKQoreworICAg
IGlmICh0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQorICAgICAgICB0cmFja2luZ0FuZFJl
bmRlcmluZ0NsaWVudCgpLT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94
eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
IHNlc3Npb25Nb2RlKQoreworICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQbGF0Zm9ybVhSOjpTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3hyU3lz
dGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
KTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5n
KCkKK3sKKyAgICBpZiAobV94clN5c3RlbSkKKyAgICAgICAgbV94clN5c3RlbS0+c2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpOworfQorCitWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpW
aWV3RGF0YT4gWFJEZXZpY2VQcm94eTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKK3sK
KyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7CisgICAgaWYgKG1fc3VwcG9ydHNT
dGVyZW9SZW5kZXJpbmcgJiYgbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKKyAg
ICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAg
ICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7CisgICAgfSBl
bHNlCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6Ok5vbmUgfSk7
CisgICAgcmV0dXJuIHZpZXdzOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6OnJlcXVlc3RGcmFt
ZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnJlcXVlc3RGcmFtZShX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJI
YW5kbGU+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0
aCwgdWludDMyX3QgaGVpZ2h0LCBib29sIGFscGhhKQoreworICAgIHJldHVybiBtX3hyU3lzdGVt
ID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhh
KSA6IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzdWJtaXRGcmFtZShW
ZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikKK3sKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+c3VibWl0RnJhbWUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Y
Ui9YUkRldmljZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZlNDYzOTQ2Njg2OWE1ZTNkMDc5ZjdhY2M3
ZmE1NTgyZTY5NjM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hS
L1hSRGV2aWNlUHJveHkuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHk7CisKK3N0cnVj
dCBYUkRldmljZUluZm87CisKK2NsYXNzIFhSRGV2aWNlUHJveHkgZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1YUjo6RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFhSRGV2aWNlUHJveHk+
IGNyZWF0ZShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVByb3h5Jik7CisgICAgWFJE
ZXZpY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZCgpOworCitwcml2YXRlOgorICAgIFhSRGV2aWNl
UHJveHkoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworCisgICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lvbk1v
ZGUpIGZpbmFsIHsgcmV0dXJuIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uOyB9CisgICAgdm9pZCBp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZp
bmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZv
cm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICBWZWN0b3I8UGxhdGZvcm1Y
Ujo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVz
dEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9v
bCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVMYXllcihQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSkg
b3ZlcnJpZGUgeyB9OworICAgIHZvaWQgc3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6TGF5ZXI+JiYpIGZpbmFsOworCisgICAgWFJEZXZpY2VJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKKyAgICBXZWFrUHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4gbV94clN5c3RlbTsKKyAg
ICBib29sIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6
OkludFNpemUgbV9yZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVDdXJzb3IuY3BwCmluZGV4IGZiZTQyMjczMDZmODBmNjFjMTI3YzMzOGM3MWVmYTU0YTJk
MjBjODcuLmQ3YzMyOTBjMjhlZjRhYmYxMjRiMmU0YWM4MWZjNDcwNWFhZWRiMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShX
RUJNX0ZPUk1BVF9SRUFERVIpCiAKICNpbmNsdWRlICJNZWRpYVRyYWNrUmVhZGVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlTWFwLmg+CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRh
dGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGQ0ODhhM2Q5NjZl
YzY0MWQ4ZGNmNjUyZmEzN2IyYjQ5ZDljZDQ1ZDcuLmFmZDVhMjBmNmViNzlmZWYyZmQyNDE5ZTE0
MmI1NWEzYWNkOWQwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjg3LDYgKzI4Nyw5IEBAIFNoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcCBAbm8tdW5pZnkKIAogU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAogCitTaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNw
cAorU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCisKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9j
ZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtNTAzLDYg
KzUwNiw4IEBAIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAogCitVSVByb2Nlc3MvWFIv
UGxhdGZvcm1YUlN5c3RlbS5jcHAKKwogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCiBX
ZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
NzIxLDggKzcyNiwxMiBAQCBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3Bw
CiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCiBXZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCitXZWJQcm9j
ZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAKKwogUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCitQbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJlY2VpdmVyLmNwcAor
UGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDRjZmQwOWZhYWQwNjNiYzFhMGYyNzQwMTkyNzExOGEzYTAxNjUyNzcuLmE5NmZl
MWRkYTMwOGNjODlkMDJhOTVmMWM3ODFiNmI4NzViYTFiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTE4NSw4ICsxODUsNiBAQCBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQogU2hh
cmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNo
YXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQotU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlSW5mby5tbQotU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KIAogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQ
b2ludC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQpAQCAtNDAzLDcgKzQwMSw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBl
cm1pc3Npb25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vz
cy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCi1VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5tbQorVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQogVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
V2FybmluZ0NvY29hLm1tCkBAIC02MDEsNyArNTk5LDYgQEAgV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCiAKIFdlYlByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ29jb2EubW0KIAotV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubW0KIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQogV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKIFdlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTcxOSw4ICs3MTYs
NiBAQCBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBN
ZXNzYWdlTmFtZXMuY3BwCi1QbGF0Zm9ybVhSU3lzdGVtTWVzc2FnZVJlY2VpdmVyLmNwcAotUGxh
dGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhS
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJD
b29yZGluYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzE2MTE4ZmNmNmY3
MWU0NWQ5ZGM1ZWQ0NjZhYzc0ODcwN2EzY2MwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3Jt
WFJDb29yZGluYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiWFJEZXZp
Y2VJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiWFJEZXZpY2VJbmZvLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVhSLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNzIFBsYXRmb3JtWFJDb29y
ZGluYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUkNvb3JkaW5hdG9yKCkg
PSBkZWZhdWx0OwotCi0gICAgLy8gRklYTUU6IFRlbXBvcmFyeSBhbmQgd2lsbCBiZSBmaXhlZCBs
YXRlci4KLSAgICBzdGF0aWMgUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUgZGVmYXVsdExheWVySGFu
ZGxlKCkgeyByZXR1cm4gMTsgfQotCi0gICAgdXNpbmcgRGV2aWNlSW5mb0NhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4pPjsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJpbWFyeURldmljZUluZm8oRGV2aWNlSW5mb0NhbGxiYWNrJiYpID0gMDsKLQotICAg
IC8vIFNlc3Npb24gY3JlYXRpb24vdGVybWluYXRpb24uCi0gICAgdXNpbmcgT25TZXNzaW9uRW5k
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFhSRGV2aWNlSWRlbnRpZmllcik+OwotICAgIHZpcnR1
YWwgdm9pZCBzdGFydFNlc3Npb24oV2ViUGFnZVByb3h5JiwgT25TZXNzaW9uRW5kQ2FsbGJhY2sm
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTZXNzaW9uSWZFeGlzdHMoV2ViUGFnZVByb3h5
JikgPSAwOwotCi0gICAgLy8gU2Vzc2lvbiBkaXNwbGF5IGxvb3AuCi0gICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlQW5pbWF0aW9uRnJhbWUoV2ViUGFnZVByb3h5JiwgUGxhdGZvcm1YUjo6RGV2aWNl
OjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZy
YW1lKFdlYlBhZ2VQcm94eSYpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNWE1NWQwNGNi
ZDZmMGI5OTAzNWYxMGZjYmI1ZGM0MmI3Yjk5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJDb29yZGluYXRvci5tbQpAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbGF0Zm9y
bVhSQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJYUikgJiYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKworI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtWFJTeXN0ZW1BZGRp
dGlvbnMubW0+CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9y
bVhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNDRhZDE2ZTk5NGI5NzYzZWU1
ZDZlY2VlZTA4NTgzZGExN2FmZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQlhSKQotCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I7Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLXN0
cnVjdCBYUkRldmljZUluZm87Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW0gOiBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5Jik7Ci0gICAgdmlydHVhbCB+UGxh
dGZvcm1YUlN5c3RlbSgpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgc3RhdGljIFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJDb29yZGluYXRvcigpOwotCi0gICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAgLy8gTWVzc2FnZSBoYW5k
bGVycwotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYpOwotICAgIHZvaWQgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7Ci0gICAgdm9pZCBzdWJtaXRGcmFt
ZSgpOwotCi0gICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDUzYWFkOTBjMzE3NmI4YmExZjg2ZmMwZjM5NWQy
ZDAwMDQ2NjA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMu
aW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQlhSKQotCi1tZXNzYWdlcyAtPiBQbGF0Zm9ybVhSU3lz
dGVtIE5vdFJlZkNvdW50ZWQgewotICAgIEVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpIC0+
IChWZWN0b3I8V2ViS2l0OjpYUkRldmljZUluZm8+IGRldmljZXNJbmZvcykgQXN5bmMKLSAgICBJ
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotICAgIFNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKQotICAgIFJlcXVlc3RGcmFtZSgpIC0+IChzdHJ1Y3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKSBBc3luYwotICAgIFN1Ym1pdEZyYW1lKCkKLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9y
bVhSU3lzdGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5
c3RlbS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdmM2Q3ZjQ5OGM2YmMzMWVl
NTA3NzM4ZDIxMjU5NGU3ZjljNmZjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lz
dGVtLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKLQotI2lmIEVOQUJM
RShXRUJYUikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQ
bGF0Zm9ybVhSU3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94
eU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGxhdGZvcm1YUlN5c3RlbTo6UGxh
dGZvcm1YUlN5c3RlbShXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLXsK
LSAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZv
cm1YUlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCksICp0
aGlzKTsKLX0KLQotUGxhdGZvcm1YUlN5c3RlbTo6flBsYXRmb3JtWFJTeXN0ZW0oKQotewotICAg
IG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9y
bVhSU3lzdGVtOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKHhyQ29v
cmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvcigpLT5lbmRTZXNzaW9uSWZFeGlzdHMo
bV9wYWdlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjplbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8WFJEZXZpY2VJbmZvPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZv
cm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpOwotICAgIGlmICgheHJDb29yZGluYXRvcikgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgeHJDb29yZGluYXRvci0+Z2V0UHJpbWFyeURldmljZUluZm8oW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8WFJEZXZpY2VJ
bmZvPiBkZXZpY2VJbmZvKSBtdXRhYmxlIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXZp
Y2VJbmZvID0gV1RGTW92ZShkZXZpY2VJbmZvKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
ICghZGV2aWNlSW5mbykgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IGRldmljZUluZm8udmFsdWUoKSB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKLXsKLSAgICBhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpOwotICAgIGlmICgheHJDb29yZGluYXRvcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgeHJDb29yZGluYXRvci0+c3RhcnRTZXNzaW9uKG1fcGFnZSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXShYUkRldmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmll
cikgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBkZXZpY2VJ
ZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3Rl
bVByb3h5OjpTZXNzaW9uRGlkRW5kKGRldmljZUlkZW50aWZpZXIpKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpCi17Ci0gICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lz
dGVtOjp4ckNvb3JkaW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3ItPmVuZFNlc3Npb25J
ZkV4aXN0cyhtX3BhZ2UpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnJlcXVlc3RGcmFt
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0g
UGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9y
LT5zY2hlZHVsZUFuaW1hdGlvbkZyYW1lKG1fcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBp
ZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+c3VibWl0RnJhbWUobV9wYWdlKTsKLX0KLQotfQot
Ci0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
UGxhdGZvcm1YUlN5c3RlbUFkZGl0aW9ucy5tbT4KLSNlbHNlCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotUGxhdGZvcm1YUkNvb3JkaW5hdG9yKiBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9y
KCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAwZjBjYjZkYTIyNDg0ZTBkZWNmYzI5MjkzMjE1YjU1ODMzNjYzMTA0Li45ZjlkZTE1ZDljYTdj
ZWY0ZWJlZDg2ZjM1MjAxY2ZlYzljOWJjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKICAgICBtX3dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eSA9IG1ha2VVbmlxdWU8V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExB
VEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBBU1NF
UlQoIW1feHJTeXN0ZW0pOwogICAgIG1feHJTeXN0ZW0gPSBtYWtlVW5pcXVlPFBsYXRmb3JtWFJT
eXN0ZW0+KCp0aGlzKTsKICNlbmRpZgpAQCAtNzgxNSw3ICs3ODE1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogCiAg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKIAotI2lm
IEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAh
VVNFKE9QRU5YUikKICAgICBpZiAobV94clN5c3RlbSkgewogICAgICAgICBtX3hyU3lzdGVtLT5p
bnZhbGlkYXRlKCk7CiAgICAgICAgIG1feHJTeXN0ZW0gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhOTY0ZTYyNzYzYTFkOTY0ZWVlNmY0NjRhYTJl
M2EwNmMwNjM3NjQwLi4zMzQzNDBmMTQzYmFhNzZlNWIwZGI2OTM4NjQ4MmFlNmRiNWI0YTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTg1LDcgKzE4NSw3IEBA
IGludGVyZmFjZSBJRDNEMTFEZXZpY2UxOwogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9u
SWRlbnRpZmllci5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENP
Q09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZv
cm1YUlN5c3RlbS5oIgogI2VuZGlmCiAKQEAgLTMwNjIsNyArMzA2Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50OwogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShD
T0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVhSU3lzdGVtPiBtX3hyU3lzdGVtOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDMxNjExOGZjZjZmNzFlNDVkOWRjNWVkNDY2YWM3NDg3MDdhM2NjMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhS
RGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworCitjbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IgeworcHVibGljOgorICAgIHZpcnR1
YWwgflBsYXRmb3JtWFJDb29yZGluYXRvcigpID0gZGVmYXVsdDsKKworICAgIC8vIEZJWE1FOiBU
ZW1wb3JhcnkgYW5kIHdpbGwgYmUgZml4ZWQgbGF0ZXIuCisgICAgc3RhdGljIFBsYXRmb3JtWFI6
OkxheWVySGFuZGxlIGRlZmF1bHRMYXllckhhbmRsZSgpIHsgcmV0dXJuIDE7IH0KKworICAgIHVz
aW5nIERldmljZUluZm9DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+KT47CisgICAgdmlydHVhbCB2b2lkIGdldFByaW1hcnlEZXZpY2VJbmZvKERldmlj
ZUluZm9DYWxsYmFjayYmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0
aW9uLgorICAgIHVzaW5nIE9uU2Vzc2lvbkVuZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRl
dmljZUlkZW50aWZpZXIpPjsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQ
cm94eSYsIE9uU2Vzc2lvbkVuZENhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5k
U2Vzc2lvbklmRXhpc3RzKFdlYlBhZ2VQcm94eSYpID0gMDsKKworICAgIC8vIFNlc3Npb24gZGlz
cGxheSBsb29wLgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBh
Z2VQcm94eSYsIFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGcmFtZShXZWJQYWdlUHJveHkmKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yY2UyY2JhNjY3OWU1MzZkZjc3NGI0MjBhMDNhMjAxZTFiMWNjYjBmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKQEAg
LTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1YUlN5c3RlbS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAi
UGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJTeXN0ZW06OlBsYXRmb3JtWFJTeXN0ZW0oV2Vi
UGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgbV9wYWdlLnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1BsYXRm
b3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKK3sKKyAgICBtX3BhZ2UucHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworfQorCit2b2lkIFBsYXRmb3Jt
WFJTeXN0ZW06OmludmFsaWRhdGUoKQoreworICAgIGlmICh4ckNvb3JkaW5hdG9yKCkpCisgICAg
ICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29v
cmRpbmF0b3IoKTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhyQ29vcmRpbmF0
b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gZGV2aWNlSW5mbykg
bXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNlSW5mbyA9IFdURk1vdmUo
ZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWRldmljZUluZm8pIHsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7Cisg
ICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KTsKKyAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIHhyQ29v
cmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRlbnRpZmllcl0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6U2Vzc2lvbkRp
ZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAg
IGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRv
cigpKQorICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZFeGlzdHMobV9wYWdlKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+c2NoZWR1bGVBbmltYXRp
b25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjpzdWJtaXRGcmFtZSgpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRp
bmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29v
cmRpbmF0b3ItPnN1Ym1pdEZyYW1lKG1fcGFnZSk7Cit9CisKK30KKworI2lmICFVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1BsYXRmb3JtWFJDb29yZGluYXRv
ciogUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWU0
NTNkNzJjYzcyNjQxMTVlODg4ZGFjMTM2MGI1NGRjNmRjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I7CitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK3N0cnVjdCBYUkRldmljZUluZm87CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW0gOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVh
bCB+UGxhdGZvcm1YUlN5c3RlbSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIFBsYXRmb3JtWFJDb29yZGluYXRvciogeHJDb29yZGluYXRvcigpOwor
CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYpOworICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4mJik7CisgICAgdm9pZCBzdWJt
aXRGcmFtZSgpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmNGM4YmI2MjY0NjkzNGIwNjYyZWYxM2JlMTYxZWQ1MmY1MmJiZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2lmIEVOQUJMRShXRUJY
UikKKworbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbSBOb3RSZWZDb3VudGVkIHsKKyAgICBF
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSAtPiAoVmVjdG9yPFdlYktpdDo6WFJEZXZpY2VJ
bmZvPiBkZXZpY2VzSW5mb3MpIEFzeW5jCisgICAgSW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVy
aW5nKCkKKyAgICBTaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKKyAgICBSZXF1ZXN0RnJh
bWUoKSAtPiAoc3RydWN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkg
QXN5bmMKKyAgICBTdWJtaXRGcmFtZSgpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTA0ZjhiMjdjODQ0OGNhMjg0
YjI2MzM5ZDBlNGUwZGQzN2U5YTM5ZS4uZDkzOGVjZjczZjBmM2IxOWNmNDBhMGEzMDA1YjYzZDNk
NjY4OWZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTE1LDEyICsxMTE1LDYgQEAKIAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3
IC8qIEF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzcxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGlsaWFy
eVByb2Nlc3NNZXNzYWdlcy5oICovOyB9OwogCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyog
QXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBRUMzNjFCMDY1NzMxMDAwOUM0RTcgLyogQXV4
aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRkQxOEI2MTY1MUZC
QUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVF
IC8qIFhSRGV2aWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRp
Zmllci5oICovOyB9OwotCQk1MjUwODBCMjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUwODBB
RjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi87IH07Ci0JCTUyNjNFMjU3MjYx
RTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZp
Y2VQcm94eS5oICovOyB9OwotCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjYzRTI0RDI2MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgg
Ki87IH07Ci0JCTUyNjNFMjVCMjYxRTkzQUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI0RjI2
MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oICovOyB9OwotCQk1MjYzRTI1RjI2
MUU5NkVGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi87IH07CiAJCTUyNzJENEM5MUU3MzVGMDkwMEVC
NDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0
aW9uU3BhY2VOUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUyOEMzN0MxMTk1Q0JCMUEwMEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYy
ODEwMTk1OEY0NzgwMDhDQUM3MiAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkQ1QTFCMDFDNTc0
OTVBMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBQTFDNTc0OTRFMDBERTM0
QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggKi87IH07CkBAIC0yNTY4LDYgKzI1
NjIsMTkgQEAKIAkJMEZGRUQ5OEYyM0EzMjAzNzAwRUVGNDU5IC8qIFdLV2ViVmlld01hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRUQ5OTAyM0EzMjAzODAwRUVGNDU5IC8q
IFdLV2ViVmlld01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZp
ZXdNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3QjFGRUE1NTg1RTEx
Q0EyQ0JCIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxMTg1MDI1NjI2NzNCMDE2MDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1NzI2NzNCMDE2
MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTE4NTAyNTgyNjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyogUGxhdGZvcm1Y
UlN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBs
YXRmb3JtWFJDb29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUMyNjczQjA3MTAwQTY0
MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3Rl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQy
NUUgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVt
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI1RTI2NzNC
MEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2MTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZp
Y2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTExODUwMjYyMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxMTg1MDI2MzI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJ
bmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0
NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLU2Vzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDQy
MTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5NCwxOCArNDIwMSw2IEBACiAJCTUxRkIwOTAyMTYz
QTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRkQxOEIzMTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGRDE4QjQxNjUx
RkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhSRGV2aWNlSW5mby5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1MDgwQUUyNjFCREU2QjAwNjc4QUVF
IC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBYUkRldmljZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI1
MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYUkRldmljZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0
ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI0RjI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjUwMjYxRTcyRUMwMDE4RDQ3RCAvKiBQbGF0Zm9y
bVhSU3lzdGVtLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU0MjYxRTczREUwMDE4RDQ3RCAv
KiBYUkRldmljZVByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gWFJEZXZpY2VQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0Uy
NTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MjYzRTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZv
cm1YUlN5c3RlbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1RTI2MUU5NkUwMDAxOEQ0N0Qg
LyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0
QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5oOyBwYXRoID0gbWFjL1dL
UHJvdGVjdGlvblNwYWNlTlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkQ0
QzgxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBwYXRo
ID0gbWFjL1dLUHJvdGVjdGlvblNwYWNlTlMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyRDVBMUFBMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDQzLDYgKzY0Mzgs
MzkgQEAKIAkJCW5hbWUgPSAiT3RoZXIgRnJhbWV3b3JrcyI7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUgLyogWFIgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjU4MjY3M0IwMTYw
MEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICovLAorCQkJCTExODUwMjU2MjY3
M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKKwkJCQkxMTg1MDI1
NzI2NzNCMDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJKTsKKwkJCXBhdGggPSBYUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTExODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTE4NTAyNUIyNjczQjA3MTAwQTY0MjVFIC8qIFBs
YXRmb3JtWFJDb29yZGluYXRvci5oICovLAorCQkJCTExODUwMjVBMjY3M0IwNzEwMEE2NDI1RSAv
KiBQbGF0Zm9ybVhSU3lzdGVtLmNwcCAqLywKKwkJCQkxMTg1MDI1QzI2NzNCMDcxMDBBNjQyNUUg
LyogUGxhdGZvcm1YUlN5c3RlbS5oICovLAorCQkJCTExODUwMjVEMjY3M0IwNzEwMEE2NDI1RSAv
KiBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBYUjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTExODUwMjYwMjY3M0IwREEwMEE2
NDI1RSAvKiBYUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5oICovLAor
CQkJCTExODUwMjY0MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uY3BwICovLAorCQkJ
CTExODUwMjY1MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUluZm8uaCAqLywKKwkJCQkxMTg1
MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5jcHAgKi8sCisJCQkJMTE4NTAy
NjEyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQTBFQzZCMDEyNEJC
RDM2MDA3RUY0QTUgLyogUGx1Z2luUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC02NzA5LDYgKzY3MzcsNyBAQAogCQkJCTFBQUUwNThDMTI3OURD
RDQwMDg1MjQxOCAvKiBQbHVnaW5zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAv
KiBSZW1vdGVMYXllclRyZWUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdl
YnNpdGVEYXRhICovLAorCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKIAkJ
CQlFM0JDRTg3NzI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzLmNw
cCAqLywKIAkJCQlFM0JDRTg3ODI2NzI1MjEyMDAxMUQ4REIgLyogQWNjZXNzaWJpbGl0eVByZWZl
cmVuY2VzLmggKi8sCiAJCQkJQTdENzkyRDUxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNz
ZXJ0aW9uLmNwcCAqLywKQEAgLTcwNjcsMTAgKzcwOTYsNyBAQAogCQkJCTFBQkMzREYzMTg5OUU0
MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2Q0U2RDMxRjU5RUEz
NTAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKIAkJCQk1QzZDRTZEMDFGNTlC
QzQ2MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5tbSAqLywKLQkJCQk1MjYzRTI0RDI2
MUU2RkI5MDAxOEQ0N0QgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmggKi8sCi0JCQkJNTI2M0Uy
NEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKLQkJCQk1MjYzRTI1
MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKLQkJ
CQk1MjYzRTI0RTI2MUU3MkVCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5tbSAqLywKKwkJ
CQkxMTg1MDI1RTI2NzNCMEE3MDBBNjQyNUUgLyogUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tICov
LAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkw
MUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCkBAIC04MzU5LDExICs4
Mzg1LDYgQEAKIAkJCQlDMTREMzA2NTI0Qjc5NEU3MDA0ODAzODcgLyogWFBDRW5kcG9pbnQubW0g
Ki8sCiAJCQkJQzE0RDMwNjgyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lmgg
Ki8sCiAJCQkJQzE0RDMwNjYyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Q2xpZW50Lm1t
ICovLAotCQkJCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIu
aCAqLywKLQkJCQk1MjUwODBBRjI2MUJERTZDMDA2NzhBRUUgLyogWFJEZXZpY2VJbmZvLmggKi8s
Ci0JCQkJNTI1MDgwQUQyNjFCREU2QjAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5tbSAqLywKLQkJ
CQk1MjYzRTI1NTI2MUU3M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oICovLAotCQkJCTUy
NjNFMjU0MjYxRTczREUwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5Lm1tICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBjb2NvYTsKIAkJCXBhdGggPSBDb2NvYTsKQEAgLTkzNTMsOSArOTM3NCw2IEBACiAJ
CQkJQzFBMTUyRDYyNEU1QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMu
bW0gKi8sCiAJCQkJQzE0RDM3RkMyNEFDREY0NTAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0
YWJhc2VNYW5hZ2VyLmggKi8sCiAJCQkJQzE0RDM3RkQyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tICovLAotCQkJCTUyNjNFMjVEMjYxRTk2REYwMDE4
RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCAqLywKLQkJCQk1MjYzRTI1RTI2MUU5NkUw
MDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTUy
NjNFMjVDMjYxRTk2REYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0gKi8sCiAJ
CQkJNDQ2REM2NEIyNEEyRDhBRDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLmggKi8sCiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIuaCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk4MjEsNiArOTgzOSw3IEBACiAJ
CQkJQkMwMzJENUQxMEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0ICovLAogCQkJCUJD
MDMyRDVFMTBGNDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovLAogCQkJCTFBQUM0RERFMTZCMUNC
RjYwMDk0MjVFMyAvKiBXZWJTdG9yYWdlICovLAorCQkJCTExODUwMjU1MjY3M0IwMTYwMEE2NDI1
RSAvKiBYUiAqLywKIAkJCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmNwcCAqLywKIAkJCQlCQ0U5QzBEMDE0ODU5NjVEMDBFMzNENjEgLyogV2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzLmggKi8sCiAJCQkJQkMxMTFBRTMxMTJGNUMyNjAwMzM3QkFC
IC8qIFdlYlByb2Nlc3MuY3BwICovLApAQCAtOTk4OCw2ICsxMDAwNyw3IEBACiAJCQkJMUFBRjA4
OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovLAogCQkJCTU3NjA4Mjk0MjAyQkQ4
NDkwMDExNjY3OCAvKiBXZWJBdXRoZW50aWNhdGlvbiAqLywKIAkJCQkxQTUzQzJBMzFBMzI1Njkx
MDA0RThDNzAgLyogV2Vic2l0ZURhdGEgKi8sCisJCQkJMTE4NTAyNTkyNjczQjA3MTAwQTY0MjVF
IC8qIFhSICovLAogCQkJCUUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlhcnlQcm9j
ZXNzUHJveHkuY3BwICovLAogCQkJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhpbGlh
cnlQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKQEAgLTEyMjEyLDkgKzEy
MjMyLDYgQEAKIAkJCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg5NDlGMTE4MjA0NEY2MDBFODk4
QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0M0M0FCQjEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QTI2MUU5M0E3MDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUYyNjFF
OTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDQ2REM2NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFDQ0YgLyog
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JF
QjY3QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzExMiw5ICsxMzEyOSw2IEBACiAJCQkJQzE1RTZDQjMyNEI3QkU2RjAwRTUw
MUEyIC8qIFhQQ0VuZHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTVFNkNCNDI0QjdCRTc2
MDBFNTAxQTIgLyogWFBDRW5kcG9pbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkVD
REU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTI1MDgwQjEyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNl
SW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNTcyNjFFNzNERjAwMThENDdEIC8qIFhS
RGV2aWNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4
OWYwNWQ1Y2M3MDY0YWNlZTQ1Y2YwOWE1MzAxNDNiNWUzYTJmZTFkLi4zMDc3NmEwMGRiMDc0ZjJk
MTk3ZDI3YTAwMDg5MjkyYjU4ODA3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTUw
Myw3ICsxNTAzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3dNZWRpYUNvbnRyb2xzQ29u
dGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3QKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIAot
I2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAm
JiAhVVNFKE9QRU5YUikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnVtZXJhdGVJbW1lcnNpdmVY
UkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBQbGF0Zm9ybVhSOjpJbnN0YW5j
ZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS54clN5
c3RlbVByb3h5KCkuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYjVjOWU4ODg3MDk2ZDc5NjFiMGRi
ZTM1MDNmOWI4NDYyNmFmNzMzLi5jMTUxMmY5OTg3NWQ5OTcwNzQ1ZjYyYzY1ZjVkYjI5NTIxMTE1
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoV2ViQ29yZTo6RmxvYXRSZWN0JiYs
IFZlY3RvcjxXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OklE
KT4mJikgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVO
VVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9S
TShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogICAgIHZvaWQgZW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxh
dGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCmluZGV4IDQ0OTA3NTVmZmY3NjhkNDEwYjUzNTdmYzYxMDIyMjZlZjdlYjU2ZWUuLmUx
NDE1MGI1YjhkYTZjMTU3MDliMzBjYWMyYTlkZTQ2N2RlMmJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAg
LTQ0MywxNSArNDQzLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQREZGaXJzdFBhZ2VTaXplKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGEKICAgICBjb21wbGV0aW9u
SGFuZGxlcihGbG9hdFNpemUocGx1Z2luLT5wZGZEb2N1bWVudFNpemVGb3JQcmludGluZygpKSk7
CiB9CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi1QbGF0Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6
OnhyU3lzdGVtUHJveHkoKQotewotICAgIGlmICghbV94clN5c3RlbVByb3h5KQotICAgICAgICBt
X3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5Pihu
ZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlzKSk7Ci0gICAgcmV0dXJuICptX3hyU3lzdGVt
UHJveHk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBX
ZWJQYWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1bHQoY29uc3QgRGF0YURldGVj
dG9yRWxlbWVudEluZm8mIGluZm8sIGNvbnN0IEludFBvaW50JiBjbGlja0xvY2F0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhZjkwNTQw
ODExN2JiZDYyMzkyMTJkMWQ5ZTE0YWEyYTk3ZjQxMTI5Li43MDk3NDkzYWZiMGJhNjdlMDM0ZmQw
NWNjOTBiZDgxNGUwMDQyMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNzMxOCw2ICs3MzE4LDE1IEBAIHZvaWQgV2ViUGFnZTo6dGV4dEF1
dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKK1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eSYgV2ViUGFnZTo6eHJTeXN0ZW1Qcm94eSgpCit7CisgICAgaWYg
KCFtX3hyU3lzdGVtUHJveHkpCisgICAgICAgIG1feHJTeXN0ZW1Qcm94eSA9IHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+KG5ldyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkoKnRo
aXMpKTsKKyAgICByZXR1cm4gKm1feHJTeXN0ZW1Qcm94eTsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCiB7
CiAgICAgaWYgKG1lZGlhVHlwZSA9PSBtX292ZXJyaWRkZW5NZWRpYVR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmU1MmZlMzQ3ZWE1MWU3YWM2
Yjg1YjVlZWE3ZjA0YjNjNmViM2I2ZC4uMTc4YmNmOTZjYTIzNDc4OWY1MzQwN2JkZTQxYjZhYTVj
MGJkZTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTQ1LDcgKzE0NSw3IEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0Owog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oPgogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYg
IVVTRShPUEVOWFIpCiAjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCiAjZW5kaWYK
IApAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dEF1dG9zaXppbmdV
c2VzSWRlbXBvdGVudE1vZGVDaGFuZ2VkKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikg
JiYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAg
ICBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtUHJveHkoKTsKICNlbmRpZgogCkBAIC0y
MzYzLDcgKzIzNjMsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxX
ZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRp
b247CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYg
RU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1YUlN5c3RlbVByb3h5PiBtX3hyU3lzdGVtUHJveHk7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzU5Yjk2YzdiNzdjNGM4ODkzY2QyZGQ5NGI0MDI4MjUwNThjMmNlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgorCisjaWYgRU5BQkxF
KFdFQlhSKQorCisjaW5jbHVkZSAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFBsYXRmb3JtWFI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQ
bGF0Zm9ybVhSU3lzdGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdl
KQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitQbGF0Zm9y
bVhSU3lzdGVtUHJveHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkp
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3Qm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMo
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2
aWNlc0luZm9zKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZp
Y2VzOworICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZv
LmlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNl
UHJveHk6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOworICAgICAgICB9Cisg
ICAgICAgIG1fZGV2aWNlcy5zd2FwKGRldmljZXMpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtX2RldmljZXMpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6
aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkp
OworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06
OlNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwg
Ym9vbCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJI
YW5kbGUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkK
K3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJh
bWUoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhS
RGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvIGRldmlj
ZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKKyAgICAgICAgZGV2aWNl
LT5zZXNzaW9uRGlkRW5kKCk7Cit9CisKK1JlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgeworICAgICAgICBh
dXRvKiBkZXZpY2VQcm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRy
KCkpOworICAgICAgICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIGRldmljZVByb3h5OworICAgIH0KKworICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lz
dGVtUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTM0ZGU1MWExMjU4N2YxNDMyY2QwNjUyZThjYzc0NDk2
ZWQ0MDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlhSRGV2aWNl
UHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1YUlN5
c3RlbVByb3h5KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVtUHJveHko
KTsKKworICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJik7Cisg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8
UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwg
dWludDMyX3QsIGJvb2wpOworICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRp
Zmllcik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRp
Zmllcik7CisKKyAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2RldmljZXM7
CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5MGFjMWY3ZjYyNGI0OTZk
YTU3YTEwZjk2NGVmNGRkOTFmNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK21lc3NhZ2VzIC0+IFBs
YXRmb3JtWFJTeXN0ZW1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXNzaW9uRGlkRW5kKFdl
YktpdDo6WFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0
ZW1Qcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0ZGU1MWExMjU4N2Yx
NDMyY2QwNjUyZThjYzc0NDk2ZWQ0MDkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhS
RGV2aWNlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0ZW1Q
cm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgUGxhdGZv
cm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVhSU3lzdGVt
UHJveHkoKTsKLQotICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QmKT4m
Jik7Ci0gICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHJlcXVlc3RGcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpOwotICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50
MzJfdCwgdWludDMyX3QsIGJvb2wpOwotICAgIHZvaWQgc3VibWl0RnJhbWUoKTsKLQotcHJpdmF0
ZToKLSAgICBSZWZQdHI8WFJEZXZpY2VQcm94eT4gZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNl
SWRlbnRpZmllcik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0K
LSAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKFhSRGV2aWNl
SWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBtX2Rl
dmljZXM7Ci0gICAgV2ViUGFnZSYgbV9wYWdlOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc5NDA1NzkxYjYxNTQzOGE5YmY3ZGI0YjRiMDA2Njg3MDgyOTNkNjMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbgorKysg
L2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3RlbVByb3h5
IE5vdFJlZkNvdW50ZWQgewotICAgIFNlc3Npb25EaWRFbmQoV2ViS2l0OjpYUkRldmljZUlkZW50
aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmE1Yjg4MmZlNmQ5N2YzMWU3OGU1MWMzZDMwZmZl
YTczM2ZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFdF
QlhSKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgotI2ltcG9ydCAiUGxhdGZvcm1YUlN5c3RlbVByb3h5TWVz
c2FnZXMuaCIKLSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3MuaCIKLSNp
bXBvcnQgIlhSRGV2aWNlSW5mby5oIgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBu
YW1lc3BhY2UgUGxhdGZvcm1YUjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6UGxhdGZvcm1YUlN5c3RlbVByb3h5KFdlYlBhZ2UmIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpLCAqdGhpcyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6flBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJbnN0YW5jZTo6RGV2aWNlTGlzdCYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OlBsYXRmb3JtWFJTeXN0ZW06OkVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFhSRGV2aWNlSW5mbz4mJiBkZXZpY2VzSW5mb3Mp
IG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0IGRldmljZXM7Ci0gICAg
ICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGRldmljZXNJbmZvcykgewotICAgICAgICAgICAg
aWYgKGF1dG8gZGV2aWNlID0gZGV2aWNlQnlJZGVudGlmaWVyKGRldmljZUluZm8uaWRlbnRpZmll
cikpCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoKmRldmljZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoWFJEZXZpY2VQcm94eTo6Y3Jl
YXRlKFdURk1vdmUoZGV2aWNlSW5mbyksICp0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9k
ZXZpY2VzLnN3YXAoZGV2aWNlcyk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fZGV2aWNl
cyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojppbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKQotewotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0
Zm9ybVhSU3lzdGVtOjpJbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZv
aWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
LXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCi17Ci0gICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UGxh
dGZvcm1YUlN5c3RlbTo6UmVxdWVzdEZyYW1lKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQot
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gUGxhdGZvcm1YUlN5c3RlbVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKQotewot
ICAgIHJldHVybiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3I6OmRlZmF1bHRMYXllckhhbmRsZSgpOwot
fQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c3VibWl0RnJhbWUoKQotewotICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpTdWJtaXRGcmFtZSgpKTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNlc3Npb25EaWRFbmQoWFJEZXZpY2VJZGVu
dGlmaWVyIGRldmljZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8gZGV2aWNlID0gZGV2aWNl
QnlJZGVudGlmaWVyKGRldmljZUlkZW50aWZpZXIpKQotICAgICAgICBkZXZpY2UtPnNlc3Npb25E
aWRFbmQoKTsKLX0KLQotUmVmUHRyPFhSRGV2aWNlUHJveHk+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6ZGV2aWNlQnlJZGVudGlmaWVyKFhSRGV2aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKQotewot
ICAgIGZvciAoYXV0byYgZGV2aWNlIDogbV9kZXZpY2VzKSB7Ci0gICAgICAgIGF1dG8qIGRldmlj
ZVByb3h5ID0gc3RhdGljX2Nhc3Q8WFJEZXZpY2VQcm94eSo+KGRldmljZS5wdHIoKSk7Ci0gICAg
ICAgIGlmIChkZXZpY2VQcm94eS0+aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCi0gICAgICAg
ICAgICByZXR1cm4gZGV2aWNlUHJveHk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433305</attachid>
            <date>2021-07-12 01:59:25 -0700</date>
            <delta_ts>2021-07-12 02:31:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-226919-20210712105923.patch</filename>
            <type>text/plain</type>
            <size>107154</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU4NjZlODZhMWU3NTI3NzRm
OGI4NzJkNTA1YjgxMDBlYzc2NjI4OTQuLjZiMDVhMzhjNDNkOTA4ZjM4YTU0YmJlMjM3YTVmMmIy
ZTMzZmQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDYtMTEgIEltYW5vbCBG
ZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jvc3MgcGxhdGZv
cm0gY29tcGlsYXRpb24gb2YgUGxhdGZvcm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgUGxhdGZv
cm1YUlN5c3RlbSBhbmQgUGxhdGZvcm1YUlN5c3RlbVByb3h5IGFyZSBvbmx5IGNvbXBpbGVkIGlu
IENvY29hIHBsYXRmb3JtIHdoaWxlIFdQRSB1c2VzIE9wZW5YUiwKKyAgICAgICAgd2hpY2ggb25s
eSBoYXMgY29kZSBpbiBXZWJDb3JlLiBJbiBvcmRlciB0byBydW4gV2ViS2l0IGJhc2VkIFdlYlhS
IG9uIG5vbi1jb2NvYSBWUiBTdGFuZGFsb25lIGRldmljZXMKKyAgICAgICAgd2UgYWxzbyBuZWVk
IHRvIHNwbGl0IHRoZSBjb2RlIGFuZCBJUEMgbWVzc2FnZXMgYmV0d2VlbiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzcy4KKworICAgICAgICBUaGUgZXhpc3RpbmcgUGxhdGZvcm1YUlN5c3RlbS9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkgcGF0dGVybiBmaXRzIHZlcnkgd2VsbCB0byB0aGUgVlIgc3RhbmRhbG9u
ZSBzY2VuYXJpby4KKyAgICAgICAgVGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgdGhlIGV4aXN0aW5n
IGNvZGUgY2FuIGJlIHVzZWQgaW4gbW9yZSBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBDb2NvYS4KKwor
ICAgICAgICBUZXN0ZWQgYnkgV2ViWFIgV1BULgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBTaGFyZWQvWFIvWFJEZXZpY2VJZGVudGlmaWVyLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaC4KKyAg
ICAgICAgKiBTaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbS4KKyAgICAgICAgKiBTaGFyZWQvWFIv
WFJEZXZpY2VJbmZvLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Y
UkRldmljZUluZm8uaC4KKyAgICAgICAgKiBTaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tLgor
ICAgICAgICAqIFNoYXJlZC9YUi9YUkRldmljZVByb3h5Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5LmguCisgICAgICAgICogU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHA6IEFkZCBpbmNsdWRlIHRv
IGZpeCBjb21waWxhdGlvbiBlcnJvcgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJD
b29yZGluYXRvci5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmguCisgICAgICAg
ICogVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tbS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbi4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6eHJTeXN0ZW1Qcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5Lm1tLgorICAgICAgICAqIFdlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1Y
UlN5c3RlbVByb3h5LmguCisgICAgICAgICogV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluLgorCiAyMDIxLTA3LTA4ICBQ
ZXIgQXJuZSAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBDYXB0aW9uIHByZWZl
cmVuY2VzIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyYTdjYjg1NWE4
N2RkNjFhZWY2NzI2NjE4M2Y1MjQxNGJjNmUzM2E4Li4wOGY1MmU1Zjc4YjA0MjdiNDYyNzMwYTZi
NzdmNmZlNTIzYmFjOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIgogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL1dlYnNpdGVEYXRhIgorICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC9YUiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MiCkBAIC02OCw2ICs2OSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jayIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvV2Vic2l0ZURhdGEiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL1hSIgogICAgICIke1dFQktJVF9ESVJ9L1dlYkF1dGhuUHJvY2VzcyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvQXBw
bGVQYXkiCkBAIC0xMDgsNiArMTEwLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlIgogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJTdG9yYWdlIgorICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
WFIiCiAgICAgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlIgogICAgICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1dlYktpdExpYnJhcmllcyIKICkKQEAgLTIxNCw2ICsyMTcsOCBAQCBzZXQoV2ViS2l0
X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkKIAorICAgIFVJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
CisKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MKIAogICAgIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CkBAIC0yODMsNiArMjg4LDggQEAgc2V0KFdlYktp
dF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKKworICAgIFdlYlByb2Nlc3Mv
WFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5CiApCiAKIHNldChXZWJLaXRfRlJBTUVXT1JLUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDA2MjFl
MDM0MTU0NWRmY2E2OWU0MzhkMzI2Yjc5N2ZiODA4MGFmMDUuLjAzNTg2ODhkMzFmZGZlZWY5MmIx
ODk0MjJjNjJjYTgyYmUxMzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwMCw3ICsxMDAsNiBAQCAkKFBST0pFQ1RfRElSKS9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KLSQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTMwLDYgKzEyOSw3
IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNU
X0RJUikvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwMCw4ICsyMDAsOCBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhS
U3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvY29jb2Ev
QXVkaW9DYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGZlMzI5Yjg5MGE4MWI4ZGNkMzhkZGZjMDFiZDU1YzMwNDVkNjZhMzIuLjc4YTc5Mjk2ZDE1
MmI3ZTM5ODkyZjEwNzhlNmNlYzAwMmUwNWIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE2Miw3ICsxNjIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlVSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogCVVJUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1Qcm94eSBcCiAJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKLQlV
SVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbSBcCiAJVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCiAJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgXAogCVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgXApAQCAtMTc2LDYgKzE3NSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVVJUHJv
Y2Vzcy9NZWRpYS9SZW1vdGVNZWRpYVNlc3Npb25Db29yZGluYXRvclByb3h5IFwKIAlVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJ
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyIFwKKwlVSVByb2Nlc3MvWFIvUGxhdGZv
cm1YUlN5c3RlbSBcCiAJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCkBA
IC0yMjAsNyArMjIwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAotCVdlYlBy
b2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5IFwKIAlXZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIg
XApAQCAtMjM5LDYgKzIzOCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAogCVdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1hSL1BsYXRmb3Jt
WFJTeXN0ZW1Qcm94eSBcCiAJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCiAJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAogCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA2NTA0ODdhMzEwYWJjYjc1
Nzc2NjViOWZhNzcxZjEwNmM0YjMzM2ZhLi5lMTIxMzEyYWQxZWYzYzAzZDBkMTEwN2UzZTQ3YWQw
OGM4OTJhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIxNyw3ICsyMTcsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgIFVJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVt
CiAgICAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogICAgIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5CiAgICAgVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQpAQCAtMjU1LDcgKzI1NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcgogCi0gICAgV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkKICAgICBXZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyCiAgICAgV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxOGJiMmJhZGNjZWE0MzNhZmRiYTg1
ZWQwYjY4Y2RlZTk5ZDE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUlkZW50aWZpZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFhSRGV2aWNlSWRlbnRpZmllclR5cGUgeyB9
OwotdXNpbmcgWFJEZXZpY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxYUkRldmljZUlk
ZW50aWZpZXJUeXBlPjsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzA4YmI3M2U5NzViOWRiMWQ1Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUkRldmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUg
IlhSRGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgot
Ci1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFhSRGV2aWNlSW5mbyB7Ci0gICAgWFJEZXZpY2VJ
ZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9
OwotICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgV2Vi
Q29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07Ci0KLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxY
UkRldmljZUluZm8+IGRlY29kZShJUEM6OkRlY29kZXImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VJbmZvLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTBi
OGRkY2IzMTJlMjQyMjBjNTRhODMwZTdlNjg3ZDQxOTk3NmExLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlhSRGV2aWNlSW5mby5oIgotCi0jaWYgRU5B
QkxFKFdFQlhSKQotCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgWFJEZXZpY2VJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBzdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPDwgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPDwgZmVhdHVyZXMg
PDwgcmVjb21tZW5kZWRSZXNvbHV0aW9uOwotfQotCi1zdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFhS
RGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJlczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmlj
ZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMucmVjb21tZW5kZWRSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NmU0NjM5NDY2ODY5YTVlM2QwNzlmN2FjYzdmYTU1ODJlNjk2MzdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hSRGV2aWNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhS
RGV2aWNlSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTsKLQotc3RydWN0IFhSRGV2aWNlSW5mbzsKLQotY2xhc3MgWFJEZXZpY2VQcm94eSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8WFJEZXZpY2VQcm94eT4gY3JlYXRlKFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkmKTsKLSAgICBYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQotCi0gICAgdm9pZCBzZXNzaW9uRGlkRW5kKCk7Ci0KLXByaXZh
dGU6Ci0gICAgWFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiwgUGxhdGZvcm1YUlN5c3RlbVBy
b3h5Jik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyByZXR1cm4gbV9yZWNvbW1lbmRlZFJlc29sdXRp
b247IH0KLSAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhS
OjpTZXNzaW9uTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQotICAg
IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3Jt
WFI6OkxheWVySGFuZGxlKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzdWJtaXRGcmFtZShWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikgZmluYWw7Ci0KLSAgICBYUkRldmljZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYWtQdHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5
PiBtX3hyU3lzdGVtOwotICAgIGJvb2wgbV9zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbiB7IDAsIDAg
fTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZmNiNDBiYTY1MGFiOTI0MzY3YmI0Nzc0YjcxOWNjYmMz
OGNmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJYUkRldmljZVByb3h5LmgiCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRm
b3JtWFJTeXN0ZW1Qcm94eS5oIgotI2ltcG9ydCAiWFJEZXZpY2VJbmZvLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVmPFhSRGV2aWNl
UHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJTeXN0ZW0pKTsKLX0KLQot
WFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8mJiBkZXZpY2VJbmZvLCBQ
bGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQotICAgIDogbV94clN5c3RlbShtYWtlV2Vh
a1B0cih4clN5c3RlbSkpCi17Ci0gICAgbV9pZGVudGlmaWVyID0gZGV2aWNlSW5mby5pZGVudGlm
aWVyOwotICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZpY2VJbmZvLnN1cHBvcnRz
U3RlcmVvUmVuZGVyaW5nOwotICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gZGV2
aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7Ci0gICAgbV9yZWNvbW1lbmRlZFJl
c29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlvbjsKLSAgICBpZiAoIWRl
dmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQotICAgICAgICBzZXRFbmFibGVkRmVhdHVyZXMo
U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1cmVzKTsKLX0KLQotdm9p
ZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKLXsKLSAgICBpZiAodHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQoKSkKLSAgICAgICAgdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKS0+
c2Vzc2lvbkRpZEVuZCgpOwotfQotCi12b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaW9uTW9kZSkKLXsK
LSAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2
ZVZyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV94clN5c3RlbSkKLSAgICAgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgWFJE
ZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17Ci0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKLX0KLQotVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFhSRGV2aWNl
UHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPERldmlj
ZTo6Vmlld0RhdGE+IHZpZXdzOwotICAgIGlmIChtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nICYm
IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7Ci0gICAgICAgIHZpZXdzLmFwcGVu
ZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7Ci0gICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOwotICAgIH0gZWxzZQotICAgICAgICB2aWV3
cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwotICAgIHJldHVybiB2aWV3
czsKLX0KLQotdm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmIChtX3hyU3lz
dGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RGTW92ZShjYWxsYmFjaykp
OwotfQotCi1zdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVBy
b3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCwgYm9vbCBhbHBoYSkKLXsKLSAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLXZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6TGF5ZXI+JiYpCi17Ci0gICAgaWYgKG1feHJTeXN0ZW0pCi0gICAgICAgIG1feHJT
eXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODE4YmIyYmFkY2NlYTQzM2FmZGJhODVlZDBiNjhjZGVl
OTlkMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZp
Y2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gWFJEZXZpY2VJZGVudGlmaWVyVHlwZSB7
IH07Cit1c2luZyBYUkRldmljZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFhSRGV2aWNl
SWRlbnRpZmllclR5cGU+OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGViMDVkOGY5YmZm
NGZlYTMwOTNkNmI1ODhiYTk3ZTMzYzBhYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgorCisj
aWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFhSRGV2aWNlSW5mbzo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nIDw8IHN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIDw8IGZl
YXR1cmVzIDw8IHJlY29tbWVuZGVkUmVzb2x1dGlvbjsKK30KKworc3RkOjpvcHRpb25hbDxYUkRl
dmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVyZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnJlY29tbWVuZGVkUmVz
b2x1dGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGV2
aWNlRmVhdHVyZXM7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvWFIvWFJEZXZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA4YmI3M2U5NzViOWRiMWQ1
Zjc0MzE2MTc3NTUwMjRjOTliN2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlhSRGV2aWNlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFhSRGV2aWNlSW5mbyB7CisgICAgWFJEZXZpY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSByZWNvbW1lbmRlZFJlc29sdXRpb24geyAwLCAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYTcwOGU5ZjA0NGQzZmVjOGY4YmIyNDE5ZTRkODMzMDlkODdm
MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQ
cm94eS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VQcm94eS5oIgorCisjaWYgRU5BQkxFKFdFQlhSKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1YUlN5c3RlbVByb3h5LmgiCisjaW5jbHVkZSAiWFJEZXZpY2VJbmZv
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFhSRGV2aWNlUHJveHk+IFhSRGV2aWNlUHJveHk6OmNyZWF0ZShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhSRGV2aWNlUHJveHkoV1RGTW92ZShkZXZpY2VJbmZvKSwgeHJT
eXN0ZW0pKTsKK30KKworWFJEZXZpY2VQcm94eTo6WFJEZXZpY2VQcm94eShYUkRldmljZUluZm8m
JiBkZXZpY2VJbmZvLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmIHhyU3lzdGVtKQorICAgIDogbV94
clN5c3RlbShtYWtlV2Vha1B0cih4clN5c3RlbSkpCit7CisgICAgbV9pZGVudGlmaWVyID0gZGV2
aWNlSW5mby5pZGVudGlmaWVyOworICAgIG1fc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcgPSBkZXZp
Y2VJbmZvLnN1cHBvcnRzU3RlcmVvUmVuZGVyaW5nOworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gZGV2aWNlSW5mby5zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7CisgICAg
bV9yZWNvbW1lbmRlZFJlc29sdXRpb24gPSBkZXZpY2VJbmZvLnJlY29tbWVuZGVkUmVzb2x1dGlv
bjsKKyAgICBpZiAoIWRldmljZUluZm8uZmVhdHVyZXMuaXNFbXB0eSgpKQorICAgICAgICBzZXRF
bmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyLCBkZXZpY2VJbmZvLmZlYXR1
cmVzKTsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpzZXNzaW9uRGlkRW5kKCkKK3sKKyAgICBp
ZiAodHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQoKSkKKyAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEVuZCgpOworfQorCit2b2lkIFhSRGV2aWNlUHJveHk6
OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBz
ZXNzaW9uTW9kZSkKK3sKKyAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV94clN5c3Rl
bSkKKyAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit7CisgICAgaWYgKG1feHJTeXN0ZW0pCisgICAgICAgIG1feHJTeXN0ZW0tPnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKworVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmll
d0RhdGE+IFhSRGV2aWNlUHJveHk6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGlmIChtX3N1cHBvcnRzU3Rl
cmVvUmVuZGVyaW5nICYmIG1vZGUgPT0gU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKSB7CisgICAg
ICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0gZWxz
ZQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpOb25lIH0pOwor
ICAgIHJldHVybiB2aWV3czsKK30KKwordm9pZCBYUkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChtX3hyU3lzdGVtKQorICAgICAgICBtX3hyU3lzdGVtLT5yZXF1ZXN0RnJhbWUoV1RG
TW92ZShjYWxsYmFjaykpOworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3Qgd2lkdGgs
IHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gbV94clN5c3RlbSA/
IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVj
dG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYpCit7CisgICAgaWYgKG1feHJTeXN0ZW0p
CisgICAgICAgIG1feHJTeXN0ZW0tPnN1Ym1pdEZyYW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIv
WFJEZXZpY2VQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTQ2Mzk0NjY4NjlhNWUzZDA3OWY3YWNjN2Zh
NTU4MmU2OTYzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9Y
UkRldmljZVByb3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSKQorCisjaW5jbHVkZSAiWFJEZXZpY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1YUlN5c3RlbVByb3h5OworCitzdHJ1Y3Qg
WFJEZXZpY2VJbmZvOworCitjbGFzcyBYUkRldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBsYXRm
b3JtWFI6OkRldmljZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxYUkRldmljZVByb3h5PiBj
cmVhdGUoWFJEZXZpY2VJbmZvJiYsIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYpOworICAgIFhSRGV2
aWNlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKKyAgICB2b2lkIHNlc3Npb25EaWRFbmQoKTsKKworcHJpdmF0ZToKKyAgICBYUkRldmljZVBy
b3h5KFhSRGV2aWNlSW5mbyYmLCBQbGF0Zm9ybVhSU3lzdGVtUHJveHkmKTsKKworICAgIFdlYkNv
cmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2Rl
KSBmaW5hbCB7IHJldHVybiBtX3JlY29tbWVuZGVkUmVzb2x1dGlvbjsgfQorICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3Jt
WFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGUpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkxheWVyPiYmKSBmaW5hbDsKKworICAgIFhSRGV2aWNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgV2Vha1B0cjxQbGF0Zm9ybVhSU3lzdGVtUHJveHk+IG1feHJTeXN0ZW07CisgICAg
Ym9vbCBtX3N1cHBvcnRzU3RlcmVvUmVuZGVyaW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fcmVjb21tZW5kZWRSZXNvbHV0aW9uIHsgMCwgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQ3Vyc29yLmNwcAppbmRleCBmYmU0MjI3MzA2ZjgwZjYxYzEyN2MzMzhjNzFlZmE1NGEyZDIw
Yzg3Li5kN2MzMjkwYzI4ZWY0YWJmMTI0YjJlNGFjODFmYzQ3MDVhYWVkYjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
TV9GT1JNQVRfUkVBREVSKQogCiAjaW5jbHVkZSAiTWVkaWFUcmFja1JlYWRlci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZU1hcC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBkNDg4YTNkOTY2ZWM2
NDFkOGRjZjY1MmZhMzdiMmI0OWQ5Y2Q0NWQ3Li5hZmQ1YTIwZjZlYjc5ZmVmMmZkMjQxOWUxNDJi
NTVhM2FjZDlkMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI4Nyw2ICsyODcsOSBAQCBTaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgQG5vLXVuaWZ5CiAKIFNoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAorU2hhcmVkL1hSL1hSRGV2aWNlSW5mby5jcHAK
K1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorCiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmNwcAogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAKIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTUwMyw2ICs1
MDYsOCBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKIAorVUlQcm9jZXNzL1hSL1Bs
YXRmb3JtWFJTeXN0ZW0uY3BwCisKIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCiBXZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNwcAogV2Vi
QXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTcy
MSw4ICs3MjYsMTIgQEAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAogV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKIAorV2ViUHJvY2Vz
cy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCisKIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5jcHAKK1Bs
YXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCA0Y2ZkMDlmYWFkMDYzYmMxYTBmMjc0MDE5MjcxMThhM2EwMTY1Mjc3Li5hOTZmZTFk
ZGEzMDhjYzg5ZDAyYTk1ZjFjNzgxYjZiODc1YmExYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0xODUsOCArMTg1LDYgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KIFNoYXJl
ZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCiBTaGFy
ZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KLVNoYXJlZC9Db2Nv
YS9YUkRldmljZUluZm8ubW0KLVNoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCiAKIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQubW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZU1haW4ubW0KQEAgLTQwMyw3ICs0MDEsNyBAQCBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxl
ckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQotVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJT
eXN0ZW0ubW0KK1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2Nv
YS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dh
cm5pbmdDb2NvYS5tbQpAQCAtNjAxLDcgKzU5OSw2IEBAIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmNwcAogCiBXZWJQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvckNvY29hLm1tCiAKLVdlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5
c3RlbVByb3h5Lm1tCiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCiBXZWJQcm9j
ZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC03MTksOCArNzE2LDYg
QEAgR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTWVz
c2FnZU5hbWVzLmNwcAotUGxhdGZvcm1YUlN5c3RlbU1lc3NhZ2VSZWNlaXZlci5jcHAKLVBsYXRm
b3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUkNv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29v
cmRpbmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMxNjExOGZjZjZmNzFl
NDVkOWRjNWVkNDY2YWM3NDg3MDdhM2NjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhS
Q29vcmRpbmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIlhSRGV2aWNl
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIlhSRGV2aWNlSW5mby5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFzcyBQbGF0Zm9ybVhSQ29vcmRp
bmF0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgflBsYXRmb3JtWFJDb29yZGluYXRvcigpID0g
ZGVmYXVsdDsKLQotICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgYW5kIHdpbGwgYmUgZml4ZWQgbGF0
ZXIuCi0gICAgc3RhdGljIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGRlZmF1bHRMYXllckhhbmRs
ZSgpIHsgcmV0dXJuIDE7IH0KLQotICAgIHVzaW5nIERldmljZUluZm9DYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+KT47Ci0gICAgdmlydHVhbCB2b2lk
IGdldFByaW1hcnlEZXZpY2VJbmZvKERldmljZUluZm9DYWxsYmFjayYmKSA9IDA7Ci0KLSAgICAv
LyBTZXNzaW9uIGNyZWF0aW9uL3Rlcm1pbmF0aW9uLgotICAgIHVzaW5nIE9uU2Vzc2lvbkVuZENh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChYUkRldmljZUlkZW50aWZpZXIpPjsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRTZXNzaW9uKFdlYlBhZ2VQcm94eSYsIE9uU2Vzc2lvbkVuZENhbGxiYWNrJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kU2Vzc2lvbklmRXhpc3RzKFdlYlBhZ2VQcm94eSYp
ID0gMDsKLQotICAgIC8vIFNlc3Npb24gZGlzcGxheSBsb29wLgotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUFuaW1hdGlvbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFBsYXRmb3JtWFI6OkRldmljZTo6
UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGcmFt
ZShXZWJQYWdlUHJveHkmKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxhdGZvcm1YUkNvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2YmIxNjBiYmVhNDlm
OWVkODBkMTU1MDE2MGY4MzU1MmQxM2NhODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IubW0KQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1Y
UkNvb3JkaW5hdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCWFIpICYmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVhSU3lzdGVtQWRkaXRp
b25zLm1tPgorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDQ0YWQxNmU5OTRiOTc2M2VlNWQ2
ZWNlZWUwODU4M2RhMTdhZmZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0u
aAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOwotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1zdHJ1
Y3QgWFJEZXZpY2VJbmZvOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOwotICAgIHZpcnR1YWwgflBsYXRm
b3JtWFJTeXN0ZW0oKTsKLQotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKLQotICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLQotICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGluaXRpYWxpemVU
cmFja2luZ0FuZFJlbmRlcmluZygpOwotICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpOwotICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOwotICAgIHZvaWQgc3VibWl0RnJhbWUo
KTsKLQotICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ1M2FhZDkwYzMxNzZiOGJhMWY4NmZjMGYzOTVkMmQw
MDA0NjYwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmlu
CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShXRUJYUikKLQotbWVzc2FnZXMgLT4gUGxhdGZvcm1YUlN5c3Rl
bSBOb3RSZWZDb3VudGVkIHsKLSAgICBFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSAtPiAo
VmVjdG9yPFdlYktpdDo6WFJEZXZpY2VJbmZvPiBkZXZpY2VzSW5mb3MpIEFzeW5jCi0gICAgSW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkKLSAgICBTaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCkKLSAgICBSZXF1ZXN0RnJhbWUoKSAtPiAoc3RydWN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkgQXN5bmMKLSAgICBTdWJtaXRGcmFtZSgpCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1Y
UlN5c3RlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0
ZW0ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZjNkN2Y0OThjNmJjMzFlZTUw
NzczOGQyMTI1OTRlN2Y5YzZmYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxhdGZvcm1YUlN5c3Rl
bS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtLmgiCi0KLSNpZiBFTkFCTEUo
V0VCWFIpCi0KLSNpbXBvcnQgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgotI2ltcG9ydCAiUGxh
dGZvcm1YUlN5c3RlbU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHlN
ZXNzYWdlcy5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBsYXRmb3JtWFJTeXN0ZW06OlBsYXRm
b3JtWFJTeXN0ZW0oV2ViUGFnZVByb3h5JiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi17Ci0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3Jt
WFJTeXN0ZW06Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpLCAqdGhp
cyk7Ci19Ci0KLVBsYXRmb3JtWFJTeXN0ZW06On5QbGF0Zm9ybVhSU3lzdGVtKCkKLXsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1Y
UlN5c3RlbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOwotfQot
Ci12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmludmFsaWRhdGUoKQotewotICAgIGlmICh4ckNvb3Jk
aW5hdG9yKCkpCi0gICAgICAgIHhyQ29vcmRpbmF0b3IoKS0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1f
cGFnZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFhSRGV2aWNlSW5mbz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3Jt
WFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRpbmF0b3IpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHhyQ29vcmRpbmF0b3ItPmdldFByaW1hcnlEZXZpY2VJbmZvKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFhSRGV2aWNlSW5m
bz4gZGV2aWNlSW5mbykgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGV2aWNl
SW5mbyA9IFdURk1vdmUoZGV2aWNlSW5mbyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAo
IWRldmljZUluZm8pIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBkZXZpY2VJbmZvLnZhbHVlKCkgfSk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OmluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZygpCi17Ci0gICAgYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06
OnhyQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXhyQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHhyQ29vcmRpbmF0b3ItPnN0YXJ0U2Vzc2lvbihtX3BhZ2UsIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0oWFJEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgZGV2aWNlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW1Q
cm94eTo6U2Vzc2lvbkRpZEVuZChkZXZpY2VJZGVudGlmaWVyKSk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW06OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQotewotICAgIGlmIChhdXRvKiB4ckNvb3JkaW5hdG9yID0gUGxhdGZvcm1YUlN5c3Rl
bTo6eHJDb29yZGluYXRvcigpKQotICAgICAgICB4ckNvb3JkaW5hdG9yLT5lbmRTZXNzaW9uSWZF
eGlzdHMobV9wYWdlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpyZXF1ZXN0RnJhbWUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBs
YXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgeHJDb29yZGluYXRvci0+
c2NoZWR1bGVBbmltYXRpb25GcmFtZShtX3BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLX0KLQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtOjpzdWJtaXRGcmFtZSgpCi17Ci0gICAgaWYg
KGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCkp
Ci0gICAgICAgIHhyQ29vcmRpbmF0b3ItPnN1Ym1pdEZyYW1lKG1fcGFnZSk7Ci19Ci0KLX0KLQot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1Bs
YXRmb3JtWFJTeXN0ZW1BZGRpdGlvbnMubW0+Ci0jZWxzZQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVBsYXRmb3JtWFJDb29yZGluYXRvciogUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigp
Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MGYwY2I2ZGEyMjQ4NGUwZGVjZmMyOTI5MzIxNWI1NTgzMzY2MzEwNC4uOWY5ZGUxNWQ5Y2E3Y2Vm
NGViZWQ4NmYzNTIwMWNmZWM5YzliYzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
QXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAgICAgbV93ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyUHJveHkgPSBtYWtlVW5pcXVlPFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRG
T1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgQVNTRVJU
KCFtX3hyU3lzdGVtKTsKICAgICBtX3hyU3lzdGVtID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVhSU3lz
dGVtPigqdGhpcyk7CiAjZW5kaWYKQEAgLTc4MTUsNyArNzgxNSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIAogICAg
IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CiAKLSNpZiBF
TkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVT
RShPUEVOWFIpCiAgICAgaWYgKG1feHJTeXN0ZW0pIHsKICAgICAgICAgbV94clN5c3RlbS0+aW52
YWxpZGF0ZSgpOwogICAgICAgICBtX3hyU3lzdGVtID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTk2NGU2Mjc2M2ExZDk2NGVlZTZmNDY0YWEyZTNh
MDZjMDYzNzY0MC4uMzM0MzQwZjE0M2JhYTc2ZTViMGRiNjkzODY0ODJhZTZkYjViNGEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4NSw3ICsxODUsNyBAQCBp
bnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklk
ZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NP
QSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BFTlhSKQogI2luY2x1ZGUgIlBsYXRmb3Jt
WFJTeXN0ZW0uaCIKICNlbmRpZgogCkBAIC0zMDYyLDcgKzMwNjIsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1YUlN5c3RlbT4gbV94clN5c3RlbTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJDb29yZGluYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzMTYxMThmY2Y2ZjcxZTQ1ZDlkYzVlZDQ2NmFjNzQ4NzA3YTNjYzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCWFIpCisKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRl
dmljZUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5QbGF0Zm9ybVhSQ29vcmRpbmF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBGSVhNRTogVGVt
cG9yYXJ5IGFuZCB3aWxsIGJlIGZpeGVkIGxhdGVyLgorICAgIHN0YXRpYyBQbGF0Zm9ybVhSOjpM
YXllckhhbmRsZSBkZWZhdWx0TGF5ZXJIYW5kbGUoKSB7IHJldHVybiAxOyB9CisKKyAgICB1c2lu
ZyBEZXZpY2VJbmZvQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8WFJEZXZp
Y2VJbmZvPik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRQcmltYXJ5RGV2aWNlSW5mbyhEZXZpY2VJ
bmZvQ2FsbGJhY2smJikgPSAwOworCisgICAgLy8gU2Vzc2lvbiBjcmVhdGlvbi90ZXJtaW5hdGlv
bi4KKyAgICB1c2luZyBPblNlc3Npb25FbmRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoWFJEZXZp
Y2VJZGVudGlmaWVyKT47CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vzc2lvbihXZWJQYWdlUHJv
eHkmLCBPblNlc3Npb25FbmRDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFNl
c3Npb25JZkV4aXN0cyhXZWJQYWdlUHJveHkmKSA9IDA7CisKKyAgICAvLyBTZXNzaW9uIGRpc3Bs
YXkgbG9vcC4KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb25GcmFtZShXZWJQYWdl
UHJveHkmLCBQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3VibWl0RnJhbWUoV2ViUGFnZVByb3h5JikgeyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmNlMmNiYTY2NzllNTM2ZGY3NzRiNDIwYTAzYTIwMWUxYjFjY2IwZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uY3BwCkBAIC0w
LDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtWFJTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShXRUJYUikKKworI2luY2x1ZGUgIlBs
YXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1NZXNzYWdl
cy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSU3lzdGVtOjpQbGF0Zm9ybVhSU3lzdGVtKFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIG1fcGFnZS5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS53ZWJQYWdlSUQoKSwgKnRoaXMpOworfQorCitQbGF0Zm9y
bVhSU3lzdGVtOjp+UGxhdGZvcm1YUlN5c3RlbSgpCit7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybVhS
U3lzdGVtOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoeHJDb29yZGluYXRvcigpKQorICAgICAg
ICB4ckNvb3JkaW5hdG9yKCktPmVuZFNlc3Npb25JZkV4aXN0cyhtX3BhZ2UpOworfQorCit2b2lk
IFBsYXRmb3JtWFJTeXN0ZW06OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3Jk
aW5hdG9yKCk7CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB4ckNvb3JkaW5hdG9y
LT5nZXRQcmltYXJ5RGV2aWNlSW5mbyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxYUkRldmljZUluZm8+IGRldmljZUluZm8pIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRldmljZUluZm8gPSBXVEZNb3ZlKGRl
dmljZUluZm8pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFkZXZpY2VJbmZvKSB7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
ZGV2aWNlSW5mby52YWx1ZSgpIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAg
IGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4ckNvb3JkaW5hdG9yKCk7
CisgICAgaWYgKCF4ckNvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICB4ckNvb3Jk
aW5hdG9yLT5zdGFydFNlc3Npb24obV9wYWdlLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldKFhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIGRldmljZUlkZW50aWZpZXJdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OlNlc3Npb25EaWRF
bmQoZGV2aWNlSWRlbnRpZmllcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBQ
bGF0Zm9ybVhSU3lzdGVtOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBp
ZiAoYXV0byogeHJDb29yZGluYXRvciA9IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgeHJDb29yZGluYXRvci0+ZW5kU2Vzc2lvbklmRXhpc3RzKG1fcGFnZSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbTo6cmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKGF1dG8qIHhyQ29vcmRpbmF0b3IgPSBQbGF0Zm9ybVhSU3lzdGVtOjp4
ckNvb3JkaW5hdG9yKCkpCisgICAgICAgIHhyQ29vcmRpbmF0b3ItPnNjaGVkdWxlQW5pbWF0aW9u
RnJhbWUobV9wYWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1YUlN5c3RlbTo6c3VibWl0RnJhbWUoKQoreworICAgIGlmIChhdXRvKiB4ckNvb3JkaW5h
dG9yID0gUGxhdGZvcm1YUlN5c3RlbTo6eHJDb29yZGluYXRvcigpKQorICAgICAgICB4ckNvb3Jk
aW5hdG9yLT5zdWJtaXRGcmFtZShtX3BhZ2UpOworfQorCit9CisKKyNpZiAhVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKK25hbWVzcGFjZSBXZWJLaXQgeworCitQbGF0Zm9ybVhSQ29vcmRpbmF0b3Iq
IFBsYXRmb3JtWFJTeXN0ZW06OnhyQ29vcmRpbmF0b3IoKQoreworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1hSL1BsYXRmb3JtWFJTeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGFlNDUz
ZDcyY2M3MjY0MTE1ZTg4OGRhYzEzNjBiNTRkYzZkYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJYUikKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUGxhdGZvcm1YUkNvb3JkaW5hdG9yOworY2xhc3MgV2ViUGFnZVByb3h5Owor
CitzdHJ1Y3QgWFJEZXZpY2VJbmZvOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtIDogcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBQbGF0Zm9ybVhSU3lzdGVtKFdlYlBhZ2VQcm94eSYpOworICAgIHZpcnR1YWwg
flBsYXRmb3JtWFJTeXN0ZW0oKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCitwcml2YXRl
OgorICAgIHN0YXRpYyBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IqIHhyQ29vcmRpbmF0b3IoKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxYUkRldmljZUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0Fu
ZFJlbmRlcmluZygpOworICAgIHZvaWQgcmVxdWVzdEZyYW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik+JiYpOworICAgIHZvaWQgc3VibWl0
RnJhbWUoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41ZjRjOGJiNjI2NDY5MzRiMDY2MmVmMTNiZTE2MWVkNTJmNTJiYmVmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbS5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZiBFTkFCTEUoV0VCWFIp
CisKK21lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW0gTm90UmVmQ291bnRlZCB7CisgICAgRW51
bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlhSRGV2aWNlSW5m
bz4gZGV2aWNlc0luZm9zKSBBc3luYworICAgIEluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZygpCisgICAgU2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCisgICAgUmVxdWVzdEZyYW1l
KCkgLT4gKHN0cnVjdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpIEFz
eW5jCisgICAgU3VibWl0RnJhbWUoKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkwNGY4YjI3Yzg0NDhjYTI4NGIy
NjMzOWQwZTRlMGRkMzdlOWEzOWUuLmQ5MzhlY2Y3M2YwZjNiMTljZjQwYTBhMzAwNWI2M2QzZDY2
ODlmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTExNSwxMiArMTExNSw2IEBACiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAv
KiBBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFFQzM3MUIwNjU3MzEwMDA5QzRFNyAvKiBBdXhpbGlhcnlQ
cm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIEF1
eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIEF1eGls
aWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUZEMThCNjE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07Ci0JCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAv
KiBYUkRldmljZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZp
ZXIuaCAqLzsgfTsKLQkJNTI1MDgwQjIyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI1MDgwQUYy
NjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovOyB9OwotCQk1MjYzRTI1NzI2MUU3
M0RGMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNl
UHJveHkuaCAqLzsgfTsKLQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTI2M0UyNEQyNjFFNkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICov
OyB9OwotCQk1MjYzRTI1QjI2MUU5M0FCMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNEYyNjFF
NzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCAqLzsgfTsKLQkJNTI2M0UyNUYyNjFF
OTZFRjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovOyB9OwogCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQy
OTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTI3MkQ0QzcxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlv
blNwYWNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MjhDMzdDMTE5NUNCQjFBMDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgx
MDE5NThGNDc4MDA4Q0FDNzIgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJENUExQjAxQzU3NDk1
QTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExQUExQzU3NDk0RTAwREUzNEEz
IC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwpAQCAtMjU2OCw2ICsyNTYy
LDE5IEBACiAJCTBGRkVEOThGMjNBMzIwMzcwMEVFRjQ1OSAvKiBXS1dlYlZpZXdNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkVEOTkwMjNBMzIwMzgwMEVFRjQ1OSAvKiBX
S1dlYlZpZXdNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJWaWV3
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThDN0IxRkVBNTU4NUUxMUNB
MkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMTE4NTAyNTYyNjczQjAxNjAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNTcyNjczQjAxNjAw
QTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTExODUwMjU4MjY3M0IwMTYwMEE2NDI1RSAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUEyNjczQjA3MTAwQTY0MjVFIC8qIFBsYXRmb3JtWFJT
eXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExODUwMjVDMjY3M0IwNzEwMEE2NDI1
RSAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUQyNjczQjA3MTAwQTY0MjVF
IC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNUUyNjczQjBB
NzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJDb29yZGluYXRvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjEyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNl
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxMTg1MDI2MjI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjMyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBYUkRldmljZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTE4NTAyNjQyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlSW5m
by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUkRldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxMTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhSRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRjE5NkIzMjk0MDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQ0MjE5
NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxOTQsMTggKzQyMDEsNiBAQAogCQk1MUZCMDkwMjE2M0Ez
QjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUZEMThCMzE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkQxOEI0MTY1MUZC
QUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUkRldmljZUluZm8ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4MEFFMjYxQkRFNkIwMDY3OEFFRSAv
KiBYUkRldmljZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WFJEZXZpY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNTA4
MEFGMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWFJEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUyNjNFMjREMjYxRTZGQjkwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSQ29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUyNjNFMjRFMjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVt
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNEYyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1YUlN5c3RlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1MDI2MUU3MkVDMDAxOEQ0N0QgLyogUGxhdGZvcm1Y
UlN5c3RlbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MjYzRTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyog
WFJEZXZpY2VQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFhSRGV2aWNlUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyNjNFMjU1
MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRldmljZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhSRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTI2M0UyNUMyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUQyNjFFOTZERjAwMThENDdEIC8qIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTI2M0UyNUUyNjFFOTZFMDAwMThENDdEIC8q
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM3
MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLUHJvdGVjdGlvblNwYWNlTlMuaDsgcGF0aCA9IG1hYy9XS1By
b3RlY3Rpb25TcGFjZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJENEM4
MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQcm90ZWN0aW9uU3BhY2VOUy5tbTsgcGF0aCA9
IG1hYy9XS1Byb3RlY3Rpb25TcGFjZU5TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkQ1QTFBQTFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ0Myw2ICs2NDM4LDM5
IEBACiAJCQluYW1lID0gIk90aGVyIEZyYW1ld29ya3MiOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJMTE4NTAyNTUyNjczQjAxNjAwQTY0MjVFIC8qIFhSICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxMTg1MDI1ODI2NzNCMDE2MDBB
NjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCAqLywKKwkJCQkxMTg1MDI1NjI2NzNC
MDE2MDBBNjQyNUUgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCisJCQkJMTE4NTAyNTcy
NjczQjAxNjAwQTY0MjVFIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywK
KwkJCSk7CisJCQlwYXRoID0gWFI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQkxMTg1MDI1OTI2NzNCMDcxMDBBNjQyNUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTExODUwMjVCMjY3M0IwNzEwMEE2NDI1RSAvKiBQbGF0
Zm9ybVhSQ29vcmRpbmF0b3IuaCAqLywKKwkJCQkxMTg1MDI1QTI2NzNCMDcxMDBBNjQyNUUgLyog
UGxhdGZvcm1YUlN5c3RlbS5jcHAgKi8sCisJCQkJMTE4NTAyNUMyNjczQjA3MTAwQTY0MjVFIC8q
IFBsYXRmb3JtWFJTeXN0ZW0uaCAqLywKKwkJCQkxMTg1MDI1RDI2NzNCMDcxMDBBNjQyNUUgLyog
UGxhdGZvcm1YUlN5c3RlbS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQlwYXRoID0gWFI7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQy
NUUgLyogWFIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTExODUwMjYzMjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCAqLywKKwkJ
CQkxMTg1MDI2NDI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmNwcCAqLywKKwkJCQkx
MTg1MDI2NTI2NzNCMERBMDBBNjQyNUUgLyogWFJEZXZpY2VJbmZvLmggKi8sCisJCQkJMTE4NTAy
NjIyNjczQjBEQTAwQTY0MjVFIC8qIFhSRGV2aWNlUHJveHkuY3BwICovLAorCQkJCTExODUwMjYx
MjY3M0IwREEwMEE2NDI1RSAvKiBYUkRldmljZVByb3h5LmggKi8sCisJCQkpOworCQkJcGF0aCA9
IFhSOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUEwRUM2QjAxMjRCQkQz
NjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtNjcwOSw2ICs2NzM3LDcgQEAKIAkJCQkxQUFFMDU4QzEyNzlEQ0Q0
MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyog
UmVtb3RlTGF5ZXJUcmVlICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJz
aXRlRGF0YSAqLywKKwkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyogWFIgKi8sCiAJCQkJ
RTNCQ0U4NzcyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5jcHAg
Ki8sCiAJCQkJRTNCQ0U4NzgyNjcyNTIxMjAwMTFEOERCIC8qIEFjY2Vzc2liaWxpdHlQcmVmZXJl
bmNlcy5oICovLAogCQkJCUE3RDc5MkQ1MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2Vy
dGlvbi5jcHAgKi8sCkBAIC03MDY3LDEwICs3MDk2LDcgQEAKIAkJCQkxQUJDM0RGMzE4OTlFNDM3
MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tICovLAogCQkJCTVDNkNFNkQzMUY1OUVBMzUw
MDA3QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLmggKi8sCiAJCQkJNUM2Q0U2RDAxRjU5QkM0
NjAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0gKi8sCi0JCQkJNTI2M0UyNEQyNjFF
NkZCOTAwMThENDdEIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5oICovLAotCQkJCTUyNjNFMjRG
MjYxRTcyRUIwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtLmggKi8sCi0JCQkJNTI2M0UyNTAy
NjFFNzJFQzAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubWVzc2FnZXMuaW4gKi8sCi0JCQkJ
NTI2M0UyNEUyNjFFNzJFQjAwMThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW0ubW0gKi8sCisJCQkJ
MTE4NTAyNUUyNjczQjBBNzAwQTY0MjVFIC8qIFBsYXRmb3JtWFJDb29yZGluYXRvci5tbSAqLywK
IAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZCMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLApAQCAtODM1OSwxMSArODM4
NSw2IEBACiAJCQkJQzE0RDMwNjUyNEI3OTRFNzAwNDgwMzg3IC8qIFhQQ0VuZHBvaW50Lm1tICov
LAogCQkJCUMxNEQzMDY4MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5oICov
LAogCQkJCUMxNEQzMDY2MjRCNzk0RTcwMDQ4MDM4NyAvKiBYUENFbmRwb2ludENsaWVudC5tbSAq
LywKLQkJCQk1MjUwODBBRTI2MUJERTZCMDA2NzhBRUUgLyogWFJEZXZpY2VJZGVudGlmaWVyLmgg
Ki8sCi0JCQkJNTI1MDgwQUYyNjFCREU2QzAwNjc4QUVFIC8qIFhSRGV2aWNlSW5mby5oICovLAot
CQkJCTUyNTA4MEFEMjYxQkRFNkIwMDY3OEFFRSAvKiBYUkRldmljZUluZm8ubW0gKi8sCi0JCQkJ
NTI2M0UyNTUyNjFFNzNERjAwMThENDdEIC8qIFhSRGV2aWNlUHJveHkuaCAqLywKLQkJCQk1MjYz
RTI1NDI2MUU3M0RFMDAxOEQ0N0QgLyogWFJEZXZpY2VQcm94eS5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gY29jb2E7CiAJCQlwYXRoID0gQ29jb2E7CkBAIC05MzUzLDkgKzkzNzQsNiBAQAogCQkJ
CUMxQTE1MkQ2MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1t
ICovLAogCQkJCUMxNEQzN0ZDMjRBQ0RGNDUwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlTWFuYWdlci5oICovLAogCQkJCUMxNEQzN0ZEMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5tbSAqLywKLQkJCQk1MjYzRTI1RDI2MUU5NkRGMDAxOEQ0
N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5LmggKi8sCi0JCQkJNTI2M0UyNUUyNjFFOTZFMDAw
MThENDdEIC8qIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1MjYz
RTI1QzI2MUU5NkRGMDAxOEQ0N0QgLyogUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1tICovLAogCQkJ
CTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05ODIxLDYgKzk4MzksNyBAQAogCQkJ
CUJDMDMyRDVEMTBGNDM3MjIwMDU4QzE1QSAvKiBXZWJDb3JlU3VwcG9ydCAqLywKIAkJCQlCQzAz
MkQ1RTEwRjQzNzJCMDA1OEMxNUEgLyogV2ViUGFnZSAqLywKIAkJCQkxQUFDNERERTE2QjFDQkY2
MDA5NDI1RTMgLyogV2ViU3RvcmFnZSAqLywKKwkJCQkxMTg1MDI1NTI2NzNCMDE2MDBBNjQyNUUg
LyogWFIgKi8sCiAJCQkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5jcHAgKi8sCiAJCQkJQkNFOUMwRDAxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICovLAogCQkJCUJDMTExQUUzMTEyRjVDMjYwMDMzN0JBQiAv
KiBXZWJQcm9jZXNzLmNwcCAqLywKQEAgLTk5ODgsNiArMTAwMDcsNyBAQAogCQkJCTFBQUYwODlF
MTkyNjgxQUMwMEI2MzkwQyAvKiBVc2VyQ29udGVudCAqLywKIAkJCQk1NzYwODI5NDIwMkJEODQ5
MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8sCiAJCQkJMUE1M0MyQTMxQTMyNTY5MTAw
NEU4QzcwIC8qIFdlYnNpdGVEYXRhICovLAorCQkJCTExODUwMjU5MjY3M0IwNzEwMEE2NDI1RSAv
KiBYUiAqLywKIAkJCQlFMTUxM0M2NDE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmNwcCAqLywKIAkJCQlFMTUxM0M2NTE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCkBAIC0xMjIxMiw5ICsxMjIz
Miw2IEBACiAJCQkJMkQ4NzEwMTcxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFB
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUEyNjFFOTNBNzAwMThENDdEIC8qIFBsYXRmb3JtWFJD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTI2M0UyNUIyNjFFOTNBQjAwMThENDdE
IC8qIFBsYXRmb3JtWFJTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjVGMjYxRTk2
RUYwMDE4RDQ3RCAvKiBQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ0NkRDNjRDMjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTI5MUNCRUI2
N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTMxMTIsOSArMTMxMjksNiBAQAogCQkJCUMxNUU2Q0IzMjRCN0JFNkYwMEU1MDFB
MiAvKiBYUENFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzE1RTZDQjQyNEI3QkU3NjAw
RTUwMUEyIC8qIFhQQ0VuZHBvaW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RF
ODE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUyNTA4MEIxMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTUyNTA4MEIyMjYxQkRFNkMwMDY3OEFFRSAvKiBYUkRldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTUyNjNFMjU3MjYxRTczREYwMDE4RDQ3RCAvKiBYUkRl
dmljZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggODlm
MDVkNWNjNzA2NGFjZWU0NWNmMDlhNTMwMTQzYjVlM2EyZmUxZC4uMzA3NzZhMDBkYjA3NGYyZDE5
N2QyN2EwMDA4OTI5MmI1ODgwNzg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE1MDMs
NyArMTUwMyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93TWVkaWFDb250cm9sc0NvbnRl
eHRNZW51KEZsb2F0UmVjdCYmIHRhcmdldEZyYW1lLCBWZWN0CiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAKLSNp
ZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYg
IVVTRShPUEVOWFIpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW51bWVyYXRlSW1tZXJzaXZlWFJE
ZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6SW5zdGFuY2U6
OkRldmljZUxpc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UueHJTeXN0
ZW1Qcm94eSgpLmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZWI1YzllODg4NzA5NmQ3OTYxYjBkYmUz
NTAzZjliODQ2MjZhZjczMy4uYzE1MTJmOTk4NzVkOTk3MDc0NWY2MmM2NWY1ZGIyOTUyMTExNTUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KFdlYkNvcmU6OkZsb2F0UmVjdCYmLCBW
ZWN0b3I8V2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+
JiYpIGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVT
KSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIAotI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCisjaWYgRU5BQkxFKFdFQlhSKSAmJiAhVVNFKE9QRU5YUikKICAgICB2b2lkIGVudW1l
cmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRm
b3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpIGZpbmFsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCA0NDkwNzU1ZmZmNzY4ZDQxMGI1MzU3ZmM2MTAyMjI2ZWY3ZWI1NmVlLi5lMTQx
NTBiNWI4ZGE2YzE1NzA5YjMwY2FjMmE5ZGU0NjdkZTJiYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00
NDMsMTUgKzQ0Myw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UERGRmlyc3RQYWdlU2l6ZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoRmxvYXRTaXplKHBsdWdpbi0+cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOwog
fQogCi0jaWYgRU5BQkxFKFdFQlhSKQotUGxhdGZvcm1YUlN5c3RlbVByb3h5JiBXZWJQYWdlOjp4
clN5c3RlbVByb3h5KCkKLXsKLSAgICBpZiAoIW1feHJTeXN0ZW1Qcm94eSkKLSAgICAgICAgbV94
clN5c3RlbVByb3h5ID0gc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtWFJTeXN0ZW1Qcm94eT4obmV3
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSgqdGhpcykpOwotICAgIHJldHVybiAqbV94clN5c3RlbVBy
b3h5OwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2Vi
UGFnZTo6aGFuZGxlQ2xpY2tGb3JEYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3Rv
ckVsZW1lbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRQb2ludCYgY2xpY2tMb2NhdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWY5MDU0MDgx
MTdiYmQ2MjM5MjEyZDFkOWUxNGFhMmE5N2Y0MTEyOS4uNzA5NzQ5M2FmYjBiYTY3ZTAzNGZkMDVj
YzkwYmQ4MTRlMDA0MjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTczMTgsNiArNzMxOCwxNSBAQCB2b2lkIFdlYlBhZ2U6OnRleHRBdXRv
c2l6aW5nVXNlc0lkZW1wb3RlbnRNb2RlQ2hhbmdlZCgpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKIAorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCitQbGF0
Zm9ybVhSU3lzdGVtUHJveHkmIFdlYlBhZ2U6OnhyU3lzdGVtUHJveHkoKQoreworICAgIGlmICgh
bV94clN5c3RlbVByb3h5KQorICAgICAgICBtX3hyU3lzdGVtUHJveHkgPSBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1YUlN5c3RlbVByb3h5PihuZXcgUGxhdGZvcm1YUlN5c3RlbVByb3h5KCp0aGlz
KSk7CisgICAgcmV0dXJuICptX3hyU3lzdGVtUHJveHk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQ
YWdlOjpzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewog
ICAgIGlmIChtZWRpYVR5cGUgPT0gbV9vdmVycmlkZGVuTWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZlNTJmZTM0N2VhNTFlN2FjNmI4
NWI1ZWVhN2YwNGIzYzZlYjNiNmQuLjE3OGJjZjk2Y2EyMzQ3ODlmNTM0MDdiZGU0MWI2YWE1YzBi
ZGUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTE0NSw3ICsxNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbklkZW50aWZpZXIuaD4KICNlbmRpZgogCi0jaWYg
RU5BQkxFKFdFQlhSKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoV0VCWFIpICYmICFV
U0UoT1BFTlhSKQogI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eS5oIgogI2VuZGlmCiAK
QEAgLTE0NjIsNyArMTQ2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRBdXRvc2l6aW5nVXNl
c0lkZW1wb3RlbnRNb2RlQ2hhbmdlZCgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYm
IFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAg
UGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CiAjZW5kaWYKIApAQCAtMjM2
Myw3ICsyMzYzLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2Vi
Q29yZTo6SFRNTEVsZW1lbnQ+LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
V2ViQ29yZTo6RWxlbWVudD4mJik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9u
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VCWFIpICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVO
QUJMRShXRUJYUikgJiYgIVVTRShPUEVOWFIpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eT4gbV94clN5c3RlbVByb3h5OwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVtUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1OWI5NmM3Yjc3YzRjODg5M2NkMmRkOTRiNDAyODI1MDU4YzJjZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKKworI2lmIEVOQUJMRShX
RUJYUikKKworI2luY2x1ZGUgIlBsYXRmb3JtWFJDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtWFJTeXN0ZW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJYUkRldmljZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBQbGF0Zm9ybVhSOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGxh
dGZvcm1YUlN5c3RlbVByb3h5OjpQbGF0Zm9ybVhSU3lzdGVtUHJveHkoV2ViUGFnZSYgcGFnZSkK
KyAgICA6IG1fcGFnZShwYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Ojp+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXRmb3JtWFJT
eXN0ZW1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2
aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEluc3RhbmNlOjpEZXZpY2VMaXN0Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6RW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8WFJEZXZpY2VJbmZvPiYmIGRldmlj
ZXNJbmZvcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgZGV2aWNl
czsKKyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2VJbmZvIDogZGV2aWNlc0luZm9zKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBkZXZpY2UgPSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSW5mby5p
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZCgqZGV2aWNlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChYUkRldmljZVBy
b3h5OjpjcmVhdGUoV1RGTW92ZShkZXZpY2VJbmZvKSwgKnRoaXMpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2RldmljZXMuc3dhcChkZXZpY2VzKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9kZXZpY2VzKTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Omlu
aXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OlBsYXRmb3JtWFJTeXN0ZW06OkluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpKTsK
K30KKwordm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpT
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpQbGF0Zm9ybVhSU3lzdGVtOjpSZXF1ZXN0RnJhbWUoKSwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCitzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBQbGF0Zm9ybVhS
U3lzdGVtUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJv
b2wpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtWFJDb29yZGluYXRvcjo6ZGVmYXVsdExheWVySGFu
ZGxlKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzdWJtaXRGcmFtZSgpCit7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlN1Ym1pdEZyYW1l
KCkpOworfQorCit2b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2Vzc2lvbkRpZEVuZChYUkRl
dmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBkZXZpY2Ug
PSBkZXZpY2VCeUlkZW50aWZpZXIoZGV2aWNlSWRlbnRpZmllcikpCisgICAgICAgIGRldmljZS0+
c2Vzc2lvbkRpZEVuZCgpOworfQorCitSZWZQdHI8WFJEZXZpY2VQcm94eT4gUGxhdGZvcm1YUlN5
c3RlbVByb3h5OjpkZXZpY2VCeUlkZW50aWZpZXIoWFJEZXZpY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCit7CisgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBtX2RldmljZXMpIHsKKyAgICAgICAgYXV0
byogZGV2aWNlUHJveHkgPSBzdGF0aWNfY2FzdDxYUkRldmljZVByb3h5Kj4oZGV2aWNlLnB0cigp
KTsKKyAgICAgICAgaWYgKGRldmljZVByb3h5LT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiBkZXZpY2VQcm94eTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5
c3RlbVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3Rl
bVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzNGRlNTFhMTI1ODdmMTQzMmNkMDY1MmU4Y2M3NDQ5NmVk
NDA5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0
Zm9ybVhSU3lzdGVtUHJveHkuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJYUkRldmljZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJveHkgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIFBsYXRmb3JtWFJTeXN0
ZW1Qcm94eShXZWJQYWdlJik7CisgICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVByb3h5KCk7
CisKKyAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYpOworICAg
IHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCBzaHV0RG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVp
bnQzMl90LCBib29sKTsKKyAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAg
UmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
TWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlkZW50aWZp
ZXIpOworCisgICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZpY2VzOwor
ICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9YUi9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvWFIvUGxhdGZvcm1Y
UlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTBhYzFmN2Y2MjRiNDk2ZGE1
N2ExMGY5NjRlZjRkZDkxZjVjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvWFIvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdFQlhSKQorCittZXNzYWdlcyAtPiBQbGF0
Zm9ybVhSU3lzdGVtUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2Vzc2lvbkRpZEVuZChXZWJL
aXQ6OlhSRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVt
UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzNGRlNTFhMTI1ODdmMTQz
MmNkMDY1MmU4Y2M3NDQ5NmVkNDA5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxhdGZvcm1YUlN5
c3RlbVByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCWFIpCi0KLSNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKLSNpbmNsdWRlICJYUkRldmljZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJYUkRl
dmljZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBQbGF0Zm9ybVhSU3lzdGVtUHJv
eHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAgIFBsYXRmb3Jt
WFJTeXN0ZW1Qcm94eShXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1YUlN5c3RlbVBy
b3h5KCk7Ci0KLSAgICB2b2lkIGVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFBsYXRmb3JtWFI6Okluc3RhbmNlOjpEZXZpY2VMaXN0Jik+JiYp
OwotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxh
dGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKTsKLSAgICBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMy
X3QsIHVpbnQzMl90LCBib29sKTsKLSAgICB2b2lkIHN1Ym1pdEZyYW1lKCk7Ci0KLXByaXZhdGU6
Ci0gICAgUmVmUHRyPFhSRGV2aWNlUHJveHk+IGRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlk
ZW50aWZpZXIpOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0g
ICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgc2Vzc2lvbkRpZEVuZChYUkRldmljZUlk
ZW50aWZpZXIpOwotCi0gICAgUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkRldmljZUxpc3QgbV9kZXZp
Y2VzOwotICAgIFdlYlBhZ2UmIG1fcGFnZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9y
bVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxhdGZvcm1YUlN5c3RlbVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3OTQwNTc5MWI2MTU0MzhhOWJmN2RiNGI0YjAwNjY4NzA4MjkzZDYzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubWVzc2FnZXMuaW4KKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoV0VCWFIpCi0KLW1lc3NhZ2VzIC0+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSBO
b3RSZWZDb3VudGVkIHsKLSAgICBTZXNzaW9uRGlkRW5kKFdlYktpdDo6WFJEZXZpY2VJZGVudGlm
aWVyIGRldmljZUlkZW50aWZpZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF0Zm9ybVhSU3lzdGVtUHJveHkubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWZhNWI4ODJmZTZkOTdmMzFlNzhlNTFjM2QzMGZmZWE3
MzNmZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXRmb3JtWFJTeXN0ZW1Qcm94eS5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVhSU3lzdGVtUHJveHkuaCIKLQotI2lmIEVOQUJMRShXRUJY
UikKLQotI2ltcG9ydCAiUGxhdGZvcm1YUkNvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJQbGF0Zm9y
bVhSU3lzdGVtTWVzc2FnZXMuaCIKLSNpbXBvcnQgIlBsYXRmb3JtWFJTeXN0ZW1Qcm94eU1lc3Nh
Z2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzLmgiCi0jaW1w
b3J0ICJYUkRldmljZUluZm8uaCIKLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFBsYXRmb3JtWFI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QbGF0Zm9ybVhSU3lz
dGVtUHJveHk6OlBsYXRmb3JtWFJTeXN0ZW1Qcm94eShXZWJQYWdlJiBwYWdlKQotICAgIDogbV9w
YWdlKHBhZ2UpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF0Zm9ybVhSU3lzdGVtUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLmlkZW50aWZpZXIoKSwgKnRoaXMpOwotfQotCi1QbGF0Zm9ybVhSU3lzdGVtUHJv
eHk6On5QbGF0Zm9ybVhSU3lzdGVtUHJveHkoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwotfQotCi12b2lk
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpQ
bGF0Zm9ybVhSU3lzdGVtOjpFbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFZlY3RvcjxYUkRldmljZUluZm8+JiYgZGV2aWNlc0luZm9zKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6RGV2aWNlTGlzdCBkZXZpY2VzOwotICAgICAg
ICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBkZXZpY2VzSW5mb3MpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIGRldmljZSA9IGRldmljZUJ5SWRlbnRpZmllcihkZXZpY2VJbmZvLmlkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKCpkZXZpY2UpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGRldmljZXMuYXBwZW5kKFhSRGV2aWNlUHJveHk6OmNyZWF0
ZShXVEZNb3ZlKGRldmljZUluZm8pLCAqdGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIG1fZGV2
aWNlcy5zd2FwKGRldmljZXMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RldmljZXMp
OwotICAgIH0pOwotfQotCi12b2lkIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6aW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKCkKLXsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UGxhdGZv
cm1YUlN5c3RlbTo6SW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkpOwotfQotCi12b2lk
IFBsYXRmb3JtWFJTeXN0ZW1Qcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCi17
Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlBsYXRmb3JtWFJTeXN0ZW06OlNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5Ojpy
ZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNh
bGxiYWNrKQotewotICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlBsYXRm
b3JtWFJTeXN0ZW06OlJlcXVlc3RGcmFtZSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19Ci0KLXN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFBsYXRmb3JtWFJTeXN0ZW1Qcm94
eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkKLXsKLSAg
ICByZXR1cm4gUGxhdGZvcm1YUkNvb3JkaW5hdG9yOjpkZWZhdWx0TGF5ZXJIYW5kbGUoKTsKLX0K
LQotdm9pZCBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6OnN1Ym1pdEZyYW1lKCkKLXsKLSAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UGxhdGZvcm1YUlN5c3RlbTo6U3VibWl0RnJhbWUoKSk7Ci19Ci0K
LXZvaWQgUGxhdGZvcm1YUlN5c3RlbVByb3h5OjpzZXNzaW9uRGlkRW5kKFhSRGV2aWNlSWRlbnRp
ZmllciBkZXZpY2VJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIGRldmljZSA9IGRldmljZUJ5
SWRlbnRpZmllcihkZXZpY2VJZGVudGlmaWVyKSkKLSAgICAgICAgZGV2aWNlLT5zZXNzaW9uRGlk
RW5kKCk7Ci19Ci0KLVJlZlB0cjxYUkRldmljZVByb3h5PiBQbGF0Zm9ybVhSU3lzdGVtUHJveHk6
OmRldmljZUJ5SWRlbnRpZmllcihYUkRldmljZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBmb3IgKGF1dG8mIGRldmljZSA6IG1fZGV2aWNlcykgewotICAgICAgICBhdXRvKiBkZXZpY2VQ
cm94eSA9IHN0YXRpY19jYXN0PFhSRGV2aWNlUHJveHkqPihkZXZpY2UucHRyKCkpOwotICAgICAg
ICBpZiAoZGV2aWNlUHJveHktPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAg
ICAgcmV0dXJuIGRldmljZVByb3h5OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
</data>

          </attachment>
      

    </bug>

</bugzilla>