<?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>149527</bug_id>
          
          <creation_ts>2015-09-24 09:51:18 -0700</creation_ts>
          <short_desc>Clean up user media request internal API</short_desc>
          <delta_ts>2015-09-25 19:23:26 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128506</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-24 09:51:18 -0700</bug_when>
    <thetext>Clean up user media request internal API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128507</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-24 09:51:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/22839956&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128557</commentid>
    <comment_count>2</comment_count>
      <attachid>261884</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-24 12:12:36 -0700</bug_when>
    <thetext>Created attachment 261884
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128563</commentid>
    <comment_count>3</comment_count>
      <attachid>261884</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-09-24 12:36:41 -0700</bug_when>
    <thetext>Comment on attachment 261884
Proposed patch.

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

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:128
&gt; +        m_audioDeviceUIDs.append(audioTrack-&gt;persistentId());

while you&apos;re changing this, you should capitalize the D!

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.h:96
&gt; +    String m_videoDeviceUIDAllowed;

something that ends in -allowed sounds like it would be a bool. should this be m_allowedVideoDeviceUID?

&gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:41
&gt; +PassRefPtr&lt;UserMediaPermissionRequestProxy&gt; UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, const Vector&lt;String&gt;&amp; deviceUIDsAudio, const Vector&lt;String&gt;&amp; deviceUIDsVideo)

what are the &apos;s&apos;es for? should this be audioDeviceUIDs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128564</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-24 12:43:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 261884 [details]
&gt; Proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261884&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:128
&gt; &gt; +        m_audioDeviceUIDs.append(audioTrack-&gt;persistentId());
&gt; 
&gt; while you&apos;re changing this, you should capitalize the D!
&gt; 

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/UserMediaRequest.h:96
&gt; &gt; +    String m_videoDeviceUIDAllowed;
&gt; 
&gt; something that ends in -allowed sounds like it would be a bool. should this
&gt; be m_allowedVideoDeviceUID?
&gt; 

Hmm, then it would match the allowedVideoDeviceUID() accessor too!

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:41
&gt; &gt; +PassRefPtr&lt;UserMediaPermissionRequestProxy&gt; UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, const Vector&lt;String&gt;&amp; deviceUIDsAudio, const Vector&lt;String&gt;&amp; deviceUIDsVideo)
&gt; 
&gt; what are the &apos;s&apos;es for? should this be audioDeviceUIDs?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128581</commentid>
    <comment_count>5</comment_count>
      <attachid>261895</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-24 14:10:39 -0700</bug_when>
    <thetext>Created attachment 261895
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128590</commentid>
    <comment_count>6</comment_count>
      <attachid>261896</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-24 14:53:18 -0700</bug_when>
    <thetext>Created attachment 261896
Another updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128605</commentid>
    <comment_count>7</comment_count>
      <attachid>261896</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 16:11:11 -0700</bug_when>
    <thetext>Comment on attachment 261896
Another updated patch

Rejecting attachment 261896 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 261896, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Tim Thorton found in /Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/209499</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128701</commentid>
    <comment_count>8</comment_count>
      <attachid>261924</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-25 08:56:54 -0700</bug_when>
    <thetext>Created attachment 261924
YAUP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128754</commentid>
    <comment_count>9</comment_count>
      <attachid>261935</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-25 13:37:54 -0700</bug_when>
    <thetext>Created attachment 261935
Another try at updating the GTK build for the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128786</commentid>
    <comment_count>10</comment_count>
      <attachid>261944</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-25 14:54:19 -0700</bug_when>
    <thetext>Created attachment 261944
One more time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128837</commentid>
    <comment_count>11</comment_count>
      <attachid>261959</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-09-25 18:46:44 -0700</bug_when>
    <thetext>Created attachment 261959
One more time - redux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128841</commentid>
    <comment_count>12</comment_count>
      <attachid>261959</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-25 19:23:22 -0700</bug_when>
    <thetext>Comment on attachment 261959
One more time - redux

Clearing flags on attachment: 261959

Committed r190262: &lt;http://trac.webkit.org/changeset/190262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128842</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-25 19:23:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261884</attachid>
            <date>2015-09-24 12:12:36 -0700</date>
            <delta_ts>2015-09-25 13:37:54 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>user_request_api_patch_2.txt</filename>
            <type>text/plain</type>
            <size>33499</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOiBV
c2UgdHJhY2sgcGVyc2lzdGVudCBJRCB0byBjcmVhdGUgdmVjdG9ycworICAgICAgICAgIGFzIHRo
YXQgaXMgd2hhdCB0aGUgcGxhdGZvcm0gY29kZSBuZWVkcyB0byBtYXAgdG8gYSBjYXB0dXJlIGRl
dmljZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnVzZXJNZWRpYUFjY2Vz
c0dyYW50ZWQpOiBtX2Nob3NlblhYRGV2aWNlVUlEIC0+IG1fWFhEZXZpY2VVSURBbGxvd2VkLgor
ICAgICAgICAgIFVzZSB0aGUgZGV2aWNlIElEcyB0byBjcmVhdGUgdGhlIE1lZGlhU3RyZWFtLiBT
d2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRG9uJ3QgYXNzdW1lIGNvbnN0cmFpbnRz
IGFyZSB2YWxpZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvRGV2aWNlVUlE
cyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0RldmljZVVJRHMp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZFZpZGVvRGV2aWNl
VUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93ZWRBdWRpb0Rl
dmljZVVJRCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1aXJlc0F1
ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVp
cmVzVmlkZW8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6
Zmlyc3RWaWRlb0RldmljZVVJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IENh
bGwgc2V0UGVyc2lzdGVudElkLgorCiAyMDE1LTA5LTI0ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nl
b2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdHlwbyBlcnJv
cnMgaW4gYSBjb21tZW50ICgicGFzc2VkIiAtPiAiUGFzc2VkIiwgIk92ZXJ3aXNlIiAtPiAiT3Ro
ZXJ3aXNlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1LDkgKzEyNSwxMCBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0
KCkKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9UcmFja3MpCiB7CiAgICAgZm9y
IChhdXRvJiBhdWRpb1RyYWNrIDogYXVkaW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9EZXZpY2VV
SURzLmFwcGVuZChhdWRpb1RyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9hdWRpb0RldmljZVVJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPnBlcnNpc3RlbnRJZCgpKTsKICAgICBmb3IgKGF1dG8mIHZpZGVv
VHJhY2sgOiB2aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb0RldmljZVVJRHMuYXBwZW5kKHZp
ZGVvVHJhY2stPmlkKCkpOworICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9U
cmFjay0+cGVyc2lzdGVudElkKCkpOworCiAgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10g
ewogICAgICAgICAvLyAyIC0gVGhlIGNvbnN0cmFpbnRzIGFyZSB2YWxpZCwgYXNrIHRoZSB1c2Vy
IGZvciBhY2Nlc3MgdG8gbWVkaWEuCkBAIC0xMzYsMTQgKzEzNywxNSBAQCB2b2lkIFVzZXJNZWRp
YVJlcXVlc3Q6OmNvbnN0cmFpbnRzVmFsaWRhCiAgICAgfSk7CiB9CiAKLXZvaWQgVXNlck1lZGlh
UmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
VUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0
Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNv
bnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV9jaG9zZW5WaWRlb0RldmljZVVJ
RCA9IHZpZGVvRGV2aWNlVUlEOwotICAgIG1fY2hvc2VuQXVkaW9EZXZpY2VVSUQgPSBhdWRpb0Rl
dmljZVVJRDsKKyAgICBtX3ZpZGVvRGV2aWNlVUlEQWxsb3dlZCA9IHZpZGVvRGV2aWNlVUlEOwor
ICAgIG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CisKICAgICBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcywgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSB7CiAgICAgICAgIC8vIDMgLSB0
aGUgdXNlciBncmFudGVkIGFjY2VzcywgYXNrIHBsYXRmb3JtIHRvIGNyZWF0ZSB0aGUgbWVkaWEg
c3RyZWFtIGRlc2NyaXB0b3JzLgotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5jcmVhdGVNZWRpYVN0cmVhbShwcm90ZWN0ZWRUaGlzLmdldCgpLCBwcm90ZWN0
ZWRUaGlzLT5tX2F1ZGlvQ29uc3RyYWludHMsIHByb3RlY3RlZFRoaXMtPm1fdmlkZW9Db25zdHJh
aW50cyk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNy
ZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELCB2aWRl
b0RldmljZVVJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTE2NCwxMCArMTY2LDE0IEBAIHZvaWQgVXNl
ck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFAKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhl
IE1lZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDog
c3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50
cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5n
ZXRWaWRlb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRl
b0NvbnN0cmFpbnRzKTsKKyAgICBpZiAobV9hdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpCisgICAgICAgICAgICB0
cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICB9CisgICAg
aWYgKG1fdmlkZW9Db25zdHJhaW50cykgeworICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3Ry
ZWFtLT5nZXRWaWRlb1RyYWNrcygpKQorICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWlu
dHMoKm1fdmlkZW9Db25zdHJhaW50cyk7CisgICAgfQogCiAgICAgbV9wcm9taXNlLnJlc29sdmUo
c3RyZWFtKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsMTcgKzY1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnQoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3Ry
aW5nJiB2aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYg
YXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiAKLSAgICBib29sIHJlcXVp
cmVzQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3RyYWludHM7IH0KLSAgICBib29s
IHJlcXVpcmVzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29uc3RyYWludHM7IH0KLSAg
ICAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlb0RldmljZVVJRHM7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVk
aW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJRHM7IH0KICAgICAK
LSAgICBjb25zdCBTdHJpbmcmIGZpcnN0VmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiAh
dmlkZW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VVSURzKCkuYXQoMCkgOiBl
bXB0eVN0cmluZygpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmaXJzdEF1ZGlvRGV2aWNlVUlEKCkg
Y29uc3QgeyByZXR1cm4gIWF1ZGlvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IGF1ZGlvRGV2aWNl
VUlEcygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgYWxsb3dl
ZFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0RldmljZVVJREFsbG93ZWQ7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGFsbG93ZWRBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlh
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2Um
Jik7CkBAIC05NSwxMiArOTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1f
dmlkZW9EZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwot
ICAgIAotICAgIFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2No
b3NlbkF1ZGlvRGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29u
dHJvbGxlcjsKIAorICAgIFN0cmluZyBtX3ZpZGVvRGV2aWNlVUlEQWxsb3dlZDsKKyAgICBTdHJp
bmcgbV9hdWRpb0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBt
X2NvbnRyb2xsZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDE5MDIwNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXIKICAgICAsIG1faXNSdW5uaW5nKGZhbHNlKQogewog
ICAgIHNldE5hbWUoZGV2aWNlLmxvY2FsaXplZE5hbWUpOworICAgIHNldFBlcnNpc3RlbnRJZChk
ZXZpY2UudW5pcXVlSUQpOwogICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKHR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
OjpDYW1lcmEgOiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBt
ZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHA6CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9E
ZXZpY2VVSURzKTogTmV3LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dERldmljZU5hbWVzVmlkZW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
QXVkaW9EZXZpY2VVSURzKTogTmV3LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERldmljZU5hbWVzQXVkaW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QWxsb3dCZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc0F1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOiBHZXQgcmlkIG9mIHRoZSBi
b29sIHBhcmFtZXRlcnMuCisgICAgICAgICAgU3dpdGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBv
cmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggZXZlcnl3aGVyZSBlbHNlLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KTogR2V0IHJpZCBvZiB0aGUgYm9vbCBwYXJhbWV0ZXJzLgorICAgICAgICAg
IFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRo
IGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eTo6YWxsb3cpOiBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpnZXREZXZp
Y2VOYW1lRm9yVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5Ojp2aWRlb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjphdWRpb0RldmljZVVJRHMpOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpmaXJzdEF1ZGlvRGV2
aWNlVUlEKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6cmVxdWlyZXNBdWRpbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OnJlcXVpcmVzVmlkZW8pOiBEZWxldGVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSk6IEdldCByaWQgb2YgdGhl
IGJvb2wgcGFyYW1ldGVycy4KKyAgICAgICAgICBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVy
IG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBldmVyeXdoZXJlIGVsc2UuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3Qp
OiBHZXQgcmlkIG9mIGJvb2wgcGFyYW1zLCB0aGUgZGV2aWNlCisgICAgICAgICAgdmVjdG9ycyBo
YXZlIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8KKyAgICAgICAgICBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUg
Y29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4gZGV2aWNlVUlEVmlkZW8gLT4gdmlkZW9E
ZXZpY2VVSUQsCisgICAgICAgIGRldmljZVVJREF1ZGlvIC0+IGF1ZGlvRGV2aWNlVUlELgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVj
aXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTUtMDktMjQgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmFuIHNvcnQtWGNvZGUtcHJvamVjdC1maWxl
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
OTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAg
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcgogICAgIG1fcGVuZGluZ1Jl
cXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJl
cXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1
aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQorUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNBdWRpbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRl
bykKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVz
dCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1l
ZGlhSUQsIHJlcXVpcmVzQXVkaW8sIHJlcXVpcmVzVmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2
aWNlVUlEc0F1ZGlvKTsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhp
cywgdXNlck1lZGlhSUQsIGRldmljZVVJRHNBdWRpbywgZGV2aWNlVUlEc1ZpZGVvKTsKICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlhSUQsIHJlcXVlc3QuZ2V0KCkpOwogICAgIHJl
dHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2
aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25E
ZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcm
IGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewogICAgIGlm
ICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0
ZVJlcXVlc3RzKCk7CiAKICAgICAvLyBDcmVhdGUgYSByZXF1ZXN0IHRvIGJlIHByZXNlbnRlZCB0
byB0aGUgdXNlci4KLSAgICBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYXVkaW8sIGJvb2wg
dmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pOworICAgIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRpbywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNWaWRlbyk7CiAKICAgICAvLyBDYWxsZWQgYnkgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSB3aGVuIGEgZGVjaXNpb24gaXMgbWFkZSBieSB0aGUgdXNlci4KLSAg
ICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QsIGJv
b2wgYWxsb3csIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgYXVk
aW9EZXZpY2VVSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNp
c2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwg
Y29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3BlbmRp
bmdSZXF1ZXN0czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAJKHJldmlzaW9uIDE5MDIw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDE3IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBi
b29sIHJlcXVpcmVzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCitVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVk
aWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRpbywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRldmljZVVJRHNWaWRlbykKICAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQogICAg
ICwgbV91c2VyTWVkaWFJRCh1c2VyTWVkaWFJRCkKLSAgICAsIG1fcmVxdWlyZXNBdWRpbyhyZXF1
aXJlc0F1ZGlvKQotICAgICwgbV9yZXF1aXJlc1ZpZGVvKHJlcXVpcmVzVmlkZW8pCiAgICAgLCBt
X3ZpZGVvRGV2aWNlVUlEcyhkZXZpY2VVSURzVmlkZW8pCiAgICAgLCBtX2F1ZGlvZGV2aWNlVUlE
cyhkZXZpY2VVSURzQXVkaW8pCiB7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6YWxsb3coY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZVVJRCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6
YWxsb3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rl
dmljZVVJRCkKIHsKLSAgICBtX21hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25E
ZWNpc2lvbihtX3VzZXJNZWRpYUlELCB0cnVlLCB2aWRlb0RldmljZVVJRCwgYXVkaW9EZXZpY2VV
SUQpOworICAgIG1fbWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KG1fdXNlck1lZGlhSUQsIHRydWUsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiB9
CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBAIC01MSwx
MiArNDksNSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmluCiAgICAg
bV9tYW5hZ2VyLmludmFsaWRhdGVSZXF1ZXN0cygpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLWNvbnN0IFN0cmluZyYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Z2V0
RGV2aWNlTmFtZUZvclVJRChjb25zdCBTdHJpbmcmIFVJRCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSB0eXBlKQotewotICAgIHJldHVybiBXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKFVJRCwgdHlwZSwgbnVsbHB0
ciktPmxhYmVsKCk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOSArMzEsOSBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQCiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9v
bCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkZXZpY2VVSURzQXVkaW8pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIHJl
cXVpcmVzQXVkaW8sIHJlcXVpcmVzVmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1
ZGlvKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VV
SURzQXVkaW8pKTsKICAgICB9CiAKICAgICB2b2lkIGFsbG93KGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpOwpAQCAtNDEsMTMgKzQxLDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIGNvbnN0IFN0cmluZyYgZ2V0RGV2aWNlTmFtZUZvclVJRChjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLSNlbmRpZgotCi0gICAg
Ym9vbCByZXF1aXJlc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0F1ZGlvOyB9Ci0g
ICAgYm9vbCByZXF1aXJlc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1ZpZGVvOyB9
Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9kZXZpY2VVSURzOyB9CiAg
ICAgCkBAIC01NSwxMiArNDgsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgZmlyc3RB
dWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5
KCkgPyBhdWRpb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KIAogcHJpdmF0
ZToKLSAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWly
ZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNl
VUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8p
OwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1fbWFuYWdl
cjsKICAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwotICAgIGJvb2wgbV9yZXF1aXJlc0F1ZGlv
OwotICAgIGJvb2wgbV9yZXF1aXJlc1ZpZGVvOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9E
ZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9kZXZpY2VVSURzOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAx
OTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI3OSwxMyArNTI3OSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGJvb2wg
YXVkaW8sIGJvb2wgdmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VV
SURzVmlkZW8pCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVmUHRyPEFQ
STo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlm
aWVyKSk7Ci0gICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVl
c3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KHVz
ZXJNZWRpYUlELCBhdWRpbywgdmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1ZGlv
KTsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3QodXNlck1l
ZGlhSUQsIGRldmljZVVJRHNBdWRpbywgZGV2aWNlVUlEc1ZpZGVvKTsKIAogICAgIGlmICghbV91
aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoKnRoaXMs
ICpmcmFtZSwgKm9yaWdpbi5nZXQoKSwgKnJlcXVlc3QuZ2V0KCkpKQogICAgICAgICByZXF1ZXN0
LT5kZW55KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExODIsNyArMTE4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVl
ZGVkLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcmVxdWVzdFVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkZXZpY2VVSURzQXVkaW8pOworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8pOwogCiAgICAgdm9pZCBydW5N
b2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtIG1lc3NhZ2VzCi0gICAg
UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGJvb2wgYXVkaW8sIGJv
b2wgdmlkZW8sIFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNWaWRlbywgVmVjdG9yPFN0cmluZz4g
ZGV2aWNlVUlEc0F1ZGlvKQorICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBkZXZpY2VVSURzQXVkaW8sIFZlY3RvcjxTdHJpbmc+IGRl
dmljZVVJRHNWaWRlbykKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24gbWVzc2FnZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDYgQEAgV0tUeXBlSUQgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEdldAogfQogCiAKLXZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdEFsbG93QmVzdChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UmVmKQotewotICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2Ug
PSB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5maXJzdFZpZGVvRGV2aWNl
VUlEKCk7Ci0gICAgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZSA9IHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiktPmZpcnN0QXVkaW9EZXZpY2VVSUQoKTsKLSAgICB0b0ltcGwo
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh2aWRlb0RldmljZSwgYXVkaW9E
ZXZpY2UpOwotfQotCiB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVm
LCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZpY2VVSUQp
CiB7CiAgICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+YWxsb3codG9X
VEZTdHJpbmcodmlkZW9EZXZpY2VVSUQpLCB0b1dURlN0cmluZyhhdWRpb0RldmljZVVJRCkpOwpA
QCAtNTAsMzYgKzQzLDIyIEBAIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnko
V0sKICAgICB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5kZW55KCk7CiB9
CiAKLVdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlk
ZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVm
KQorV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURz
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikK
IHsKICAgICBXS011dGFibGVBcnJheVJlZiBhcnJheSA9IFdLTXV0YWJsZUFycmF5Q3JlYXRlKCk7
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiB0b0ltcGwo
dXNlck1lZGlhUGVybWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlEcygpKSB7Ci0gICAgICAgIFN0
cmluZyBkZXZpY2VOYW1lID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5nZXREZXZp
Y2VOYW1lRm9yVUlEKG5hbWUsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvKTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6U3RyaW5n
OjpjcmVhdGUoZGV2aWNlTmFtZSkucHRyKCkpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBkZXZp
Y2VVSUQgOiB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlEcygp
KQorICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJpbmc6OmNy
ZWF0ZShkZXZpY2VVSUQpLnB0cigpKSk7CiAjZW5kaWYKICAgICByZXR1cm4gYXJyYXk7CiB9CiAK
LVdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzQXVkaW8o
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKQor
V0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikKIHsK
ICAgICBXS011dGFibGVBcnJheVJlZiBhcnJheSA9IFdLTXV0YWJsZUFycmF5Q3JlYXRlKCk7CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiB0b0ltcGwodXNl
ck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2aWNlVUlEcygpKSB7Ci0gICAgICAgIFN0cmlu
ZyBkZXZpY2VOYW1lID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5nZXREZXZpY2VO
YW1lRm9yVUlEKG5hbWUsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlv
KTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6U3RyaW5nOjpj
cmVhdGUoZGV2aWNlTmFtZSkucHRyKCkpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBkZXZpY2VV
SUQgOiB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2aWNlVUlEcygpKQor
ICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0
ZShkZXZpY2VVSUQpLnB0cigpKSk7CiAjZW5kaWYKICAgICByZXR1cm4gYXJyYXk7CiB9Ci0KLVdL
U3RyaW5nUmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlE
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikK
LXsKLSAgICByZXR1cm4gIXRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKS0+dmlkZW9EZXZp
Y2VVSURzKCkuaXNFbXB0eSgpID8gcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJh
eUdldEl0ZW1BdEluZGV4KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc1Zp
ZGVvKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLCAwKSkgOiByZWludGVycHJldF9jYXN0PFdLU3Ry
aW5nUmVmPihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOwotfQotCi1XS1N0cmlu
Z1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRChXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCi17Ci0g
ICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2aWNlVUlE
cygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRpbyh1
c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDogcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKLX0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTUgKzI3LDExIEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQg
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgdm9p
ZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5nUmVmIHZp
ZGVvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiBhdWRpb0RldmljZVVJRCk7CiBXS19FWFBPUlQgdm9p
ZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmKTsKIAotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERldmljZU5hbWVzVmlkZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7
Ci1XS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNl
TmFtZXNBdWRpbyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLSAgICAKLVdLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0Rl
dmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRChX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsK
IAogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSByZXF1ZXN0LnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHJlcXVlc3QucmVxdWlyZXNBdWRpbygpLCByZXF1ZXN0
LnJlcXVpcmVzVmlkZW8oKSwgcmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSwgcmVxdWVzdC5hdWRp
b0RldmljZVVJRHMoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCByZXF1ZXN0LmF1ZGlvRGV2
aWNlVUlEcygpLCByZXF1ZXN0LnZpZGVvRGV2aWNlVUlEcygpKSk7CiB9CiAKIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVl
c3QmIHJlcXVlc3QpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjoKICAgICBtX2lkVG9SZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwog
fQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dl
ZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURB
dWRpbykKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZl
VXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2
aWNlVUlEKQogewogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gbV9pZFRv
UmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1ZXN0KQpAQCAtODIsNyAr
ODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgbV9y
ZXF1ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBpZiAoYWxsb3dlZCkKLSAgICAg
ICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChkZXZpY2VVSURWaWRlbywgZGV2aWNl
VUlEQXVkaW8pOworICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGF1ZGlv
RGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0LT51
c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGFydFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwogICAgIHZvaWQgY2Fu
Y2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBk
ZXZpY2VVSURBdWRpbyk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRl
Y2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYg
YXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMx
Miw5ICszMzEyLDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybQog
fQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIGRldmljZVVJRFZpZGVvLCBjb25zdCBTdHJpbmcmIGRldmljZVVJ
REF1ZGlvKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lz
aW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2
aWNlVUlEQXVkaW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8pCiB7Ci0gICAgbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgZGV2aWNlVUlEVmlkZW8sIGRldmljZVVJ
REF1ZGlvKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5kaWRSZWNl
aXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCBkZXZp
Y2VVSURBdWRpbywgZGV2aWNlVUlEVmlkZW8pOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTkwMjA2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVO
b3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJv
b2wgYWxsb3dlZCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdLX0VYUE9SVCB2
b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1l
ZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURBdWRpbyk7CisgICAgV0tfRVhQT1JUIHZvaWQgZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIGRldmljZVVJREF1ZGlvLCBjb25zdCBTdHJpbmcmIGRldmljZVVJ
RFZpZGVvKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9v
bCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
OTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxNS0wOS0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCB1c2VyIG1lZGlhIHJlcXVlc3QgaW50ZXJuYWwg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKFdlYlVzZXJNZWRp
YUNsaWVudDo6Y2FuY2VsUmVxdWVzdCk6IFB1dCBVc2VyTWVkaWFSZXF1ZXN0c01hcCBpbiBhIGxv
Y2FsIGluc3RlYWQgb3IgY2FsbGluZworICAgICAgICAgIHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkg
dGhyZWUgdGltZXMuCisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG93
XSk6IEdldCByaWQgb2YgdW5uZWVkZWQgbG9jYWwgdmFyaWFibGVzLgorICAgICAgICAoLVtXZWJV
c2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvd0RldmljZVdpdGhWaWRlb1VJRF0pOiBEZWxldGVk
LCB1bnVzZWQuCisKIDIwMTUtMDktMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgUXVpY2tMb29rIG9uIHR2T1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJl
dmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBAaW50ZXJm
YWNlIFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogCiB9CiAtIChpZClpbml0V2l0aFVzZXJN
ZWRpYVJlcXVlc3Q6KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4pcmVxdWVzdDsKIC0gKHZv
aWQpY2FuY2VsUmVxdWVzdDsKLS0gKHZvaWQpYWxsb3dEZXZpY2VXaXRoVmlkZW9VSUQ6KGNvbnN0
IFN0cmluZyYpdmlkZW9VSUQgYW5kQXVkaW9VSUQ6KGNvbnN0IFN0cmluZyYpYXVkaW9VSUQ7CiAt
ICh2b2lkKWRlbnk7CiBAZW5kCiAKQEAgLTExNCwxMiArMTEzLDEzIEBAIHZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2kKIAogdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNh
bmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBVc2VyTWVkaWFS
ZXF1ZXN0c01hcDo6aXRlcmF0b3IgaXQgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmZpbmQoJnJl
cXVlc3QpOwotICAgIGlmIChpdCA9PSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmVuZCgpKQorICAg
IFVzZXJNZWRpYVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFw
KCk7CisgICAgVXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdHNNYXAu
ZmluZCgmcmVxdWVzdCk7CisgICAgaWYgKGl0ID09IHJlcXVlc3RzTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBbaXQtPnZhbHVlIGNhbmNlbFJlcXVlc3RdOwotICAgIHVzZXJNZWRp
YVJlcXVlc3RzTWFwKCkucmVtb3ZlKGl0KTsKKyAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOwog
fQogCiAKQEAgLTE1MywyMiArMTUzLDggQEAgLSAodm9pZClhbGxvdwogICAgIGlmICghX3JlcXVl
c3QpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvVUlEID0g
X3JlcXVlc3QtPmZpcnN0VmlkZW9EZXZpY2VVSUQoKTsKLSAgICBjb25zdCBTdHJpbmcmIGF1ZGlv
VUlEID0gX3JlcXVlc3QtPmZpcnN0QXVkaW9EZXZpY2VVSUQoKTsKLSAgICAKLSAgICBfcmVxdWVz
dC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIFJlbW92
ZVJlcXVlc3RGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotfQorICAgIF9yZXF1ZXN0
LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKF9yZXF1ZXN0LT5hbGxvd2VkQXVkaW9EZXZpY2VVSUQo
KSwgX3JlcXVlc3QtPmFsbG93ZWRWaWRlb0RldmljZVVJRCgpKTsKIAotLSAodm9pZClhbGxvd0Rl
dmljZVdpdGhWaWRlb1VJRDooY29uc3QgU3RyaW5nJil2aWRlb1VJRCBhbmRBdWRpb1VJRDooY29u
c3QgU3RyaW5nJilhdWRpb1VJRAotewotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYg
KCFfcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIF9yZXF1ZXN0LT51c2VyTWVk
aWFBY2Nlc3NHcmFudGVkKHZpZGVvVUlELCBhdWRpb1VJRCk7Ci0gICAgCiAgICAgUmVtb3ZlUmVx
dWVzdEZyb21NYXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiB9Cg==
</data>
<flag name="review"
          id="287074"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261895</attachid>
            <date>2015-09-24 14:10:39 -0700</date>
            <delta_ts>2015-09-24 14:53:18 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>user_request_api_patch_3.txt</filename>
            <type>text/plain</type>
            <size>38459</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBUaG9y
dG9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOiBVc2Ug
dHJhY2sgcGVyc2lzdGVudCBJRCB0byBjcmVhdGUgdmVjdG9ycworICAgICAgICAgIGFzIHRoYXQg
aXMgd2hhdCB0aGUgcGxhdGZvcm0gY29kZSBuZWVkcyB0byBtYXAgdG8gYSBjYXB0dXJlIGRldmlj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnVzZXJNZWRpYUFjY2Vzc0dy
YW50ZWQpOiBtX2Nob3NlblhYRGV2aWNlVUlEIC0+IG1fWFhEZXZpY2VVSURBbGxvd2VkLgorICAg
ICAgICAgIFVzZSB0aGUgZGV2aWNlIElEcyB0byBjcmVhdGUgdGhlIE1lZGlhU3RyZWFtLiBTd2l0
Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRG9uJ3QgYXNzdW1lIGNvbnN0cmFpbnRzIGFy
ZSB2YWxpZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvRGV2aWNlVUlEcyk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0RldmljZVVJRHMpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZFZpZGVvRGV2aWNlVUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93ZWRBdWRpb0Rldmlj
ZVVJRCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1aXJlc0F1ZGlv
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVz
VmlkZW8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Zmly
c3RWaWRlb0RldmljZVVJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IENhbGwg
c2V0UGVyc2lzdGVudElkLgorCiAyMDE1LTA5LTI0ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2su
b2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdHlwbyBlcnJvcnMg
aW4gYSBjb21tZW50ICgicGFzc2VkIiAtPiAiUGFzc2VkIiwgIk92ZXJ3aXNlIiAtPiAiT3RoZXJ3
aXNlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDkgKzEyNSwxMCBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KCkK
IHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9UcmFja3MpCiB7CiAgICAgZm9yIChh
dXRvJiBhdWRpb1RyYWNrIDogYXVkaW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9EZXZpY2VVSURz
LmFwcGVuZChhdWRpb1RyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9hdWRpb0RldmljZVVJRHMuYXBw
ZW5kKGF1ZGlvVHJhY2stPnBlcnNpc3RlbnRJRCgpKTsKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJh
Y2sgOiB2aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb0RldmljZVVJRHMuYXBwZW5kKHZpZGVv
VHJhY2stPmlkKCkpOworICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9UcmFj
ay0+cGVyc2lzdGVudElEKCkpOworCiAgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10gewog
ICAgICAgICAvLyAyIC0gVGhlIGNvbnN0cmFpbnRzIGFyZSB2YWxpZCwgYXNrIHRoZSB1c2VyIGZv
ciBhY2Nlc3MgdG8gbWVkaWEuCkBAIC0xMzYsMTQgKzEzNywxNSBAQCB2b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OmNvbnN0cmFpbnRzVmFsaWRhCiAgICAgfSk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlE
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojp1
c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0
IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV9jaG9zZW5WaWRlb0RldmljZVVJRCA9
IHZpZGVvRGV2aWNlVUlEOwotICAgIG1fY2hvc2VuQXVkaW9EZXZpY2VVSUQgPSBhdWRpb0Rldmlj
ZVVJRDsKKyAgICBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOworICAg
IG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CisKICAgICBSZWZQdHI8
VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cywgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSB7CiAgICAgICAgIC8vIDMgLSB0aGUg
dXNlciBncmFudGVkIGFjY2VzcywgYXNrIHBsYXRmb3JtIHRvIGNyZWF0ZSB0aGUgbWVkaWEgc3Ry
ZWFtIGRlc2NyaXB0b3JzLgotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5jcmVhdGVNZWRpYVN0cmVhbShwcm90ZWN0ZWRUaGlzLmdldCgpLCBwcm90ZWN0ZWRU
aGlzLT5tX2F1ZGlvQ29uc3RyYWludHMsIHByb3RlY3RlZFRoaXMtPm1fdmlkZW9Db25zdHJhaW50
cyk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNyZWF0
ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0Rl
dmljZVVJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTE2NCwxMCArMTY2LDE0IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFAKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1l
ZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3Ry
ZWFtLT5nZXRBdWRpb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV9hdWRpb0NvbnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRW
aWRlb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRlb0Nv
bnN0cmFpbnRzKTsKKyAgICBpZiAobV9hdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAo
YXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFj
ay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICB9CisgICAgaWYg
KG1fdmlkZW9Db25zdHJhaW50cykgeworICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFt
LT5nZXRWaWRlb1RyYWNrcygpKQorICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMo
Km1fdmlkZW9Db25zdHJhaW50cyk7CisgICAgfQogCiAgICAgbV9wcm9taXNlLnJlc29sdmUoc3Ry
ZWFtKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNjUsMTcgKzY1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnQoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVk
aW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiAKLSAgICBib29sIHJlcXVpcmVz
QXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3RyYWludHM7IH0KLSAgICBib29sIHJl
cXVpcmVzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29uc3RyYWludHM7IH0KLSAgICAK
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0RldmljZVVJRHM7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9E
ZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJRHM7IH0KICAgICAKLSAg
ICBjb25zdCBTdHJpbmcmIGZpcnN0VmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiAhdmlk
ZW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VVSURzKCkuYXQoMCkgOiBlbXB0
eVN0cmluZygpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmaXJzdEF1ZGlvRGV2aWNlVUlEKCkgY29u
c3QgeyByZXR1cm4gIWF1ZGlvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IGF1ZGlvRGV2aWNlVUlE
cygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZFZp
ZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkVmlkZW9EZXZpY2VVSUQ7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGFsbG93ZWRBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7
CkBAIC05NSwxMiArOTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlk
ZW9EZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwotICAg
IAotICAgIFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2Nob3Nl
bkF1ZGlvRGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJv
bGxlcjsKIAorICAgIFN0cmluZyBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsKKyAgICBTdHJpbmcg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQoKSBj
b25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJz
aXN0ZW50SWQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpIHsgbV9wZXJzaXN0ZW50SWQgPSBw
ZXJzaXN0ZW50SWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGVyc2lzdGVudElEOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBlcnNpc3RlbnRJ
RChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCkgeyBtX3BlcnNpc3RlbnRJRCA9IHBlcnNpc3Rl
bnRJRDsgfQogCiAgICAgZW51bSBUeXBlIHsgTm9uZSwgQXVkaW8sIFZpZGVvIH07CiAgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTUsNyArMTE1LDcgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmluZyBtX3BlcnNp
c3RlbnRJZDsKKyAgICBTdHJpbmcgbV9wZXJzaXN0ZW50SUQ7CiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fbmFtZTsKICAgICBib29sIG1fc3RvcHBlZDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2Fw
dHVyZVNvdXIKICAgICAsIG1faXNSdW5uaW5nKGZhbHNlKQogewogICAgIHNldE5hbWUoZGV2aWNl
LmxvY2FsaXplZE5hbWUpOworICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5pcXVlSUQpOwog
ICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW8gPyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEgOiBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTcgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVy
bmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIFRob3J0b24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAg
IChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKTogTmV3LCByZW5h
bWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8uCisg
ICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKTogTmV3
LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzQXVk
aW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc1Zp
ZGVvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZp
Y2VOYW1lc0F1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmNyZWF0ZVJlcXVlc3QpOiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFtZXRlcnMuCisgICAg
ICAgICAgU3dpdGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50
IHdpdGggZXZlcnl3aGVyZSBlbHNlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNp
c2lvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KTogR2V0IHJp
ZCBvZiB0aGUgYm9vbCBwYXJhbWV0ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBw
YXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3cpOiBT
d2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpnZXREZXZpY2VOYW1lRm9yVUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp2
aWRlb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjphdWRpb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cmVxdWlyZXNBdWRpbyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OnJlcXVpcmVzVmlkZW8pOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRp
YVBlcm1pc3Npb25Gb3JGcmFtZSk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVycy4KKyAg
ICAgICAgICBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3Rl
bnQgd2l0aCBldmVyeXdoZXJlIGVsc2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOiBHZXQgcmlkIG9mIGJvb2wgcGFy
YW1zLCB0aGUgZGV2aWNlCisgICAgICAgICAgdmVjdG9ycyBoYXZlIHRoZSBzYW1lIGluZm9ybWF0
aW9uLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlk
ZW8KKyAgICAgICAgICBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5
d2hlcmUgZWxzZS4gZGV2aWNlVUlEVmlkZW8gLT4gdmlkZW9EZXZpY2VVSUQsCisgICAgICAgIGRl
dmljZVVJREF1ZGlvIC0+IGF1ZGlvRGV2aWNlVUlELgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8v
dmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisKIDIwMTUtMDktMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmFuIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlLgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcgogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CiAK
LVBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1l
ZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNl
VUlEc0F1ZGlvKQorUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50
NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKLSAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIHJlcXVpcmVzQXVkaW8s
IHJlcXVpcmVzVmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlv
RGV2aWNlVUlEcywgdmlkZW9EZXZpY2VVSURzKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQo
dXNlck1lZGlhSUQsIHJlcXVlc3QuZ2V0KCkpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcm
IGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCAr
MzMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKICAgICAv
LyBDcmVhdGUgYSByZXF1ZXN0IHRvIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlci4KLSAgICBQYXNz
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWlu
dDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURz
QXVkaW8pOworICAgIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4g
Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcyk7
CiAKICAgICAvLyBDYWxsZWQgYnkgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSB3aGVu
IGEgZGVjaXNpb24gaXMgbWFkZSBieSB0aGUgdXNlci4KLSAgICB2b2lkIGRpZFJlY2VpdmVVc2Vy
TWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QsIGJvb2wgYWxsb3csIGNvbnN0IFN0cmlu
ZyYgdmlkZW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpOworICAgIHZv
aWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwgYm9vbCBh
bGxvdywgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rl
dmljZVVJRCk7CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+PiBtX3BlbmRpbmdSZXF1ZXN0czsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTkgKzI2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBib29sIHJlcXVpcmVzVmlkZW8sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkZXZpY2VVSURzQXVkaW8pCitVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNl
VUlEcykKICAgICA6IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV91c2VyTWVkaWFJRCh1c2Vy
TWVkaWFJRCkKLSAgICAsIG1fcmVxdWlyZXNBdWRpbyhyZXF1aXJlc0F1ZGlvKQotICAgICwgbV9y
ZXF1aXJlc1ZpZGVvKHJlcXVpcmVzVmlkZW8pCi0gICAgLCBtX3ZpZGVvRGV2aWNlVUlEcyhkZXZp
Y2VVSURzVmlkZW8pCi0gICAgLCBtX2F1ZGlvZGV2aWNlVUlEcyhkZXZpY2VVSURzQXVkaW8pCisg
ICAgLCBtX3ZpZGVvRGV2aWNlVUlEcyh2aWRlb0RldmljZVVJRHMpCisgICAgLCBtX2F1ZGlvZGV2
aWNlVUlEcyhhdWRpb0RldmljZVVJRHMpCiB7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eTo6YWxsb3coY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiBhdWRpb0RldmljZVVJRCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6YWxsb3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZVVJRCkKIHsKLSAgICBtX21hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1p
c3Npb25EZWNpc2lvbihtX3VzZXJNZWRpYUlELCB0cnVlLCB2aWRlb0RldmljZVVJRCwgYXVkaW9E
ZXZpY2VVSUQpOworICAgIG1fbWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRl
Y2lzaW9uKG1fdXNlck1lZGlhSUQsIHRydWUsIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJ
RCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6ZGVueSgpCkBA
IC01MSwxMiArNDksNSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6Omlu
CiAgICAgbV9tYW5hZ2VyLmludmFsaWRhdGVSZXF1ZXN0cygpOwogfQogCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLWNvbnN0IFN0cmluZyYgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6Z2V0RGV2aWNlTmFtZUZvclVJRChjb25zdCBTdHJpbmcmIFVJRCwgV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQotewotICAgIHJldHVybiBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKFVJRCwgdHlwZSwg
bnVsbHB0ciktPmxhYmVsKCk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQCiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRp
bywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1Zp
ZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1l
ZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlh
SUQsIHJlcXVpcmVzQXVkaW8sIHJlcXVpcmVzVmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNl
VUlEc0F1ZGlvKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwgdmlkZW9EZXZpY2VVSURzLCBh
dWRpb0RldmljZVVJRHMpKTsKICAgICB9CiAKICAgICB2b2lkIGFsbG93KGNvbnN0IFN0cmluZyYg
dmlkZW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpOwpAQCAtNDEsMTMg
KzQxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIGNvbnN0IFN0cmluZyYgZ2V0RGV2aWNlTmFtZUZvclVJRChjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLSNlbmRpZgot
Ci0gICAgYm9vbCByZXF1aXJlc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0F1ZGlv
OyB9Ci0gICAgYm9vbCByZXF1aXJlc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1Zp
ZGVvOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9kZXZpY2VVSURz
OyB9CiAgICAgCkBAIC01NSwxMiArNDgsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
Zmlyc3RBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5p
c0VtcHR5KCkgPyBhdWRpb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KIAog
cHJpdmF0ZToKLSAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wg
cmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsK
KyAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2aWRlb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0Rldmlj
ZVVJRHMpOwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1f
bWFuYWdlcjsKICAgICB1aW50NjRfdCBtX3VzZXJNZWRpYUlEOwotICAgIGJvb2wgbV9yZXF1aXJl
c0F1ZGlvOwotICAgIGJvb2wgbV9yZXF1aXJlc1ZpZGVvOwogICAgIFZlY3RvcjxTdHJpbmc+IG1f
dmlkZW9EZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9kZXZpY2VVSURzOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZp
c2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTI3OSwxMyArNTI3OSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVyCiAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIs
IGJvb2wgYXVkaW8sIGJvb2wgdmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURz
VmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2
aWRlb0RldmljZVVJRHMpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVm
UHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5J
ZGVudGlmaWVyKSk7Ci0gICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+
IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1
ZXN0KHVzZXJNZWRpYUlELCBhdWRpbywgdmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlE
c0F1ZGlvKTsKKyAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVx
dWVzdCA9IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3Qo
dXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlEcywgdmlkZW9EZXZpY2VVSURzKTsKIAogICAgIGlm
ICghbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
KnRoaXMsICpmcmFtZSwgKm9yaWdpbi5nZXQoKSwgKnJlcXVlc3QuZ2V0KCkpKQogICAgICAgICBy
ZXF1ZXN0LT5kZW55KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExODIsNyArMTE4Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGJvb2wgYXVkaW8sIGJvb2wg
dmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pOworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYVBl
cm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0Rldmlj
ZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpOwogCiAgICAgdm9p
ZCBydW5Nb2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MDIwNikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtIG1lc3NhZ2Vz
Ci0gICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVk
aWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIGJvb2wgYXVk
aW8sIGJvb2wgdmlkZW8sIFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNWaWRlbywgVmVjdG9yPFN0
cmluZz4gZGV2aWNlVUlEc0F1ZGlvKQorICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
RnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmln
aW5JZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBhdWRpb0RldmljZVVJRHMsIFZlY3RvcjxTdHJp
bmc+IHZpZGVvRGV2aWNlVUlEcykKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24gbWVzc2Fn
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDYgQEAgV0tUeXBlSUQgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldAogfQogCiAKLXZvaWQgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdEFsbG93QmVzdChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKQotewotICAgIGNvbnN0IFN0cmluZyYgdmlkZW9E
ZXZpY2UgPSB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5maXJzdFZpZGVv
RGV2aWNlVUlEKCk7Ci0gICAgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZSA9IHRvSW1wbCh1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmZpcnN0QXVkaW9EZXZpY2VVSUQoKTsKLSAgICB0
b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh2aWRlb0RldmljZSwg
YXVkaW9EZXZpY2UpOwotfQotCiB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxv
dyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmLCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZp
Y2VVSUQpCiB7CiAgICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+YWxs
b3codG9XVEZTdHJpbmcodmlkZW9EZXZpY2VVSUQpLCB0b1dURlN0cmluZyhhdWRpb0RldmljZVVJ
RCkpOwpAQCAtNTAsMzYgKzQzLDIyIEBAIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dERlbnkoV0sKICAgICB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5kZW55
KCk7CiB9CiAKLVdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5h
bWVzVmlkZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNz
aW9uUmVmKQorV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZp
Y2VVSURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lv
blJlZikKIHsKICAgICBXS011dGFibGVBcnJheVJlZiBhcnJheSA9IFdLTXV0YWJsZUFycmF5Q3Jl
YXRlKCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiB0
b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlEcygpKSB7Ci0gICAg
ICAgIFN0cmluZyBkZXZpY2VOYW1lID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5n
ZXREZXZpY2VOYW1lRm9yVUlEKG5hbWUsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlZpZGVvKTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6
U3RyaW5nOjpjcmVhdGUoZGV2aWNlTmFtZSkucHRyKCkpKTsKLSAgICB9CisgICAgZm9yIChhdXRv
JiBkZXZpY2VVSUQgOiB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPnZpZGVvRGV2aWNl
VUlEcygpKQorICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJp
bmc6OmNyZWF0ZShkZXZpY2VVSUQpLnB0cigpKSk7CiAjZW5kaWYKICAgICByZXR1cm4gYXJyYXk7
CiB9CiAKLVdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVz
QXVkaW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9u
UmVmKQorV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VV
SURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJl
ZikKIHsKICAgICBXS011dGFibGVBcnJheVJlZiBhcnJheSA9IFdLTXV0YWJsZUFycmF5Q3JlYXRl
KCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiB0b0lt
cGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2aWNlVUlEcygpKSB7Ci0gICAgICAg
IFN0cmluZyBkZXZpY2VOYW1lID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5nZXRE
ZXZpY2VOYW1lRm9yVUlEKG5hbWUsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6
OkF1ZGlvKTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6U3Ry
aW5nOjpjcmVhdGUoZGV2aWNlTmFtZSkucHRyKCkpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBk
ZXZpY2VVSUQgOiB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2aWNlVUlE
cygpKQorICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJpbmc6
OmNyZWF0ZShkZXZpY2VVSUQpLnB0cigpKSk7CiAjZW5kaWYKICAgICByZXR1cm4gYXJyYXk7CiB9
Ci0KLVdLU3RyaW5nUmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdFZpZGVvRGV2
aWNlVUlEKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lv
blJlZikKLXsKLSAgICByZXR1cm4gIXRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKS0+dmlk
ZW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4o
V0tBcnJheUdldEl0ZW1BdEluZGV4KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VO
YW1lc1ZpZGVvKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLCAwKSkgOiByZWludGVycHJldF9jYXN0
PFdLU3RyaW5nUmVmPihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOwotfQotCi1X
S1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJ
RChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYp
Ci17Ci0gICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmF1ZGlvRGV2
aWNlVUlEcygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJy
YXlHZXRJdGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNB
dWRpbyh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDogcmVpbnRlcnByZXRfY2FzdDxXS1N0
cmluZ1JlZj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKLX0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDExIEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tU
eXBlSUQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFR5cGVJRCgpOwogCi1XS19FWFBP
UlQgdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5n
UmVmIHZpZGVvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiBhdWRpb0RldmljZVVJRCk7CiBXS19FWFBP
UlQgdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UmVmKTsKIAotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZik7Ci1XS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
RGV2aWNlTmFtZXNBdWRpbyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLSAgICAK
LVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RW
aWRlb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0Rldmlj
ZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5
UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMoV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNp
b24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMzEyLDMgKzMxMiwyNiBAQAogICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHN0cmVhbS54cGMiKQogICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vzc2lvbi54
cGMiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBpY2tl
ci54cGMiKSkKKworCis7OyBDYW1lcmEgYWNjZXNzCisoYWxsb3cgZGV2aWNlLWNhbWVyYSkKKyhh
bGxvdyBmaWxlLXJlYWQqCisgICAgKGxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5h
cHBsZS5jb3JlbWVkaWEiKQorICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2Vz
L2NvbS5hcHBsZS5jb3JlbWVkaWEiKSkKKyhhbGxvdyBtYWNoLWxvb2t1cCAoZXh0ZW5zaW9uICJj
b20uYXBwbGUuYXBwLXNhbmRib3gubWFjaCIpKQorKGFsbG93IG1hY2gtbG9va3VwCisgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuY21pby5BcHBsZUNhbWVyYUFzc2lzdGFudCIpCisgICAgOzsg
QXBwbGUgREFMIGFzc2lzdGFudHMKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLlZE
Q0Fzc2lzdGFudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY21pby5BVkNBc3Npc3Rh
bnQiKQorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uSUlEQ1ZpZGVvQXNzaXN0YW50
IikKKyAgICA7OyBRdWlja1RpbWVJSURDRGlnaXRpemVyIGFzc2lzdGFudAorICAgIChnbG9iYWwt
bmFtZSAiY29tLmFwcGxlLklJRENBc3Npc3RhbnQiKSkKKyhhbGxvdyBpb2tpdC1vcGVuCisgICAg
OzsgUXVpY2tUaW1lVVNCVkRDRGlnaXRpemVyCisgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNz
ICJJT1VTQkRldmljZVVzZXJDbGllbnRWMiIpCisgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNz
ICJJT1VTQkludGVyZmFjZVVzZXJDbGllbnRWMiIpKQorCis7OyBNaWNyb3Bob25lCisoYWxsb3cg
ZGV2aWNlLW1pY3JvcGhvbmUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gcmVxdWVzdC5zZWN1cml0eU9yaWdpbigpOwotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLCByZXF1ZXN0LnJlcXVpcmVzQXVkaW8oKSwgcmVxdWVzdC5yZXF1aXJlc1Zp
ZGVvKCksIHJlcXVlc3QudmlkZW9EZXZpY2VVSURzKCksIHJlcXVlc3QuYXVkaW9EZXZpY2VVSURz
KCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNl
ck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgcmVxdWVzdC5hdWRpb0RldmljZVVJRHMoKSwg
cmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0
KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6CiAgICAgbV9pZFRvUmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKIH0KIAotdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJt
aXNzaW9uRGVjaXNpb24odWludDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0
cmluZyYgZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pCit2b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBl
cm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsK
ICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IG1faWRUb1JlcXVlc3RNYXAu
dGFrZShyZXF1ZXN0SUQpOwogICAgIGlmICghcmVxdWVzdCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIG1fcmVxdWVzdFRvSURN
YXAucmVtb3ZlKHJlcXVlc3QpOwogCiAgICAgaWYgKGFsbG93ZWQpCi0gICAgICAgIHJlcXVlc3Qt
PnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoZGV2aWNlVUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsK
KyAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChhdWRpb0RldmljZVVJRCwg
dmlkZW9EZXZpY2VVSUQpOwogICAgIGVsc2UKICAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNj
ZXNzRGVuaWVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRSZXF1
ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbFJlcXVlc3Qo
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVk
aW8pOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50
NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNl
VUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKIAogcHJpdmF0ZToKICAgICBXZWJQ
YWdlJiBtX3BhZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMTIsOSArMzMxMiw5
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KIH0KIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJt
aXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3Zv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGRldmljZVVJREF1ZGlv
LCBjb25zdCBTdHJpbmcmIGRldmljZVVJRFZpZGVvKQogewotICAgIG1fdXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dXNlck1lZGlhSUQsIGFsbG93ZWQsIGRldmljZVVJRFZpZGVvLCBkZXZpY2VVSURBdWRpbyk7Cisg
ICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgZGV2aWNlVUlEQXVkaW8s
IGRldmljZVVJRFZpZGVvKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
MDcsNyArMTEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTm90aWZpY2F0aW9u
UGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93ZWQp
OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXS19FWFBPUlQgdm9pZCBkaWRSZWNl
aXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29s
IGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2
aWNlVUlEQXVkaW8pOworICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJt
aXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURBdWRpbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbyk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTUtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIFRob3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQubW06CisgICAgICAgIChXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNl
bFJlcXVlc3QpOiBQdXQgVXNlck1lZGlhUmVxdWVzdHNNYXAgaW4gYSBsb2NhbCBpbnN0ZWFkIG9y
IGNhbGxpbmcKKyAgICAgICAgICB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpIHRocmVlIHRpbWVzLgor
ICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvd10pOiBHZXQgcmlkIG9m
IHVubmVlZGVkIGxvY2FsIHZhcmlhYmxlcy4KKyAgICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5
TGlzdGVuZXIgYWxsb3dEZXZpY2VXaXRoVmlkZW9VSURdKTogRGVsZXRlZCwgdW51c2VkLgorCiAy
MDE1LTA5LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIFF1aWNrTG9vayBvbiB0dk9TCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAxOTAyMDYp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgQGludGVyZmFjZSBXZWJVc2VyTWVk
aWFQb2xpY3lMaXN0ZW5lciA6IAogfQogLSAoaWQpaW5pdFdpdGhVc2VyTWVkaWFSZXF1ZXN0OihQ
YXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KXJlcXVlc3Q7CiAtICh2b2lkKWNhbmNlbFJlcXVl
c3Q7Ci0tICh2b2lkKWFsbG93RGV2aWNlV2l0aFZpZGVvVUlEOihjb25zdCBTdHJpbmcmKXZpZGVv
VUlEIGFuZEF1ZGlvVUlEOihjb25zdCBTdHJpbmcmKWF1ZGlvVUlEOwogLSAodm9pZClkZW55Owog
QGVuZAogCkBAIC0xMTQsMTIgKzExMywxMyBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVx
dWVzdFBlcm1pc3NpCiAKIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0KFVz
ZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgVXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0
ZXJhdG9yIGl0ID0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5maW5kKCZyZXF1ZXN0KTsKLSAgICBp
ZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5lbmQoKSkKKyAgICBVc2VyTWVkaWFSZXF1
ZXN0c01hcCYgcmVxdWVzdHNNYXAgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpOworICAgIFVzZXJN
ZWRpYVJlcXVlc3RzTWFwOjppdGVyYXRvciBpdCA9IHJlcXVlc3RzTWFwLmZpbmQoJnJlcXVlc3Qp
OworICAgIGlmIChpdCA9PSByZXF1ZXN0c01hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgW2l0LT52YWx1ZSBjYW5jZWxSZXF1ZXN0XTsKLSAgICB1c2VyTWVkaWFSZXF1ZXN0c01hcCgp
LnJlbW92ZShpdCk7CisgICAgcmVxdWVzdHNNYXAucmVtb3ZlKGl0KTsKIH0KIAogCkBAIC0xNTMs
MjIgKzE1Myw4IEBAIC0gKHZvaWQpYWxsb3cKICAgICBpZiAoIV9yZXF1ZXN0KQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB2aWRlb1VJRCA9IF9yZXF1ZXN0LT5maXJz
dFZpZGVvRGV2aWNlVUlEKCk7Ci0gICAgY29uc3QgU3RyaW5nJiBhdWRpb1VJRCA9IF9yZXF1ZXN0
LT5maXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAgCi0gICAgX3JlcXVlc3QtPnVzZXJNZWRpYUFj
Y2Vzc0dyYW50ZWQodmlkZW9VSUQsIGF1ZGlvVUlEKTsKLSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1h
cChfcmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKLX0KKyAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNj
ZXNzR3JhbnRlZChfcmVxdWVzdC0+YWxsb3dlZEF1ZGlvRGV2aWNlVUlEKCksIF9yZXF1ZXN0LT5h
bGxvd2VkVmlkZW9EZXZpY2VVSUQoKSk7CiAKLS0gKHZvaWQpYWxsb3dEZXZpY2VXaXRoVmlkZW9V
SUQ6KGNvbnN0IFN0cmluZyYpdmlkZW9VSUQgYW5kQXVkaW9VSUQ6KGNvbnN0IFN0cmluZyYpYXVk
aW9VSUQKLXsKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmICghX3JlcXVlc3QpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRl
ZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIAogICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9y
ZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjE3KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBt
ZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIFRob3J0
b24uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0SWZQb3NzaWJsZSk6IFVwZGF0ZSAKKyAgICAgICAgICBmb3IgQVBJIGNoYW5n
ZXMuCisKIDIwMTUtMDktMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgcnVubmluZyB1bml0IHRlc3RzIG9uIGlPUyBTaW11bGF0b3IgdGVzdCBi
b3QKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAxOTAyMDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYxOSw5ICsxNjE5LDI0IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRlY2lkZVBvbGljeUZvclVzZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiByZXF1ZXN0IDogbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpIHsKLSAgICAgICAgaWYg
KG1faXNVc2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dlZCkgewotICAgICAgICAgICAgaWYgKFdLQXJy
YXlHZXRTaXplKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKHJl
cXVlc3QuZ2V0KCkpKSB8fCBXS0FycmF5R2V0U2l6ZShXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0RGV2aWNlTmFtZXNBdWRpbyhyZXF1ZXN0LmdldCgpKSkpCi0gICAgICAgICAgICAgICAgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KHJlcXVlc3QuZ2V0KCksIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKHJlcXVlc3QuZ2V0KCkpLCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRChyZXF1ZXN0LmdldCgp
KSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7
CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7CisK
KyAgICAgICAgaWYgKG1faXNVc2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dlZCB8fCAoIVdLQXJyYXlH
ZXRTaXplKHZpZGVvRGV2aWNlVUlEcy5nZXQoKSkgJiYgIVdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2
aWNlVUlEcy5nZXQoKSkpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dmlkZW9EZXZpY2VVSUQ7CisgICAgICAgICAgICBpZiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZp
Y2VVSURzLmdldCgpKSkKKyAgICAgICAgICAgICAgICB2aWRlb0RldmljZVVJRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh2aWRlb0RldmljZVVJ
RHMuZ2V0KCksIDApKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2aWRlb0Rl
dmljZVVJRCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKworICAgICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvRGV2aWNlVUlEOworICAgICAgICAgICAg
aWYgKFdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgYXVkaW9EZXZpY2VVSUQgPSByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5
R2V0SXRlbUF0SW5kZXgoYXVkaW9EZXZpY2VVSURzLmdldCgpLCAwKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiIik7CisKKyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhyZXF1ZXN0LmdldCgpLCB2aWRlb0RldmljZVVJRC5nZXQoKSwgYXVkaW9EZXZpY2VV
SUQuZ2V0KCkpOworCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdERlbnkocmVxdWVzdC5nZXQoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261896</attachid>
            <date>2015-09-24 14:53:18 -0700</date>
            <delta_ts>2015-09-25 08:56:54 -0700</delta_ts>
            <desc>Another updated patch</desc>
            <filename>user_request_api_patch_4.txt</filename>
            <type>text/plain</type>
            <size>37688</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBUaG9y
dG9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQpOiBVc2Ug
dHJhY2sgcGVyc2lzdGVudCBJRCB0byBjcmVhdGUgdmVjdG9ycworICAgICAgICAgIGFzIHRoYXQg
aXMgd2hhdCB0aGUgcGxhdGZvcm0gY29kZSBuZWVkcyB0byBtYXAgdG8gYSBjYXB0dXJlIGRldmlj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnVzZXJNZWRpYUFjY2Vzc0dy
YW50ZWQpOiBtX2Nob3NlblhYRGV2aWNlVUlEIC0+IG1fWFhEZXZpY2VVSURBbGxvd2VkLgorICAg
ICAgICAgIFVzZSB0aGUgZGV2aWNlIElEcyB0byBjcmVhdGUgdGhlIE1lZGlhU3RyZWFtLiBTd2l0
Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKTogRG9uJ3QgYXNzdW1lIGNvbnN0cmFpbnRzIGFy
ZSB2YWxpZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnZpZGVvRGV2aWNlVUlEcyk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphdWRpb0RldmljZVVJRHMpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZFZpZGVvRGV2aWNlVUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93ZWRBdWRpb0Rldmlj
ZVVJRCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1aXJlc0F1ZGlv
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVz
VmlkZW8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Zmly
c3RWaWRlb0RldmljZVVJRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IENhbGwg
c2V0UGVyc2lzdGVudElkLgorCiAyMDE1LTA5LTI0ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2su
b2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdHlwbyBlcnJvcnMg
aW4gYSBjb21tZW50ICgicGFzc2VkIiAtPiAiUGFzc2VkIiwgIk92ZXJ3aXNlIiAtPiAiT3RoZXJ3
aXNlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDkgKzEyNSwxMCBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KCkK
IHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29uc3RyYWludHNWYWxpZGF0ZWQoY29uc3QgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvVHJhY2tzLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9UcmFja3MpCiB7CiAgICAgZm9yIChh
dXRvJiBhdWRpb1RyYWNrIDogYXVkaW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9EZXZpY2VVSURz
LmFwcGVuZChhdWRpb1RyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9hdWRpb0RldmljZVVJRHMuYXBw
ZW5kKGF1ZGlvVHJhY2stPnBlcnNpc3RlbnRJRCgpKTsKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJh
Y2sgOiB2aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb0RldmljZVVJRHMuYXBwZW5kKHZpZGVv
VHJhY2stPmlkKCkpOworICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9UcmFj
ay0+cGVyc2lzdGVudElEKCkpOworCiAgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10gewog
ICAgICAgICAvLyAyIC0gVGhlIGNvbnN0cmFpbnRzIGFyZSB2YWxpZCwgYXNrIHRoZSB1c2VyIGZv
ciBhY2Nlc3MgdG8gbWVkaWEuCkBAIC0xMzYsMTQgKzEzNywxNSBAQCB2b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OmNvbnN0cmFpbnRzVmFsaWRhCiAgICAgfSk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6dXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlE
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojp1
c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0
IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV9jaG9zZW5WaWRlb0RldmljZVVJRCA9
IHZpZGVvRGV2aWNlVUlEOwotICAgIG1fY2hvc2VuQXVkaW9EZXZpY2VVSUQgPSBhdWRpb0Rldmlj
ZVVJRDsKKyAgICBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCA9IHZpZGVvRGV2aWNlVUlEOworICAg
IG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkID0gYXVkaW9EZXZpY2VVSUQ7CisKICAgICBSZWZQdHI8
VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cywgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEXSB7CiAgICAgICAgIC8vIDMgLSB0aGUg
dXNlciBncmFudGVkIGFjY2VzcywgYXNrIHBsYXRmb3JtIHRvIGNyZWF0ZSB0aGUgbWVkaWEgc3Ry
ZWFtIGRlc2NyaXB0b3JzLgotICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5jcmVhdGVNZWRpYVN0cmVhbShwcm90ZWN0ZWRUaGlzLmdldCgpLCBwcm90ZWN0ZWRU
aGlzLT5tX2F1ZGlvQ29uc3RyYWludHMsIHByb3RlY3RlZFRoaXMtPm1fdmlkZW9Db25zdHJhaW50
cyk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNyZWF0
ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELCB2aWRlb0Rl
dmljZVVJRCk7CiAgICAgfSk7CiB9CiAKQEAgLTE2NCwxMCArMTY2LDE0IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFAKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1l
ZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3Ry
ZWFtLT5nZXRBdWRpb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV9hdWRpb0NvbnN0cmFpbnRzKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRW
aWRlb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRlb0Nv
bnN0cmFpbnRzKTsKKyAgICBpZiAobV9hdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAo
YXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFj
ay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKKyAgICB9CisgICAgaWYg
KG1fdmlkZW9Db25zdHJhaW50cykgeworICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFt
LT5nZXRWaWRlb1RyYWNrcygpKQorICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMo
Km1fdmlkZW9Db25zdHJhaW50cyk7CisgICAgfQogCiAgICAgbV9wcm9taXNlLnJlc29sdmUoc3Ry
ZWFtKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNjUsMTcgKzY1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnQoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5n
JiB2aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgYXVk
aW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiAKLSAgICBib29sIHJlcXVpcmVz
QXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3RyYWludHM7IH0KLSAgICBib29sIHJl
cXVpcmVzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29uc3RyYWludHM7IH0KLSAgICAK
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0RldmljZVVJRHM7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9E
ZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJRHM7IH0KICAgICAKLSAg
ICBjb25zdCBTdHJpbmcmIGZpcnN0VmlkZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiAhdmlk
ZW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VVSURzKCkuYXQoMCkgOiBlbXB0
eVN0cmluZygpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmaXJzdEF1ZGlvRGV2aWNlVUlEKCkgY29u
c3QgeyByZXR1cm4gIWF1ZGlvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IGF1ZGlvRGV2aWNlVUlE
cygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZFZp
ZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkVmlkZW9EZXZpY2VVSUQ7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGFsbG93ZWRBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXVkaW9EZXZpY2VVSURBbGxvd2VkOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlhUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7
CkBAIC05NSwxMiArOTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlk
ZW9EZXZpY2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwotICAg
IAotICAgIFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2Nob3Nl
bkF1ZGlvRGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJv
bGxlcjsKIAorICAgIFN0cmluZyBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsKKyAgICBTdHJpbmcg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1l
ZGlhU291cmNlCiAKICAgICBpZiAobV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIG1faWQgPSBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgbV9wZXJzaXN0ZW50SWQgPSBtX2lkOworICAg
IG1fcGVyc2lzdGVudElEID0gbV9pZDsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpy
ZXNldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5n
JiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgcGVyc2lz
dGVudElkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SWQ7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UGVyc2lzdGVudElkKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKSB7IG1fcGVyc2lz
dGVudElkID0gcGVyc2lzdGVudElkOyB9CisgICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQo
KSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQ
ZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQg
PSBwZXJzaXN0ZW50SUQ7IH0KIAogICAgIGVudW0gVHlwZSB7IE5vbmUsIEF1ZGlvLCBWaWRlbyB9
OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTE1LDcgKzEx
NSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsKLSAgICBTdHJp
bmcgbV9wZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUg
bV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX3N0b3BwZWQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6
QVZNZWRpYUNhcHR1cmVTb3VyCiAgICAgLCBtX2lzUnVubmluZyhmYWxzZSkKIHsKICAgICBzZXRO
YW1lKGRldmljZS5sb2NhbGl6ZWROYW1lKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVu
aXF1ZUlEKTsKICAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZSh0eXBlID09IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJh
IDogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTI0ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIgbWVkaWEgcmVx
dWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBUaG9ydG9uLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3Bw
OgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyk6
IE5ldywgcmVuYW1lZCBmcm9tIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1l
c1ZpZGVvLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNl
VUlEcyk6IE5ldywgcmVuYW1lZCBmcm9tIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZp
Y2VOYW1lc0F1ZGlvLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
QmVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2
aWNlTmFtZXNWaWRlbyk6IERlbGV0ZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0RGV2aWNlTmFtZXNBdWRpbyk6IERlbGV0ZWQuCisgICAgICAgIChXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRCk6IERlbGV0ZWQuCisgICAgICAgIChX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KTogR2V0IHJpZCBvZiB0aGUgYm9vbCBwYXJhbWV0
ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUg
Y29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJt
aXNzaW9uRGVjaXNpb24pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eSk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVycy4KKyAgICAgICAgICBTd2l0Y2ggYXVk
aW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBldmVyeXdoZXJl
IGVsc2UuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmFsbG93KTogU3dpdGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlci4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Z2V0RGV2aWNlTmFtZUZvclVJ
RCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6dmlkZW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6YXVkaW9EZXZpY2VVSURzKToKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Zmlyc3RBdWRpb0RldmljZVVJRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnJlcXVpcmVz
QXVkaW8pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjpyZXF1aXJlc1ZpZGVvKTogRGVsZXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUpOiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFt
ZXRlcnMuCisgICAgICAgICAgU3dpdGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBi
ZSBjb25zaXN0ZW50IHdpdGggZXZlcnl3aGVyZSBlbHNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0KTogR2V0IHJpZCBv
ZiBib29sIHBhcmFtcywgdGhlIGRldmljZQorICAgICAgICAgIHZlY3RvcnMgaGF2ZSB0aGUgc2Ft
ZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKTogU3dpdGNo
IGF1ZGlvL3ZpZGVvCisgICAgICAgICAgcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQg
d2l0aCBldmVyeXdoZXJlIGVsc2UuIGRldmljZVVJRFZpZGVvIC0+IHZpZGVvRGV2aWNlVUlELAor
ICAgICAgICBkZXZpY2VVSURBdWRpbyAtPiBhdWRpb0RldmljZVVJRC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKTogU3dp
dGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE1LTA5LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJhbiBzb3J0LVhjb2RlLXByb2plY3QtZmlsZS4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5jbGVh
cigpOwogfQogCi1QYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNBdWRpbykKK1Bhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJl
cXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0Rl
dmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMpCiB7Ci0gICAg
UmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRpYUlELCByZXF1
aXJlc0F1ZGlvLCByZXF1aXJlc1ZpZGVvLCBkZXZpY2VVSURzVmlkZW8sIGRldmljZVVJRHNBdWRp
byk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3Qg
PSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUoKnRoaXMsIHVzZXJNZWRp
YUlELCBhdWRpb0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7CiAgICAgbV9wZW5kaW5nUmVx
dWVzdHMuYWRkKHVzZXJNZWRpYUlELCByZXF1ZXN0LmdldCgpKTsKICAgICByZXR1cm4gcmVxdWVz
dC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNl
ck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCwgY29u
c3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWlu
dDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0Rldmlj
ZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKICAgICBpZiAoIW1fcGFnZS5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTAgKzMzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0cygp
OwogCiAgICAgLy8gQ3JlYXRlIGEgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIu
Ci0gICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGVS
ZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0Rl
dmljZVVJRHMpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkgd2hlbiBhIGRlY2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVzZXIuCi0gICAgdm9pZCBkaWRS
ZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90LCBib29sIGFsbG93LCBj
b25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlE
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0
X3QsIGJvb2wgYWxsb3csIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmlu
ZyYgdmlkZW9EZXZpY2VVSUQpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Pj4gbV9wZW5kaW5nUmVxdWVzdHM7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdl
ciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJl
c1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2
aWRlb0RldmljZVVJRHMpCiAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1fdXNlck1l
ZGlhSUQodXNlck1lZGlhSUQpCi0gICAgLCBtX3JlcXVpcmVzQXVkaW8ocmVxdWlyZXNBdWRpbykK
LSAgICAsIG1fcmVxdWlyZXNWaWRlbyhyZXF1aXJlc1ZpZGVvKQotICAgICwgbV92aWRlb0Rldmlj
ZVVJRHMoZGV2aWNlVUlEc1ZpZGVvKQotICAgICwgbV9hdWRpb2RldmljZVVJRHMoZGV2aWNlVUlE
c0F1ZGlvKQorICAgICwgbV92aWRlb0RldmljZVVJRHModmlkZW9EZXZpY2VVSURzKQorICAgICwg
bV9hdWRpb2RldmljZVVJRHMoYXVkaW9EZXZpY2VVSURzKQogewogfQogCi12b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmFsbG93KGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VV
SUQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmFsbG93KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0
IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV9tYW5hZ2VyLmRpZFJlY2VpdmVVc2Vy
TWVkaWFQZXJtaXNzaW9uRGVjaXNpb24obV91c2VyTWVkaWFJRCwgdHJ1ZSwgdmlkZW9EZXZpY2VV
SUQsIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBtX21hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBl
cm1pc3Npb25EZWNpc2lvbihtX3VzZXJNZWRpYUlELCB0cnVlLCBhdWRpb0RldmljZVVJRCwgdmlk
ZW9EZXZpY2VVSUQpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OmRlbnkoKQpAQCAtNTEsMTIgKzQ5LDUgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjppbgogICAgIG1fbWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsKIH0KIAotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi1jb25zdCBTdHJpbmcmIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OmdldERldmljZU5hbWVGb3JVSUQoY29uc3QgU3RyaW5nJiBVSUQsIFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChV
SUQsIHR5cGUsIG51bGxwdHIpLT5sYWJlbCgpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgJKHJldmlzaW9uIDE5MDIwNikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUAogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIHJl
cXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRl
dmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRpbykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KG1hbmFnZXIs
IHVzZXJNZWRpYUlELCByZXF1aXJlc0F1ZGlvLCByZXF1aXJlc1ZpZGVvLCBkZXZpY2VVSURzVmlk
ZW8sIGRldmljZVVJRHNBdWRpbykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIHZpZGVvRGV2
aWNlVUlEcywgYXVkaW9EZXZpY2VVSURzKSk7CiAgICAgfQogCiAgICAgdm9pZCBhbGxvdyhjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsK
QEAgLTQxLDEzICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBjb25zdCBTdHJpbmcmIGdldERldmljZU5hbWVG
b3JVSUQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7
Ci0jZW5kaWYKLQotICAgIGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWlyZXNBdWRpbzsgfQotICAgIGJvb2wgcmVxdWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWlyZXNWaWRlbzsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0Rl
dmljZVVJRHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRGV2aWNlVUlEczsgfQogICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlv
ZGV2aWNlVUlEczsgfQogICAgIApAQCAtNTUsMTIgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIGZpcnN0QXVkaW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiAhYXVkaW9EZXZp
Y2VVSURzKCkuaXNFbXB0eSgpID8gYXVkaW9EZXZpY2VVSURzKCkuYXQoMCkgOiBlbXB0eVN0cmlu
ZygpOyB9CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRp
YUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJ
RHNBdWRpbyk7CisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXVkaW9EZXZpY2VVSURzKTsKIAogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5JiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV91c2VyTWVkaWFJRDsKLSAgICBib29s
IG1fcmVxdWlyZXNBdWRpbzsKLSAgICBib29sIG1fcmVxdWlyZXNWaWRlbzsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlvZGV2
aWNlVUlEczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNzksMTMgKzUyNzksMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIHJlcXVlc3QtPmRlbnkoKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJh
bWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWlu
dDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
IAogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luSWRlbnRpZmllcikpOwotICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiByZXF1ZXN0ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3JlYXRlUmVxdWVzdCh1c2VyTWVkaWFJRCwgYXVkaW8sIHZpZGVvLCBkZXZpY2VVSURzVmlkZW8s
IGRldmljZVVJRHNBdWRpbyk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVh
dGVSZXF1ZXN0KHVzZXJNZWRpYUlELCBhdWRpb0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7
CiAKICAgICBpZiAoIW1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsICpvcmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgpKSkK
ICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDcgKzExODIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0
X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAgICB2
b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2Nh
dGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKLSAg
ICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1l
ZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1
ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICB2b2lkIHJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsK
IAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zp
c2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAx
OTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICMgTWVkaWFTdGVh
bSBtZXNzYWdlcwotICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0
X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVy
LCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBWZWN0b3I8U3RyaW5nPiBkZXZpY2VVSURzVmlkZW8s
IFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNBdWRpbykKKyAgICBSZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURzLCBW
ZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJRHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0
aW9uIG1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lv
biAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMyw2IEBAIFdL
VHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXQKIH0KIAogCi12b2lkIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvd0Jlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZikKLXsKLSAgICBjb25zdCBTdHJp
bmcmIHZpZGVvRGV2aWNlID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+
Zmlyc3RWaWRlb0RldmljZVVJRCgpOwotICAgIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2UgPSB0
b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5maXJzdEF1ZGlvRGV2aWNlVUlE
KCk7Ci0gICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+YWxsb3codmlk
ZW9EZXZpY2UsIGF1ZGlvRGV2aWNlKTsKLX0KLQogdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QWxsb3coV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgV0tTdHJpbmdSZWYgdmlkZW9EZXZpY2VVSUQsIFdLU3RyaW5nUmVm
IGF1ZGlvRGV2aWNlVUlEKQogewogICAgIHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZiktPmFsbG93KHRvV1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlEKSwgdG9XVEZTdHJpbmcoYXVk
aW9EZXZpY2VVSUQpKTsKQEAgLTUwLDM2ICs0MywyMiBAQCB2b2lkIFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3REZW55KFdLCiAgICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UmVmKS0+ZGVueSgpOwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3REZXZpY2VOYW1lc1ZpZGVvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1l
ZGlhUGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFZpZGVvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRp
YVBlcm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011dGFi
bGVBcnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChhdXRv
JiBuYW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0RldmljZVVJRHMo
KSkgewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNz
aW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpWaWRlbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LCB0
b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQorICAg
IGZvciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52
aWRlb0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJ
KEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAgcmV0
dXJuIGFycmF5OwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZXZpY2VOYW1lc0F1ZGlvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlh
UGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1
ZGlvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBl
cm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011dGFibGVB
cnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChhdXRvJiBu
YW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJRHMoKSkg
ewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9u
UmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpBdWRpbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LCB0b0FQ
SShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRp
b0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQ
STo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGFycmF5OwogfQotCi1XS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmly
c3RWaWRlb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRp
YVBlcm1pc3Npb25SZWYpCi17Ci0gICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVybWlzc2lv
blJlZiktPnZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0RGV2aWNlTmFtZXNWaWRlbyh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDogcmVpbnRl
cnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIp
KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0QXVk
aW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJt
aXNzaW9uUmVmKQotewotICAgIHJldHVybiAhdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYp
LT5hdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyByZWludGVycHJldF9jYXN0PFdLU3RyaW5n
UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERl
dmljZU5hbWVzQXVkaW8odXNlck1lZGlhUGVybWlzc2lvblJlZiksIDApKSA6IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7Ci19
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxMSBAQCBleHRlcm4gIkMiIHsKIAogV0tf
RVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsK
IAotV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93QmVzdChX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVm
LCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZpY2VVSUQp
OwogV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CiAKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RSZWYpOwotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERldmljZU5hbWVzQXVkaW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJl
Zik7Ci0gICAgCi1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEZpcnN0VmlkZW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7
Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0
QXVkaW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CitXS19FWFBP
UlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURz
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYg
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lv
biAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIEFT
U0VSVCh3ZWJGcmFtZSk7CiAKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gcmVxdWVzdC5z
ZWN1cml0eU9yaWdpbigpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCByZXF1ZXN0LnJlcXVpcmVz
QXVkaW8oKSwgcmVxdWVzdC5yZXF1aXJlc1ZpZGVvKCksIHJlcXVlc3QudmlkZW9EZXZpY2VVSURz
KCksIHJlcXVlc3QuYXVkaW9EZXZpY2VVSURzKCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVl
c3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwg
cmVxdWVzdC5hdWRpb0RldmljZVVJRHMoKSwgcmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSkpOwog
fQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVz
dChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgbV9pZFRvUmVxdWVzdE1hcC5yZW1v
dmUocmVxdWVzdElEKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgcmVxdWVz
dElELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0
cmluZyYgZGV2aWNlVUlEQXVkaW8pCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
cmVxdWVzdCA9IG1faWRUb1JlcXVlc3RNYXAudGFrZShyZXF1ZXN0SUQpOwogICAgIGlmICghcmVx
dWVzdCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OgogICAgIG1fcmVxdWVzdFRvSURNYXAucmVtb3ZlKHJlcXVlc3QpOwogCiAgICAgaWYg
KGFsbG93ZWQpCi0gICAgICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoZGV2aWNl
VUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsKKyAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNj
ZXNzR3JhbnRlZChhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSUQpOwogICAgIGVsc2UKICAg
ICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHJldmlzaW9uIDE5MDIw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc3RhcnRSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Qm
KTsKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8s
IGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJN
ZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2Vk
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
VUlEKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlJiBtX3BhZ2U7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTAyMDYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMTIsOSArMzMxMiw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5v
dGlmaWNhdGlvblBlcm0KIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi12b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1l
ZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBj
b25zdCBTdHJpbmcmIGRldmljZVVJREF1ZGlvLCBjb25zdCBTdHJpbmcmIGRldmljZVVJRFZpZGVv
KQogewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVV
c2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFsbG93ZWQsIGRldmljZVVJ
RFZpZGVvLCBkZXZpY2VVSURBdWRpbyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJ
RCwgYWxsb3dlZCwgZGV2aWNlVUlEQXVkaW8sIGRldmljZVVJRFZpZGVvKTsKIH0KICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJl
dmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDcsNyArMTEwNyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklELCBib29sIGFsbG93ZWQpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBXS19FWFBPUlQgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2aWNl
VUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pOworICAgIFdLX0VYUE9SVCB2
b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1l
ZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURWaWRlbyk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSBy
ZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIFRob3J0b24uCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW06CisgICAgICAg
IChXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVlc3QpOiBQdXQgVXNlck1lZGlhUmVxdWVz
dHNNYXAgaW4gYSBsb2NhbCBpbnN0ZWFkIG9yIGNhbGxpbmcKKyAgICAgICAgICB1c2VyTWVkaWFS
ZXF1ZXN0c01hcCgpIHRocmVlIHRpbWVzLgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lM
aXN0ZW5lciBhbGxvd10pOiBHZXQgcmlkIG9mIHVubmVlZGVkIGxvY2FsIHZhcmlhYmxlcy4KKyAg
ICAgICAgKC1bV2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgYWxsb3dEZXZpY2VXaXRoVmlkZW9V
SURdKTogRGVsZXRlZCwgdW51c2VkLgorCiAyMDE1LTA5LTIyICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIFF1aWNrTG9vayBvbiB0dk9TCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50Lm1tCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDYgQEAgQGludGVyZmFjZSBXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciA6IAogfQogLSAoaWQp
aW5pdFdpdGhVc2VyTWVkaWFSZXF1ZXN0OihQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KXJl
cXVlc3Q7CiAtICh2b2lkKWNhbmNlbFJlcXVlc3Q7Ci0tICh2b2lkKWFsbG93RGV2aWNlV2l0aFZp
ZGVvVUlEOihjb25zdCBTdHJpbmcmKXZpZGVvVUlEIGFuZEF1ZGlvVUlEOihjb25zdCBTdHJpbmcm
KWF1ZGlvVUlEOwogLSAodm9pZClkZW55OwogQGVuZAogCkBAIC0xMTQsMTIgKzExMywxMyBAQCB2
b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3NpCiAKIHZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgVXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0ZXJhdG9yIGl0ID0gdXNlck1lZGlhUmVxdWVzdHNN
YXAoKS5maW5kKCZyZXF1ZXN0KTsKLSAgICBpZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAo
KS5lbmQoKSkKKyAgICBVc2VyTWVkaWFSZXF1ZXN0c01hcCYgcmVxdWVzdHNNYXAgPSB1c2VyTWVk
aWFSZXF1ZXN0c01hcCgpOworICAgIFVzZXJNZWRpYVJlcXVlc3RzTWFwOjppdGVyYXRvciBpdCA9
IHJlcXVlc3RzTWFwLmZpbmQoJnJlcXVlc3QpOworICAgIGlmIChpdCA9PSByZXF1ZXN0c01hcC5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW2l0LT52YWx1ZSBjYW5jZWxSZXF1ZXN0XTsK
LSAgICB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLnJlbW92ZShpdCk7CisgICAgcmVxdWVzdHNNYXAu
cmVtb3ZlKGl0KTsKIH0KIAogCkBAIC0xNTMsMjIgKzE1Myw4IEBAIC0gKHZvaWQpYWxsb3cKICAg
ICBpZiAoIV9yZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY29uc3QgU3RyaW5n
JiB2aWRlb1VJRCA9IF9yZXF1ZXN0LT5maXJzdFZpZGVvRGV2aWNlVUlEKCk7Ci0gICAgY29uc3Qg
U3RyaW5nJiBhdWRpb1VJRCA9IF9yZXF1ZXN0LT5maXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAg
Ci0gICAgX3JlcXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQodmlkZW9VSUQsIGF1ZGlvVUlE
KTsKLSAgICBSZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKLX0K
KyAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChfcmVxdWVzdC0+YWxsb3dlZEF1
ZGlvRGV2aWNlVUlEKCksIF9yZXF1ZXN0LT5hbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSk7CiAKLS0g
KHZvaWQpYWxsb3dEZXZpY2VXaXRoVmlkZW9VSUQ6KGNvbnN0IFN0cmluZyYpdmlkZW9VSUQgYW5k
QXVkaW9VSUQ6KGNvbnN0IFN0cmluZyYpYXVkaW9VSUQKLXsKLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIGlmICghX3JlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfcmVx
dWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIAog
ICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTkwMjE3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIFRob3J0b24uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0SWZQb3NzaWJsZSk6IFVwZGF0
ZSAKKyAgICAgICAgICBmb3IgQVBJIGNoYW5nZXMuCisKIDIwMTUtMDktMjQgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgcnVubmluZyB1bml0IHRl
c3RzIG9uIGlPUyBTaW11bGF0b3IgdGVzdCBib3QKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxOSw5ICsx
NjE5LDI0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclVzZXIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKG1faXNVc2VyTWVkaWFQZXJtaXNzaW9uQWxsb3dl
ZCkgewotICAgICAgICAgICAgaWYgKFdLQXJyYXlHZXRTaXplKFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKHJlcXVlc3QuZ2V0KCkpKSB8fCBXS0FycmF5R2V0U2l6
ZShXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRpbyhyZXF1ZXN0Lmdl
dCgpKSkpCi0gICAgICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KHJlcXVlc3QuZ2V0KCksIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdFZpZGVvRGV2
aWNlVUlEKHJlcXVlc3QuZ2V0KCkpLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RB
dWRpb0RldmljZVVJRChyZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJy
YXlSZWY+IGF1ZGlvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBdWRp
b0RldmljZVVJRHMocmVxdWVzdC5nZXQoKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQXJyYXlS
ZWY+IHZpZGVvRGV2aWNlVUlEcyA9IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0Rl
dmljZVVJRHMocmVxdWVzdC5nZXQoKSk7CisKKyAgICAgICAgaWYgKG1faXNVc2VyTWVkaWFQZXJt
aXNzaW9uQWxsb3dlZCB8fCAoIVdLQXJyYXlHZXRTaXplKHZpZGVvRGV2aWNlVUlEcy5nZXQoKSkg
JiYgIVdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSkpKSB7CisgICAgICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdmlkZW9EZXZpY2VVSUQ7CisgICAgICAgICAgICBp
ZiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZpY2VVSURzLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICB2aWRlb0RldmljZVVJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlH
ZXRJdGVtQXRJbmRleCh2aWRlb0RldmljZVVJRHMuZ2V0KCksIDApKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB2aWRlb0RldmljZVVJRCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCIiKTsKKworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1
ZGlvRGV2aWNlVUlEOworICAgICAgICAgICAgaWYgKFdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2aWNl
VUlEcy5nZXQoKSkpCisgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSByZWludGVycHJl
dF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXVkaW9EZXZpY2VVSURz
LmdldCgpLCAwKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXVkaW9EZXZp
Y2VVSUQgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIik7CisKKyAgICAgICAgICAg
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0LmdldCgpLCB2aWRlb0Rl
dmljZVVJRC5nZXQoKSwgYXVkaW9EZXZpY2VVSUQuZ2V0KCkpOworCiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkocmVxdWVzdC5nZXQo
KSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="287093"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261924</attachid>
            <date>2015-09-25 08:56:54 -0700</date>
            <delta_ts>2015-09-25 13:38:15 -0700</delta_ts>
            <desc>YAUP</desc>
            <filename>user_request_api_patch_5.txt</filename>
            <type>text/plain</type>
            <size>41685</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZCk6IFVzZSB0
cmFjayBwZXJzaXN0ZW50IElEIHRvIGNyZWF0ZSB2ZWN0b3JzCisgICAgICAgICAgYXMgdGhhdCBp
cyB3aGF0IHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRvIG1hcCB0byBhIGNhcHR1cmUgZGV2aWNl
LgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3Jh
bnRlZCk6IG1fY2hvc2VuWFhEZXZpY2VVSUQgLT4gbV9YWERldmljZVVJREFsbG93ZWQuCisgICAg
ICAgICAgVXNlIHRoZSBkZXZpY2UgSURzIHRvIGNyZWF0ZSB0aGUgTWVkaWFTdHJlYW0uIFN3aXRj
aCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOiBEb24ndCBhc3N1bWUgY29uc3RyYWludHMgYXJl
IHZhbGlkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9EZXZpY2VVSURzKToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvRGV2aWNlVUlEcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphbGxvd2VkVmlkZW9EZXZpY2VVSUQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZEF1ZGlvRGV2aWNl
VUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVzQXVkaW8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6cmVxdWlyZXNW
aWRlbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmaXJz
dFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmZpcnN0QXVkaW9EZXZpY2VVSUQpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKTogQ2FsbCBz
ZXRQZXJzaXN0ZW50SWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5v
aEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0eXBvIGVycm9ycyBp
biBhIGNvbW1lbnQgKCJwYXNzZWQiIC0+ICJQYXNzZWQiLCAiT3Zlcndpc2UiIC0+ICJPdGhlcndp
c2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsOSArMTI1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQog
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3MsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcykKIHsKICAgICBmb3IgKGF1
dG8mIGF1ZGlvVHJhY2sgOiBhdWRpb1RyYWNrcykKLSAgICAgICAgbV9hdWRpb0RldmljZVVJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPmlkKCkpOworICAgICAgICBtX2F1ZGlvRGV2aWNlVUlEcy5hcHBl
bmQoYXVkaW9UcmFjay0+cGVyc2lzdGVudElEKCkpOwogICAgIGZvciAoYXV0byYgdmlkZW9UcmFj
ayA6IHZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9U
cmFjay0+aWQoKSk7CisgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNr
LT5wZXJzaXN0ZW50SUQoKSk7CisKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CiAg
ICAgICAgIC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9y
IGFjY2VzcyB0byBtZWRpYS4KQEAgLTEzNiwxNCArMTM3LDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6Y29uc3RyYWludHNWYWxpZGEKICAgICB9KTsKIH0KIAotdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBtX2Nob3NlblZpZGVvRGV2aWNlVUlEID0g
dmlkZW9EZXZpY2VVSUQ7Ci0gICAgbV9jaG9zZW5BdWRpb0RldmljZVVJRCA9IGF1ZGlvRGV2aWNl
VUlEOworICAgIG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEID0gdmlkZW9EZXZpY2VVSUQ7CisgICAg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQgPSBhdWRpb0RldmljZVVJRDsKKwogICAgIFJlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
LCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKICAgICAgICAgLy8gMyAtIHRoZSB1
c2VyIGdyYW50ZWQgYWNjZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJl
YW0gZGVzY3JpcHRvcnMuCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIHByb3RlY3RlZFRo
aXMtPm1fYXVkaW9Db25zdHJhaW50cywgcHJvdGVjdGVkVGhpcy0+bV92aWRlb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRl
TWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKTsKICAgICB9KTsKIH0KIApAQCAtMTY0LDEwICsxNjYsMTQgQEAgdm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUAogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVk
aWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJl
YW0tPmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2F1ZGlvQ29uc3RyYWludHMpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZp
ZGVvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29u
c3RyYWludHMpOworICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKKyAgICAgICAgZm9yIChh
dXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkKKyAgICAgICAgICAgIHRyYWNr
LT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOworICAgIH0KKyAgICBpZiAo
bV92aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldFZpZGVvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJl
YW0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxNyArNjUsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIAotICAgIGJvb2wgcmVxdWlyZXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdHJhaW50czsgfQotICAgIGJvb2wgcmVx
dWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db25zdHJhaW50czsgfQotICAgIAog
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRGV2aWNlVUlEczsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0Rl
dmljZVVJRHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvRGV2aWNlVUlEczsgfQogICAgIAotICAg
IGNvbnN0IFN0cmluZyYgZmlyc3RWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICF2aWRl
b0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyB2aWRlb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5
U3RyaW5nKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGZpcnN0QXVkaW9EZXZpY2VVSUQoKSBjb25z
dCB7IHJldHVybiAhYXVkaW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gYXVkaW9EZXZpY2VVSURz
KCkuYXQoMCkgOiBlbXB0eVN0cmluZygpOyB9CisgICAgY29uc3QgU3RyaW5nJiBhbGxvd2VkVmlk
ZW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsgfQor
ICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZEF1ZGlvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4g
bV9hdWRpb0RldmljZVVJREFsbG93ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBVc2VyTWVkaWFSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UHJvbWlzZSYmKTsK
QEAgLTk1LDEyICs5MiwxMSBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gbV92aWRl
b0RldmljZVVJRHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hdWRpb0RldmljZVVJRHM7Ci0gICAg
Ci0gICAgU3RyaW5nIG1fY2hvc2VuVmlkZW9EZXZpY2VVSUQ7Ci0gICAgU3RyaW5nIG1fY2hvc2Vu
QXVkaW9EZXZpY2VVSUQ7Ci0gICAgCi0gICAgVXNlck1lZGlhQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogCisgICAgU3RyaW5nIG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEOworICAgIFN0cmluZyBt
X2F1ZGlvRGV2aWNlVUlEQWxsb3dlZDsKKworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29u
dHJvbGxlcjsKICAgICBNZWRpYURldmljZXM6OlByb21pc2UgbV9wcm9taXNlOwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVk
aWFTb3VyY2UKIAogICAgIGlmIChtX2lkLmlzRW1wdHkoKSkKICAgICAgICAgbV9pZCA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKLSAgICBtX3BlcnNpc3RlbnRJZCA9IG1faWQ7CisgICAg
bV9wZXJzaXN0ZW50SUQgPSBtX2lkOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJl
c2V0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcm
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0
ZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRJZDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRQZXJzaXN0ZW50SWQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SWQpIHsgbV9wZXJzaXN0
ZW50SWQgPSBwZXJzaXN0ZW50SWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudElEOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBl
cnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCkgeyBtX3BlcnNpc3RlbnRJRCA9
IHBlcnNpc3RlbnRJRDsgfQogCiAgICAgZW51bSBUeXBlIHsgTm9uZSwgQXVkaW8sIFZpZGVvIH07
CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMTUsNyArMTE1
LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwotICAgIFN0cmlu
ZyBtX3BlcnNpc3RlbnRJZDsKKyAgICBTdHJpbmcgbV9wZXJzaXN0ZW50SUQ7CiAgICAgVHlwZSBt
X3R5cGU7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBib29sIG1fc3RvcHBlZDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJj
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpB
Vk1lZGlhQ2FwdHVyZVNvdXIKICAgICAsIG1faXNSdW5uaW5nKGZhbHNlKQogewogICAgIHNldE5h
bWUoZGV2aWNlLmxvY2FsaXplZE5hbWUpOworICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5p
cXVlSUQpOwogICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKHR5cGUgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEg
OiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTUtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1
ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMpOiBO
ZXcsIHJlbmFtZWQgZnJvbSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNW
aWRlby4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJ
RHMpOiBOZXcsIHJlbmFtZWQgZnJvbSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNl
TmFtZXNBdWRpby4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvd0Jl
c3QpOiBEZWxldGVkLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmlj
ZU5hbWVzVmlkZW8pOiBEZWxldGVkLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdERldmljZU5hbWVzQXVkaW8pOiBEZWxldGVkLgorICAgICAgICAoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdEZpcnN0VmlkZW9EZXZpY2VVSUQpOiBEZWxldGVkLgorICAgICAgICAoV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0QXVkaW9EZXZpY2VVSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVy
cy4KKyAgICAgICAgICBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNv
bnNpc3RlbnQgd2l0aCBldmVyeXdoZXJlIGVsc2UuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlz
c2lvbkRlY2lzaW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkp
OiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFtZXRlcnMuCisgICAgICAgICAgU3dpdGNoIGF1ZGlv
L3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggZXZlcnl3aGVyZSBl
bHNlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojph
bGxvdyk6IFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmdldERldmljZU5hbWVGb3JVSUQp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OnZpZGVvRGV2aWNlVUlEcyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OmF1ZGlvRGV2aWNlVUlEcyk6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmZpcnN0QXVkaW9EZXZpY2VVSUQpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpyZXF1aXJlc0F1
ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6cmVxdWlyZXNWaWRlbyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKTogR2V0IHJpZCBvZiB0aGUgYm9vbCBwYXJhbWV0
ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUg
Y29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6IEdldCByaWQgb2Yg
Ym9vbCBwYXJhbXMsIHRoZSBkZXZpY2UKKyAgICAgICAgICB2ZWN0b3JzIGhhdmUgdGhlIHNhbWUg
aW5mb3JtYXRpb24uCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IFN3aXRjaCBh
dWRpby92aWRlbworICAgICAgICAgIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdp
dGggZXZlcnl3aGVyZSBlbHNlLiBkZXZpY2VVSURWaWRlbyAtPiB2aWRlb0RldmljZVVJRCwKKyAg
ICAgICAgZGV2aWNlVUlEQXVkaW8gLT4gYXVkaW9EZXZpY2VVSUQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IFN3aXRj
aCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKwogMjAxNS0wOS0yNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSYW4gc29ydC1YY29kZS1wcm9qZWN0LWZpbGUuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCwxNCBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIo
KTsKIH0KIAotUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBib29sIHJlcXVpcmVzVmlkZW8sIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkZXZpY2VVSURzQXVkaW8pCitQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1
ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZp
Y2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQogewotICAgIFJl
ZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCwgcmVxdWly
ZXNBdWRpbywgcmVxdWlyZXNWaWRlbywgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VVSURzQXVkaW8p
OworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0g
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJ
RCwgYXVkaW9EZXZpY2VVSURzLCB2aWRlb0RldmljZVVJRHMpOwogICAgIG1fcGVuZGluZ1JlcXVl
c3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVzdC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Qu
cmVsZWFzZSgpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQsIGNvbnN0
IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VV
SUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7CiAgICAgaWYgKCFtX3BhZ2UuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHIKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFs
bG93ZWQsIHZpZGVvRGV2aWNlVUlELCBhdWRpb0RldmljZVVJRCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
VXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCBhdWRpb0Rl
dmljZVVJRCwgdmlkZW9EZXZpY2VVSUQpLCBtX3BhZ2UucGFnZUlEKCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oYWxsb3dlZCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTAgKzMzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVSZXF1ZXN0
cygpOwogCiAgICAgLy8gQ3JlYXRlIGEgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVz
ZXIuCi0gICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBQYXNzUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRl
b0RldmljZVVJRHMpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkgd2hlbiBhIGRlY2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVzZXIuCi0gICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90LCBib29sIGFsbG93
LCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNl
VUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWlu
dDY0X3QsIGJvb2wgYWxsb3csIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0
cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Pj4gbV9wZW5kaW5nUmVxdWVz
dHM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFu
YWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1
aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQorVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgdXNlck1lZGlhSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB2aWRlb0RldmljZVVJRHMpCiAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1fdXNl
ck1lZGlhSUQodXNlck1lZGlhSUQpCi0gICAgLCBtX3JlcXVpcmVzQXVkaW8ocmVxdWlyZXNBdWRp
bykKLSAgICAsIG1fcmVxdWlyZXNWaWRlbyhyZXF1aXJlc1ZpZGVvKQotICAgICwgbV92aWRlb0Rl
dmljZVVJRHMoZGV2aWNlVUlEc1ZpZGVvKQotICAgICwgbV9hdWRpb2RldmljZVVJRHMoZGV2aWNl
VUlEc0F1ZGlvKQorICAgICwgbV92aWRlb0RldmljZVVJRHModmlkZW9EZXZpY2VVSURzKQorICAg
ICwgbV9hdWRpb2RldmljZVVJRHMoYXVkaW9EZXZpY2VVSURzKQogewogfQogCi12b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmFsbG93KGNvbnN0IFN0cmluZyYgdmlkZW9EZXZp
Y2VVSUQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OmFsbG93KGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNv
bnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV9tYW5hZ2VyLmRpZFJlY2VpdmVV
c2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24obV91c2VyTWVkaWFJRCwgdHJ1ZSwgdmlkZW9EZXZp
Y2VVSUQsIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBtX21hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbihtX3VzZXJNZWRpYUlELCB0cnVlLCBhdWRpb0RldmljZVVJRCwg
dmlkZW9EZXZpY2VVSUQpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk6OmRlbnkoKQpAQCAtNTEsMTIgKzQ5LDUgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjppbgogICAgIG1fbWFuYWdlci5pbnZhbGlkYXRlUmVxdWVzdHMoKTsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1jb25zdCBTdHJpbmcmIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmdldERldmljZU5hbWVGb3JVSUQoY29uc3QgU3RyaW5nJiBVSUQsIFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJ
RChVSUQsIHR5cGUsIG51bGxwdHIpLT5sYWJlbCgpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAgY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUAogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29s
IHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRpbykK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBj
cmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KG1hbmFn
ZXIsIHVzZXJNZWRpYUlELCByZXF1aXJlc0F1ZGlvLCByZXF1aXJlc1ZpZGVvLCBkZXZpY2VVSURz
VmlkZW8sIGRldmljZVVJRHNBdWRpbykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIHZpZGVv
RGV2aWNlVUlEcywgYXVkaW9EZXZpY2VVSURzKSk7CiAgICAgfQogCiAgICAgdm9pZCBhbGxvdyhj
b25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlE
KTsKQEAgLTQxLDEzICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwog
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBjb25zdCBTdHJpbmcmIGdldERldmljZU5h
bWVGb3JVSUQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSk7Ci0jZW5kaWYKLQotICAgIGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWlyZXNBdWRpbzsgfQotICAgIGJvb2wgcmVxdWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWlyZXNWaWRlbzsgfQotICAgIAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRl
b0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRGV2aWNlVUlEczsgfQogICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVybiBtX2F1
ZGlvZGV2aWNlVUlEczsgfQogICAgIApAQCAtNTUsMTIgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcmIGZpcnN0QXVkaW9EZXZpY2VVSUQoKSBjb25zdCB7IHJldHVybiAhYXVkaW9E
ZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gYXVkaW9EZXZpY2VVSURzKCkuYXQoMCkgOiBlbXB0eVN0
cmluZygpOyB9CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmlj
ZVVJRHNBdWRpbyk7CisgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzKTsKIAogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5JiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV91c2VyTWVkaWFJRDsKLSAgICBi
b29sIG1fcmVxdWlyZXNBdWRpbzsKLSAgICBib29sIG1fcmVxdWlyZXNWaWRlbzsKICAgICBWZWN0
b3I8U3RyaW5nPiBtX3ZpZGVvRGV2aWNlVUlEczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2F1ZGlv
ZGV2aWNlVUlEczsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNzksMTMgKzUyNzksMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcgogICAgIHJlcXVlc3QtPmRlbnko
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
RnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmln
aW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlv
KQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKIAogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50
aWZpZXIob3JpZ2luSWRlbnRpZmllcikpOwotICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3JlYXRlUmVxdWVzdCh1c2VyTWVkaWFJRCwgYXVkaW8sIHZpZGVvLCBkZXZpY2VVSURzVmlk
ZW8sIGRldmljZVVJRHNBdWRpbyk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cmVhdGVSZXF1ZXN0KHVzZXJNZWRpYUlELCBhdWRpb0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlE
cyk7CiAKICAgICBpZiAoIW1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsICpvcmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgp
KSkKICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDcgKzExODIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAg
ICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9s
b2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAK
LSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNl
ck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29s
IGF1ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVv
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICB2b2lkIHJlcXVl
c3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURz
KTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJ
c1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICMgTWVkaWFT
dGVhbSBtZXNzYWdlcwotICAgIFJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWlu
dDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBWZWN0b3I8U3RyaW5nPiBkZXZpY2VVSURzVmlk
ZW8sIFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNBdWRpbykKKyAgICBSZXF1ZXN0VXNlck1lZGlh
UGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURz
LCBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJRHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZp
Y2F0aW9uIG1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZp
c2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE2ICszMyw5IEBA
IFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXQKIH0KIAogCi12b2lkIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvd0Jlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZikKK3ZvaWQgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlE
LCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+Zmlyc3RWaWRl
b0RldmljZVVJRCgpOwotICAgIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2UgPSB0b0ltcGwodXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5maXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAg
dG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+YWxsb3codmlkZW9EZXZpY2Us
IGF1ZGlvRGV2aWNlKTsKLX0KLQotdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxs
b3coV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZiwgV0tTdHJpbmdSZWYgdmlkZW9EZXZpY2VVSUQsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2
aWNlVUlEKQotewotICAgIHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmFs
bG93KHRvV1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlEKSwgdG9XVEZTdHJpbmcoYXVkaW9EZXZpY2VV
SUQpKTsKKyAgICB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh0
b1dURlN0cmluZyhhdWRpb0RldmljZVVJRCksIHRvV1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlEKSk7
CiB9CiAKIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZikKQEAgLTUw
LDM2ICs0MywyMiBAQCB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdLCiAg
ICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+ZGVueSgpOwogfQogCi1X
S0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikKK1dL
QXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAg
ICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011dGFibGVBcnJheUNyZWF0ZSgpOwogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChhdXRvJiBuYW1lIDogdG9JbXBsKHVzZXJN
ZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0RldmljZVVJRHMoKSkgewotICAgICAgICBTdHJpbmcg
ZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFt
ZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7
Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3Jl
YXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZGV2aWNlVUlE
IDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0RldmljZVVJRHMoKSkKKyAg
ICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUo
ZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1XS0Fy
cmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc0F1ZGlvKFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikKK1dLQXJy
YXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAgICAg
V0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011dGFibGVBcnJheUNyZWF0ZSgpOwogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChhdXRvJiBuYW1lIDogdG9JbXBsKHVzZXJNZWRp
YVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJRHMoKSkgewotICAgICAgICBTdHJpbmcgZGV2
aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZv
clVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7Ci0g
ICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRl
KGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZGV2aWNlVUlEIDog
dG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJRHMoKSkKKyAgICAg
ICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2
aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGFycmF5OwogfQotCi1XS1N0cmlu
Z1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCi17Ci0g
ICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlE
cygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRlbyh1
c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDogcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKLX0KLQotV0tTdHJpbmdSZWYg
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0QXVkaW9EZXZpY2VVSUQoV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKQotewotICAgIHJl
dHVybiAhdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJRHMoKS5p
c0VtcHR5KCkgPyByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0
SW5kZXgoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzQXVkaW8odXNlck1l
ZGlhUGVybWlzc2lvblJlZiksIDApKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDE1ICsyNywxMSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93QmVzdChXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RB
bGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBXS1N0cmluZ1JlZiB2aWRlb0Rl
dmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZpY2VVSUQpOworV0tfRVhQT1JUIHZvaWQgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiB2aWRlb0Rldmlj
ZVVJRCk7CiBXS19FWFBPUlQgdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKIAotV0tfRVhQT1JUIFdLQXJyYXlSZWYg
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8oV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci1XS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRpbyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKLSAgICAKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UmVmKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
Rmlyc3RBdWRpb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK1dL
X0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0Rldmlj
ZVVJRHMoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJh
eVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5MDIw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTAgKzcxLDEzIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXEKIAogICAgIHByaXYtPm1hZGVE
ZWNpc2lvbiA9IHRydWU7CiAKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlID0gcHJpdi0+
cmVxdWVzdC0+Zmlyc3RWaWRlb0RldmljZVVJRCgpOwotICAgIGNvbnN0IFN0cmluZyYgYXVkaW9E
ZXZpY2UgPSBwcml2LT5yZXF1ZXN0LT5maXJzdEF1ZGlvRGV2aWNlVUlEKCk7CisgICAgYXV0byB2
aWRlb0RldmljZVVJRHMgPSBwcml2LT5yZXF1ZXN0LT52aWRlb0RldmljZVVJRHMoKTsKKyAgICBh
dXRvIGF1ZGlvRGV2aWNlVUlEcyA9IHByaXYtPnJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpOwor
CisgICAgYXV0byB2aWRlb0RldmljZSA9ICF2aWRlb0RldmljZVVJRHMuaXNFbXB0eSgpID8gdmlk
ZW9EZXZpY2VVSURzWzBdIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIGF1ZGlvRGV2aWNlID0g
IWF1ZGlvRGV2aWNlVUlEcy5pc0VtcHR5KCkgPyBhdWRpb0RldmljZVVJRHNbMF0gOiBlbXB0eVN0
cmluZygpOwogICAgIAotICAgIHByaXYtPnJlcXVlc3QtPmFsbG93KHZpZGVvRGV2aWNlLCBhdWRp
b0RldmljZSk7CisgICAgcHJpdi0+cmVxdWVzdC0+YWxsb3coYXVkaW9EZXZpY2UsIHZpZGVvRGV2
aWNlKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZW55KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZp
c2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsMyArMzEyLDI2IEBACiAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50c3RyZWFtLnhwYyIpCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGxheWJhY2tzZXNzaW9u
LnhwYyIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGlj
a2VyLnhwYyIpKQorCisKKzs7IENhbWVyYSBhY2Nlc3MKKyhhbGxvdyBkZXZpY2UtY2FtZXJhKQor
KGFsbG93IGZpbGUtcmVhZCoKKyAgICAobGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29t
LmFwcGxlLmNvcmVtZWRpYSIpCisgICAgKGhvbWUtbGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5j
ZXMvY29tLmFwcGxlLmNvcmVtZWRpYSIpKQorKGFsbG93IG1hY2gtbG9va3VwIChleHRlbnNpb24g
ImNvbS5hcHBsZS5hcHAtc2FuZGJveC5tYWNoIikpCisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAo
Z2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLkFwcGxlQ2FtZXJhQXNzaXN0YW50IikKKyAgICA7
OyBBcHBsZSBEQUwgYXNzaXN0YW50cworICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8u
VkRDQXNzaXN0YW50IikKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLkFWQ0Fzc2lz
dGFudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY21pby5JSURDVmlkZW9Bc3Npc3Rh
bnQiKQorICAgIDs7IFF1aWNrVGltZUlJRENEaWdpdGl6ZXIgYXNzaXN0YW50CisgICAgKGdsb2Jh
bC1uYW1lICJjb20uYXBwbGUuSUlEQ0Fzc2lzdGFudCIpKQorKGFsbG93IGlva2l0LW9wZW4KKyAg
ICA7OyBRdWlja1RpbWVVU0JWRENEaWdpdGl6ZXIKKyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xh
c3MgIklPVVNCRGV2aWNlVXNlckNsaWVudFYyIikKKyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xh
c3MgIklPVVNCSW50ZXJmYWNlVXNlckNsaWVudFYyIikpCisKKzs7IE1pY3JvcGhvbmUKKyhhbGxv
dyBkZXZpY2UtbWljcm9waG9uZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4gPSByZXF1ZXN0LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCksIHJlcXVlc3QucmVxdWlyZXNBdWRpbygpLCByZXF1ZXN0LnJlcXVpcmVz
VmlkZW8oKSwgcmVxdWVzdC52aWRlb0RldmljZVVJRHMoKSwgcmVxdWVzdC5hdWRpb0RldmljZVVJ
RHMoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgp
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlVUlEcygp
LCByZXF1ZXN0LnZpZGVvRGV2aWNlVUlEcygpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjoKICAgICBtX2lkVG9SZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwogfQogCi12b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBl
cm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3Zv
aWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlh
UGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25z
dCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQog
ewogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gbV9pZFRvUmVxdWVzdE1h
cC50YWtlKHJlcXVlc3RJRCk7CiAgICAgaWYgKCFyZXF1ZXN0KQpAQCAtODIsNyArODIsNyBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgbV9yZXF1ZXN0VG9J
RE1hcC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBpZiAoYWxsb3dlZCkKLSAgICAgICAgcmVxdWVz
dC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChkZXZpY2VVSURWaWRlbywgZGV2aWNlVUlEQXVkaW8p
OworICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGF1ZGlvRGV2aWNlVUlE
LCB2aWRlb0RldmljZVVJRCk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFB
Y2Nlc3NEZW5pZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFJl
cXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsUmVxdWVz
dChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2Vy
TWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dl
ZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURB
dWRpbyk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVp
bnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZp
Y2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpOwogCiBwcml2YXRlOgogICAgIFdl
YlBhZ2UmIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxMiw5ICszMzEy
LDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybQogfQogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBl
cm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25z
dCBTdHJpbmcmIGRldmljZVVJRFZpZGVvLCBjb25zdCBTdHJpbmcmIGRldmljZVVJREF1ZGlvKQor
dm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VV
SUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQpCiB7Ci0gICAgbV91c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lv
bih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgZGV2aWNlVUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsK
KyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5kaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCBhdWRpb0RldmljZVVJ
RCwgdmlkZW9EZXZpY2VVSUQpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEwNyw3ICsxMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOb3RpZmljYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dl
ZCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBk
ZXZpY2VVSURBdWRpbyk7CisgICAgV0tfRVhQT1JUIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBl
cm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25z
dCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkwMjA2KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtCi0g
ICAgRGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVk
aWFJRCwgYm9vbCBhbGxvd2VkLCBTdHJpbmcgZGV2aWNlVUlEVmlkZW8sIFN0cmluZyBkZXZpY2VV
SURBdWRpbykKKyAgICBEaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2
NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3Ry
aW5nIHZpZGVvRGV2aWNlVUlEKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDktMjUgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNl
ciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhv
cnRvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToK
KyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsUmVxdWVzdCk6IFB1dCBVc2VyTWVk
aWFSZXF1ZXN0c01hcCBpbiBhIGxvY2FsIGluc3RlYWQgb3IgY2FsbGluZworICAgICAgICAgIHVz
ZXJNZWRpYVJlcXVlc3RzTWFwKCkgdGhyZWUgdGltZXMuCisgICAgICAgICgtW1dlYlVzZXJNZWRp
YVBvbGljeUxpc3RlbmVyIGFsbG93XSk6IEdldCByaWQgb2YgdW5uZWVkZWQgbG9jYWwgdmFyaWFi
bGVzLgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBhbGxvd0RldmljZVdp
dGhWaWRlb1VJRF0pOiBEZWxldGVkLCB1bnVzZWQuCisKIDIwMTUtMDktMjIgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgUXVpY2tMb29rIG9uIHR2T1MK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNiBAQCBAaW50ZXJmYWNlIFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogCiB9
CiAtIChpZClpbml0V2l0aFVzZXJNZWRpYVJlcXVlc3Q6KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4pcmVxdWVzdDsKIC0gKHZvaWQpY2FuY2VsUmVxdWVzdDsKLS0gKHZvaWQpYWxsb3dEZXZp
Y2VXaXRoVmlkZW9VSUQ6KGNvbnN0IFN0cmluZyYpdmlkZW9VSUQgYW5kQXVkaW9VSUQ6KGNvbnN0
IFN0cmluZyYpYXVkaW9VSUQ7CiAtICh2b2lkKWRlbnk7CiBAZW5kCiAKQEAgLTExNCwxMiArMTEz
LDEzIEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2kKIAogdm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0c01hcDo6aXRlcmF0b3IgaXQgPSB1c2VyTWVkaWFS
ZXF1ZXN0c01hcCgpLmZpbmQoJnJlcXVlc3QpOwotICAgIGlmIChpdCA9PSB1c2VyTWVkaWFSZXF1
ZXN0c01hcCgpLmVuZCgpKQorICAgIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9
IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCk7CisgICAgVXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0ZXJh
dG9yIGl0ID0gcmVxdWVzdHNNYXAuZmluZCgmcmVxdWVzdCk7CisgICAgaWYgKGl0ID09IHJlcXVl
c3RzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBbaXQtPnZhbHVlIGNhbmNlbFJl
cXVlc3RdOwotICAgIHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkucmVtb3ZlKGl0KTsKKyAgICByZXF1
ZXN0c01hcC5yZW1vdmUoaXQpOwogfQogCiAKQEAgLTE1MywyMiArMTUzLDggQEAgLSAodm9pZClh
bGxvdwogICAgIGlmICghX3JlcXVlc3QpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBjb25z
dCBTdHJpbmcmIHZpZGVvVUlEID0gX3JlcXVlc3QtPmZpcnN0VmlkZW9EZXZpY2VVSUQoKTsKLSAg
ICBjb25zdCBTdHJpbmcmIGF1ZGlvVUlEID0gX3JlcXVlc3QtPmZpcnN0QXVkaW9EZXZpY2VVSUQo
KTsKLSAgICAKLSAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwg
YXVkaW9VSUQpOwotICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKLSNl
bmRpZgotfQorICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKF9yZXF1ZXN0LT5h
bGxvd2VkQXVkaW9EZXZpY2VVSUQoKSwgX3JlcXVlc3QtPmFsbG93ZWRWaWRlb0RldmljZVVJRCgp
KTsKIAotLSAodm9pZClhbGxvd0RldmljZVdpdGhWaWRlb1VJRDooY29uc3QgU3RyaW5nJil2aWRl
b1VJRCBhbmRBdWRpb1VJRDooY29uc3QgU3RyaW5nJilhdWRpb1VJRAotewotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgaWYgKCFfcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NHcmFudGVkKHZpZGVvVUlELCBhdWRpb1VJRCk7
Ci0gICAgCiAgICAgUmVtb3ZlUmVxdWVzdEZyb21NYXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlm
CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTAyMTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNS0wOS0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCB1c2VyIG1lZGlhIHJlcXVlc3QgaW50ZXJuYWwg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUp
OiBVcGRhdGUgCisgICAgICAgICAgZm9yIEFQSSBjaGFuZ2VzLgorCiAyMDE1LTA5LTI0ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHJ1bm5pbmcg
dW5pdCB0ZXN0cyBvbiBpT1MgU2ltdWxhdG9yIHRlc3QgYm90CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MTksOSArMTYxOSwyNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JVc2Vy
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RzKSB7Ci0gICAgICAgIGlmIChtX2lzVXNlck1lZGlhUGVybWlzc2lv
bkFsbG93ZWQpIHsKLSAgICAgICAgICAgIGlmIChXS0FycmF5R2V0U2l6ZShXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRlbyhyZXF1ZXN0LmdldCgpKSkgfHwgV0tBcnJh
eUdldFNpemUoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzQXVkaW8ocmVx
dWVzdC5nZXQoKSkpKQotICAgICAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhyZXF1ZXN0LmdldCgpLCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RW
aWRlb0RldmljZVVJRChyZXF1ZXN0LmdldCgpKSwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dEZpcnN0QXVkaW9EZXZpY2VVSUQocmVxdWVzdC5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiBhdWRpb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0QXVkaW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOworICAgICAgICBXS1JldGFpblB0cjxX
S0FycmF5UmVmPiB2aWRlb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
VmlkZW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkpOworCisgICAgICAgIGlmIChtX2lzVXNlck1l
ZGlhUGVybWlzc2lvbkFsbG93ZWQgfHwgKCFXS0FycmF5R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMu
Z2V0KCkpICYmICFXS0FycmF5R2V0U2l6ZShhdWRpb0RldmljZVVJRHMuZ2V0KCkpKSkgeworICAg
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHZpZGVvRGV2aWNlVUlEOworICAgICAg
ICAgICAgaWYgKFdLQXJyYXlHZXRTaXplKHZpZGVvRGV2aWNlVUlEcy5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgdmlkZW9EZXZpY2VVSUQgPSByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihX
S0FycmF5R2V0SXRlbUF0SW5kZXgodmlkZW9EZXZpY2VVSURzLmdldCgpLCAwKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiIik7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBhdWRpb0RldmljZVVJRDsKKyAgICAgICAgICAgIGlmIChXS0FycmF5R2V0U2l6ZShhdWRp
b0RldmljZVVJRHMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlVUlEID0gcmVp
bnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGF1ZGlvRGV2
aWNlVUlEcy5nZXQoKSwgMCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF1
ZGlvRGV2aWNlVUlEID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOworCisgICAg
ICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdC5nZXQoKSwg
dmlkZW9EZXZpY2VVSUQuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELmdldCgpKTsKKwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KHJlcXVl
c3QuZ2V0KCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261935</attachid>
            <date>2015-09-25 13:37:54 -0700</date>
            <delta_ts>2015-09-25 14:54:19 -0700</delta_ts>
            <desc>Another try at updating the GTK build for the changes.</desc>
            <filename>user_request_api_patch_6.txt</filename>
            <type>text/plain</type>
            <size>42067</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZCk6IFVzZSB0
cmFjayBwZXJzaXN0ZW50IElEIHRvIGNyZWF0ZSB2ZWN0b3JzCisgICAgICAgICAgYXMgdGhhdCBp
cyB3aGF0IHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRvIG1hcCB0byBhIGNhcHR1cmUgZGV2aWNl
LgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3Jh
bnRlZCk6IG1fY2hvc2VuWFhEZXZpY2VVSUQgLT4gbV9YWERldmljZVVJREFsbG93ZWQuCisgICAg
ICAgICAgVXNlIHRoZSBkZXZpY2UgSURzIHRvIGNyZWF0ZSB0aGUgTWVkaWFTdHJlYW0uIFN3aXRj
aCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOiBEb24ndCBhc3N1bWUgY29uc3RyYWludHMgYXJl
IHZhbGlkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9EZXZpY2VVSURzKToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvRGV2aWNlVUlEcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphbGxvd2VkVmlkZW9EZXZpY2VVSUQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZEF1ZGlvRGV2aWNl
VUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVzQXVkaW8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6cmVxdWlyZXNW
aWRlbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmaXJz
dFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmZpcnN0QXVkaW9EZXZpY2VVSUQpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKTogQ2FsbCBz
ZXRQZXJzaXN0ZW50SWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5v
aEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0eXBvIGVycm9ycyBp
biBhIGNvbW1lbnQgKCJwYXNzZWQiIC0+ICJQYXNzZWQiLCAiT3Zlcndpc2UiIC0+ICJPdGhlcndp
c2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsOSArMTI1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQog
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3MsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcykKIHsKICAgICBmb3IgKGF1
dG8mIGF1ZGlvVHJhY2sgOiBhdWRpb1RyYWNrcykKLSAgICAgICAgbV9hdWRpb0RldmljZVVJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPmlkKCkpOworICAgICAgICBtX2F1ZGlvRGV2aWNlVUlEcy5hcHBl
bmQoYXVkaW9UcmFjay0+cGVyc2lzdGVudElEKCkpOwogICAgIGZvciAoYXV0byYgdmlkZW9UcmFj
ayA6IHZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9U
cmFjay0+aWQoKSk7CisgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNr
LT5wZXJzaXN0ZW50SUQoKSk7CisKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CiAg
ICAgICAgIC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9y
IGFjY2VzcyB0byBtZWRpYS4KQEAgLTEzNiwxNCArMTM3LDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6Y29uc3RyYWludHNWYWxpZGEKICAgICB9KTsKIH0KIAotdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBtX2Nob3NlblZpZGVvRGV2aWNlVUlEID0g
dmlkZW9EZXZpY2VVSUQ7Ci0gICAgbV9jaG9zZW5BdWRpb0RldmljZVVJRCA9IGF1ZGlvRGV2aWNl
VUlEOworICAgIG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEID0gdmlkZW9EZXZpY2VVSUQ7CisgICAg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQgPSBhdWRpb0RldmljZVVJRDsKKwogICAgIFJlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
LCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKICAgICAgICAgLy8gMyAtIHRoZSB1
c2VyIGdyYW50ZWQgYWNjZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJl
YW0gZGVzY3JpcHRvcnMuCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIHByb3RlY3RlZFRo
aXMtPm1fYXVkaW9Db25zdHJhaW50cywgcHJvdGVjdGVkVGhpcy0+bV92aWRlb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRl
TWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKTsKICAgICB9KTsKIH0KIApAQCAtMTY0LDEwICsxNjYsMTQgQEAgdm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUAogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVk
aWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJl
YW0tPmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2F1ZGlvQ29uc3RyYWludHMpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZp
ZGVvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29u
c3RyYWludHMpOworICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKKyAgICAgICAgZm9yIChh
dXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkKKyAgICAgICAgICAgIHRyYWNr
LT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOworICAgIH0KKyAgICBpZiAo
bV92aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldFZpZGVvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJl
YW0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxNyArNjUsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIAotICAgIGJvb2wgcmVxdWlyZXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdHJhaW50czsgfQotICAgIGJvb2wgcmVx
dWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db25zdHJhaW50czsgfQotICAgIAot
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRGV2aWNlVUlEczsgfQorICAgIGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzLnNpemUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNWaWRl
bygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzLnNpemUoKTsgfQorCiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVk
aW9EZXZpY2VVSURzOyB9Ci0gICAgCi0gICAgY29uc3QgU3RyaW5nJiBmaXJzdFZpZGVvRGV2aWNl
VUlEKCkgY29uc3QgeyByZXR1cm4gIXZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHZpZGVv
RGV2aWNlVUlEcygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0cmluZyYg
Zmlyc3RBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5p
c0VtcHR5KCkgPyBhdWRpb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0RldmljZVVJRHM7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZEF1ZGlvRGV2
aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJREFsbG93ZWQ7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFsbG93ZWRWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dlZFZpZGVvRGV2aWNlVUlEOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlhUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CkBAIC05
NSwxMiArOTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZp
Y2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwotICAgIAotICAg
IFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2Nob3NlbkF1ZGlv
RGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsK
IAorICAgIFN0cmluZyBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsKKyAgICBTdHJpbmcgbV9hdWRp
b0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlCiAKICAgICBpZiAobV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIG1faWQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgbV9wZXJzaXN0ZW50SWQgPSBtX2lkOworICAgIG1fcGVy
c2lzdGVudElEID0gbV9pZDsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElk
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGVyc2lzdGVudElkKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKSB7IG1fcGVyc2lzdGVudElk
ID0gcGVyc2lzdGVudElkOyB9CisgICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJzaXN0
ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQgPSBwZXJz
aXN0ZW50SUQ7IH0KIAogICAgIGVudW0gVHlwZSB7IE5vbmUsIEF1ZGlvLCBWaWRlbyB9OwogICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTE1LDcgKzExNSw3IEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsKLSAgICBTdHJpbmcgbV9w
ZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBl
OwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX3N0b3BwZWQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRp
YUNhcHR1cmVTb3VyCiAgICAgLCBtX2lzUnVubmluZyhmYWxzZSkKIHsKICAgICBzZXROYW1lKGRl
dmljZS5sb2NhbGl6ZWROYW1lKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlE
KTsKICAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZSh0eXBlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvID8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhIDogUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTA5LTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIgbWVkaWEgcmVxdWVzdCBp
bnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKTogTmV3LCBy
ZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8u
CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKTog
TmV3LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVz
QXVkaW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1l
c1ZpZGVvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZXZpY2VOYW1lc0F1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwOgorICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6
IFVwZGF0ZSBmb3IgVXNlck1lZGlhUmVxdWVzdCBBUEkgY2hhbmdlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZVJlcXVlc3QpOiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFtZXRlcnMuCisgICAgICAgICAgU3dp
dGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggZXZl
cnl3aGVyZSBlbHNlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KTogR2V0IHJpZCBvZiB0aGUg
Ym9vbCBwYXJhbWV0ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIg
b3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3cpOiBTd2l0Y2ggYXVk
aW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpnZXREZXZpY2VOYW1lRm9yVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp2aWRlb0Rldmlj
ZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphdWRpb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cmVxdWlyZXNBdWRpbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnJlcXVpcmVz
VmlkZW8pOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZSk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVycy4KKyAgICAgICAgICBT
d2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBl
dmVyeXdoZXJlIGVsc2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOiBHZXQgcmlkIG9mIGJvb2wgcGFyYW1zLCB0aGUg
ZGV2aWNlCisgICAgICAgICAgdmVjdG9ycyBoYXZlIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8KKyAgICAg
ICAgICBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxz
ZS4gZGV2aWNlVUlEVmlkZW8gLT4gdmlkZW9EZXZpY2VVSUQsCisgICAgICAgIGRldmljZVVJREF1
ZGlvIC0+IGF1ZGlvRGV2aWNlVUlELgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFy
YW1ldGVyIG9yZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMTUtMDktMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmFuIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcgogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlv
KQorUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIHJlcXVpcmVzQXVkaW8sIHJlcXVpcmVz
VmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlE
cywgdmlkZW9EZXZpY2VVSURzKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlh
SUQsIHJlcXVlc3QuZ2V0KCkpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlEKQogewogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCB2aWRlb0Rldmlj
ZVVJRCwgYXVkaW9EZXZpY2VVSUQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFsbG93
ZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkocmV2
aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUmVxdWVzdCh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRp
byk7CisgICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVk
aW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKIAog
ICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5IHdoZW4gYSBk
ZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90LCBib29sIGFsbG93
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
VUlEKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1JlcXVlc3RzOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxOSArMjYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRl
dmljZVVJRHNBdWRpbykKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURz
KQogICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRp
YUlEKQotICAgICwgbV9yZXF1aXJlc0F1ZGlvKHJlcXVpcmVzQXVkaW8pCi0gICAgLCBtX3JlcXVp
cmVzVmlkZW8ocmVxdWlyZXNWaWRlbykKLSAgICAsIG1fdmlkZW9EZXZpY2VVSURzKGRldmljZVVJ
RHNWaWRlbykKLSAgICAsIG1fYXVkaW9kZXZpY2VVSURzKGRldmljZVVJRHNBdWRpbykKKyAgICAs
IG1fdmlkZW9EZXZpY2VVSURzKHZpZGVvRGV2aWNlVUlEcykKKyAgICAsIG1fYXVkaW9kZXZpY2VV
SURzKGF1ZGlvRGV2aWNlVUlEcykKIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjphbGxvdyhjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJp
bmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlVUlEKQogewotICAgIG1fbWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lv
bkRlY2lzaW9uKG1fdXNlck1lZGlhSUQsIHRydWUsIHZpZGVvRGV2aWNlVUlELCBhdWRpb0Rldmlj
ZVVJRCk7CisgICAgbV9tYW5hZ2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24obV91c2VyTWVkaWFJRCwgdHJ1ZSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZW55KCkKQEAgLTUx
LDEyICs0OSw1IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW4KICAg
ICBtX21hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotY29uc3QgU3RyaW5nJiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpn
ZXREZXZpY2VOYW1lRm9yVUlEKGNvbnN0IFN0cmluZyYgVUlELCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNvdXJjZVdpdGhVSUQoVUlELCB0eXBlLCBudWxs
cHRyKS0+bGFiZWwoKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclAKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBi
b29sIHJlcXVpcmVzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGF1ZGlvRGV2aWNlVUlEcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwg
cmVxdWlyZXNBdWRpbywgcmVxdWlyZXNWaWRlbywgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VVSURz
QXVkaW8pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCB2aWRlb0RldmljZVVJRHMsIGF1ZGlv
RGV2aWNlVUlEcykpOwogICAgIH0KIAogICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5nJiB2aWRl
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CkBAIC00MSwxMyArNDEs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0gICAgY29uc3QgU3RyaW5nJiBnZXREZXZpY2VOYW1lRm9yVUlEKGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpOwotI2VuZGlmCi0KLSAg
ICBib29sIHJlcXVpcmVzQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzQXVkaW87IH0K
LSAgICBib29sIHJlcXVpcmVzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzVmlkZW87
IH0KLSAgICAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29u
c3QgeyByZXR1cm4gbV92aWRlb0RldmljZVVJRHM7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb2RldmljZVVJRHM7IH0K
ICAgICAKQEAgLTU1LDEyICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBmaXJz
dEF1ZGlvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gIWF1ZGlvRGV2aWNlVUlEcygpLmlzRW1w
dHkoKSA/IGF1ZGlvRGV2aWNlVUlEcygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQogCiBwcml2
YXRlOgotICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1
aXJlc0F1ZGlvLCBib29sIHJlcXVpcmVzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZp
Y2VVSURzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pOworICAg
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZpZGVvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlE
cyk7CiAKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgbV9tYW5h
Z2VyOwogICAgIHVpbnQ2NF90IG1fdXNlck1lZGlhSUQ7Ci0gICAgYm9vbCBtX3JlcXVpcmVzQXVk
aW87Ci0gICAgYm9vbCBtX3JlcXVpcmVzVmlkZW87CiAgICAgVmVjdG9yPFN0cmluZz4gbV92aWRl
b0RldmljZVVJRHM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hdWRpb2RldmljZVVJRHM7CiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Mjc5LDEzICs1Mjc5LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0R2VvbG9jYXRpb25QZXIKICAgICByZXF1ZXN0LT5kZW55KCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgYm9v
bCBhdWRpbywgYm9vbCB2aWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRl
bywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRpbykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRp
YUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVv
RGV2aWNlVUlEcykKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2Vi
RnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICBSZWZQdHI8
QVBJOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50
aWZpZXIpKTsKLSAgICBSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVx
dWVzdCA9IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNyZWF0ZVJlcXVlc3Qo
dXNlck1lZGlhSUQsIGF1ZGlvLCB2aWRlbywgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VVSURzQXVk
aW8pOworICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0
ID0gbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdCh1c2Vy
TWVkaWFJRCwgYXVkaW9EZXZpY2VVSURzLCB2aWRlb0RldmljZVVJRHMpOwogCiAgICAgaWYgKCFt
X3VpQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgqdGhp
cywgKmZyYW1lLCAqb3JpZ2luLmdldCgpLCAqcmVxdWVzdC5nZXQoKSkpCiAgICAgICAgIHJlcXVl
c3QtPmRlbnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNO
ZWVkZWQsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5Pik7CiAgICAgdm9pZCByZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCByZXF1ZXN0
VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgYm9vbCBhdWRpbywgYm9vbCB2aWRl
bywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRldmljZVVJRHNBdWRpbyk7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhUGVybWlz
c2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlE
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcyk7CiAKICAgICB2b2lkIHJ1
bk1vZGFsKCk7CiAgICAgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkwMjA2KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAjIE1lZGlhU3RlYW0gbWVzc2FnZXMKLSAg
ICBSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgYm9vbCBhdWRpbywg
Ym9vbCB2aWRlbywgVmVjdG9yPFN0cmluZz4gZGV2aWNlVUlEc1ZpZGVvLCBWZWN0b3I8U3RyaW5n
PiBkZXZpY2VVSURzQXVkaW8pCisgICAgUmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFt
ZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklk
ZW50aWZpZXIsIFZlY3RvcjxTdHJpbmc+IGF1ZGlvRGV2aWNlVUlEcywgVmVjdG9yPFN0cmluZz4g
dmlkZW9EZXZpY2VVSURzKQogI2VuZGlmCiAKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsOSBAQCBXS1R5cGVJRCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0R2V0CiB9CiAKIAotdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0QWxsb3dCZXN0KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpCit2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UmVmLCBXS1N0cmluZ1JlZiBhdWRpb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgdmlk
ZW9EZXZpY2VVSUQpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZSA9IHRvSW1wbCh1
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmZpcnN0VmlkZW9EZXZpY2VVSUQoKTsKLSAg
ICBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmKS0+Zmlyc3RBdWRpb0RldmljZVVJRCgpOwotICAgIHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiktPmFsbG93KHZpZGVvRGV2aWNlLCBhdWRpb0RldmljZSk7Ci19
Ci0KLXZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5n
UmVmIHZpZGVvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiBhdWRpb0RldmljZVVJRCkKLXsKLSAgICB0
b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh0b1dURlN0cmluZyh2
aWRlb0RldmljZVVJRCksIHRvV1RGU3RyaW5nKGF1ZGlvRGV2aWNlVUlEKSk7CisgICAgdG9JbXBs
KHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKS0+YWxsb3codG9XVEZTdHJpbmcoYXVkaW9E
ZXZpY2VVSUQpLCB0b1dURlN0cmluZyh2aWRlb0RldmljZVVJRCkpOwogfQogCiB2b2lkIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpCkBAIC01MCwzNiArNDMsMjIgQEAgdm9p
ZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXSwogICAgIHRvSW1wbCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmRlbnkoKTsKIH0KIAotV0tBcnJheVJlZiBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRlbyhXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCitXS0FycmF5UmVmIFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKQogewogICAgIFdLTXV0YWJsZUFycmF5
UmVmIGFycmF5ID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIGZvciAoYXV0byYgbmFtZSA6IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVm
KS0+dmlkZW9EZXZpY2VVSURzKCkpIHsKLSAgICAgICAgU3RyaW5nIGRldmljZU5hbWUgPSB0b0lt
cGwodXNlck1lZGlhUGVybWlzc2lvblJlZiktPmdldERldmljZU5hbWVGb3JVSUQobmFtZSwgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pOwotICAgICAgICBXS0FycmF5
QXBwZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXZpY2VOYW1lKS5w
dHIoKSkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGRldmljZVVJRCA6IHRvSW1wbCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVmKS0+dmlkZW9EZXZpY2VVSURzKCkpCisgICAgICAgIFdLQXJyYXlBcHBl
bmRJdGVtKGFycmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZVVJRCkucHRyKCkp
KTsKICNlbmRpZgogICAgIHJldHVybiBhcnJheTsKIH0KIAotV0tBcnJheVJlZiBXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRpbyhXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmIHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpCitXS0FycmF5UmVmIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RBdWRpb0RldmljZVVJRHMoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKQogewogICAgIFdLTXV0YWJsZUFycmF5UmVm
IGFycmF5ID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIGZvciAoYXV0byYgbmFtZSA6IHRvSW1wbCh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKS0+
YXVkaW9EZXZpY2VVSURzKCkpIHsKLSAgICAgICAgU3RyaW5nIGRldmljZU5hbWUgPSB0b0ltcGwo
dXNlck1lZGlhUGVybWlzc2lvblJlZiktPmdldERldmljZU5hbWVGb3JVSUQobmFtZSwgV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pOwotICAgICAgICBXS0FycmF5QXBw
ZW5kSXRlbShhcnJheSwgdG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXZpY2VOYW1lKS5wdHIo
KSkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGRldmljZVVJRCA6IHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVmKS0+YXVkaW9EZXZpY2VVSURzKCkpCisgICAgICAgIFdLQXJyYXlBcHBlbmRJ
dGVtKGFycmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZVVJRCkucHRyKCkpKTsK
ICNlbmRpZgogICAgIHJldHVybiBhcnJheTsKIH0KLQotV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdEZpcnN0VmlkZW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKQotewotICAgIHJldHVybiAhdG9JbXBs
KHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyBy
ZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8odXNlck1lZGlhUGVybWlzc2lv
blJlZiksIDApKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCIiKSk7Ci19Ci0KLVdLU3RyaW5nUmVmIFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlZikKLXsKLSAgICByZXR1cm4gIXRvSW1wbCh1c2Vy
TWVkaWFQZXJtaXNzaW9uUmVmKS0+YXVkaW9EZXZpY2VVSURzKCkuaXNFbXB0eSgpID8gcmVpbnRl
cnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc0F1ZGlvKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYp
LCAwKSkgOiByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiIikpOwotfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCShyZXZp
c2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTEgQEAg
ZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RBbGxvd0Jlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci1XS19F
WFBPUlQgdm9pZCBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZiwgV0tTdHJpbmdSZWYgdmlkZW9EZXZpY2VVSUQsIFdLU3RyaW5n
UmVmIGF1ZGlvRGV2aWNlVUlEKTsKK1dLX0VYUE9SVCB2b2lkIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBXS1N0cmluZ1Jl
ZiBhdWRpb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgdmlkZW9EZXZpY2VVSUQpOwogV0tfRVhQT1JU
IHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFJlZik7CiAKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYpOwotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERl
dmljZU5hbWVzQXVkaW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci0gICAgCi1X
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0Vmlk
ZW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci1XS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0QXVkaW9EZXZpY2VV
SUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJl
ZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEwICs3MSwxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxCiAKICAgICBwcml2LT5tYWRlRGVjaXNpb24gPSB0cnVlOwog
Ci0gICAgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZSA9IHByaXYtPnJlcXVlc3QtPmZpcnN0Vmlk
ZW9EZXZpY2VVSUQoKTsKLSAgICBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlID0gcHJpdi0+cmVx
dWVzdC0+Zmlyc3RBdWRpb0RldmljZVVJRCgpOworICAgIGF1dG8gdmlkZW9EZXZpY2VVSURzID0g
cHJpdi0+cmVxdWVzdC0+dmlkZW9EZXZpY2VVSURzKCk7CisgICAgYXV0byBhdWRpb0RldmljZVVJ
RHMgPSBwcml2LT5yZXF1ZXN0LT5hdWRpb0RldmljZVVJRHMoKTsKKworICAgIGF1dG8gdmlkZW9E
ZXZpY2UgPSAhdmlkZW9EZXZpY2VVSURzLmlzRW1wdHkoKSA/IHZpZGVvRGV2aWNlVUlEc1swXSA6
IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byBhdWRpb0RldmljZSA9ICFhdWRpb0RldmljZVVJRHMu
aXNFbXB0eSgpID8gYXVkaW9EZXZpY2VVSURzWzBdIDogZW1wdHlTdHJpbmcoKTsKICAgICAKLSAg
ICBwcml2LT5yZXF1ZXN0LT5hbGxvdyh2aWRlb0RldmljZSwgYXVkaW9EZXZpY2UpOworICAgIHBy
aXYtPnJlcXVlc3QtPmFsbG93KGF1ZGlvRGV2aWNlLCB2aWRlb0RldmljZSk7CiB9CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXZWJLaXRQZXJtaXNz
aW9uUmVxdWVzdCogcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29t
LmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzEyLDMgKzMxMiwyNiBAQAogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLmNvcmVtZWRpYS5lbmRwb2ludHN0cmVhbS54cGMiKQogICAgIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vzc2lvbi54cGMiKQogICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBpY2tlci54cGMiKSkKKworCis7
OyBDYW1lcmEgYWNjZXNzCisoYWxsb3cgZGV2aWNlLWNhbWVyYSkKKyhhbGxvdyBmaWxlLXJlYWQq
CisgICAgKGxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5jb3JlbWVkaWEi
KQorICAgIChob21lLWxpdGVyYWwgIi9MaWJyYXJ5L1ByZWZlcmVuY2VzL2NvbS5hcHBsZS5jb3Jl
bWVkaWEiKSkKKyhhbGxvdyBtYWNoLWxvb2t1cCAoZXh0ZW5zaW9uICJjb20uYXBwbGUuYXBwLXNh
bmRib3gubWFjaCIpKQorKGFsbG93IG1hY2gtbG9va3VwCisgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY21pby5BcHBsZUNhbWVyYUFzc2lzdGFudCIpCisgICAgOzsgQXBwbGUgREFMIGFzc2lz
dGFudHMKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLlZEQ0Fzc2lzdGFudCIpCisg
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY21pby5BVkNBc3Npc3RhbnQiKQorICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uSUlEQ1ZpZGVvQXNzaXN0YW50IikKKyAgICA7OyBRdWlj
a1RpbWVJSURDRGlnaXRpemVyIGFzc2lzdGFudAorICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxl
LklJRENBc3Npc3RhbnQiKSkKKyhhbGxvdyBpb2tpdC1vcGVuCisgICAgOzsgUXVpY2tUaW1lVVNC
VkRDRGlnaXRpemVyCisgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT1VTQkRldmljZVVz
ZXJDbGllbnRWMiIpCisgICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzICJJT1VTQkludGVyZmFj
ZVVzZXJDbGllbnRWMiIpKQorCis7OyBNaWNyb3Bob25lCisoYWxsb3cgZGV2aWNlLW1pY3JvcGhv
bmUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OgogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gcmVxdWVzdC5zZWN1cml0eU9yaWdpbigpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVz
dElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCBy
ZXF1ZXN0LnJlcXVpcmVzQXVkaW8oKSwgcmVxdWVzdC5yZXF1aXJlc1ZpZGVvKCksIHJlcXVlc3Qu
dmlkZW9EZXZpY2VVSURzKCksIHJlcXVlc3QuYXVkaW9EZXZpY2VVSURzKCkpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lv
bkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKSwgcmVxdWVzdC5hdWRpb0RldmljZVVJRHMoKSwgcmVxdWVzdC52aWRlb0Rl
dmljZVVJRHMoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAgbV9pZFRv
UmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgcmVxdWVzdElELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlE
VmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pCit2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lv
bih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0Rl
dmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKICAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IG1faWRUb1JlcXVlc3RNYXAudGFrZShyZXF1ZXN0SUQp
OwogICAgIGlmICghcmVxdWVzdCkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OgogICAgIG1fcmVxdWVzdFRvSURNYXAucmVtb3ZlKHJlcXVl
c3QpOwogCiAgICAgaWYgKGFsbG93ZWQpCi0gICAgICAgIHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vz
c0dyYW50ZWQoZGV2aWNlVUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsKKyAgICAgICAgcmVxdWVz
dC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSUQp
OwogICAgIGVsc2UKICAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRSZXF1ZXN0KFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3QmKTsKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRl
Y2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYg
ZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJp
bmcmIHZpZGVvRGV2aWNlVUlEKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlJiBtX3BhZ2U7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMTIsOSArMzMxMiw5IEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm0KIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VV
SURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3ZvaWQgV2ViUGFnZTo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlEKQogewotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odXNlck1lZGlhSUQsIGFs
bG93ZWQsIGRldmljZVVJRFZpZGVvLCBkZXZpY2VVSURBdWRpbyk7CisgICAgbV91c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNp
c2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlE
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDcsNyArMTEwNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lz
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93ZWQpOwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBXS19FWFBPUlQgdm9pZCBkaWRSZWNlaXZlVXNlck1lZGlhUGVy
bWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQsIGNvbnN0
IFN0cmluZyYgZGV2aWNlVUlEVmlkZW8sIGNvbnN0IFN0cmluZyYgZGV2aWNlVUlEQXVkaW8pOwor
ICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhdWRpb0Rl
dmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODEs
NyArMjgxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgICMgTWVkaWFTdGVhbQotICAgIERpZFJlY2VpdmVVc2Vy
TWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dl
ZCwgU3RyaW5nIGRldmljZVVJRFZpZGVvLCBTdHJpbmcgZGV2aWNlVUlEQXVkaW8pCisgICAgRGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBTdHJpbmcgYXVkaW9EZXZpY2VVSUQsIFN0cmluZyB2aWRlb0RldmljZVVJ
RCkKICNlbmRpZgogCiAgICAgIyBOb3RpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA5LTI1ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIgbWVkaWEgcmVxdWVzdCBp
bnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW06CisgICAgICAgIChXZWJVc2Vy
TWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVlc3QpOiBQdXQgVXNlck1lZGlhUmVxdWVzdHNNYXAgaW4g
YSBsb2NhbCBpbnN0ZWFkIG9yIGNhbGxpbmcKKyAgICAgICAgICB1c2VyTWVkaWFSZXF1ZXN0c01h
cCgpIHRocmVlIHRpbWVzLgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciBh
bGxvd10pOiBHZXQgcmlkIG9mIHVubmVlZGVkIGxvY2FsIHZhcmlhYmxlcy4KKyAgICAgICAgKC1b
V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgYWxsb3dEZXZpY2VXaXRoVmlkZW9VSURdKTogRGVs
ZXRlZCwgdW51c2VkLgorCiAyMDE1LTA5LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlIFF1aWNrTG9vayBvbiB0dk9TCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1t
CShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgQGlu
dGVyZmFjZSBXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5lciA6IAogfQogLSAoaWQpaW5pdFdpdGhV
c2VyTWVkaWFSZXF1ZXN0OihQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KXJlcXVlc3Q7CiAt
ICh2b2lkKWNhbmNlbFJlcXVlc3Q7Ci0tICh2b2lkKWFsbG93RGV2aWNlV2l0aFZpZGVvVUlEOihj
b25zdCBTdHJpbmcmKXZpZGVvVUlEIGFuZEF1ZGlvVUlEOihjb25zdCBTdHJpbmcmKWF1ZGlvVUlE
OwogLSAodm9pZClkZW55OwogQGVuZAogCkBAIC0xMTQsMTIgKzExMywxMyBAQCB2b2lkIFdlYlVz
ZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3NpCiAKIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50
OjpjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgVXNlck1l
ZGlhUmVxdWVzdHNNYXA6Oml0ZXJhdG9yIGl0ID0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5maW5k
KCZyZXF1ZXN0KTsKLSAgICBpZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5lbmQoKSkK
KyAgICBVc2VyTWVkaWFSZXF1ZXN0c01hcCYgcmVxdWVzdHNNYXAgPSB1c2VyTWVkaWFSZXF1ZXN0
c01hcCgpOworICAgIFVzZXJNZWRpYVJlcXVlc3RzTWFwOjppdGVyYXRvciBpdCA9IHJlcXVlc3Rz
TWFwLmZpbmQoJnJlcXVlc3QpOworICAgIGlmIChpdCA9PSByZXF1ZXN0c01hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgW2l0LT52YWx1ZSBjYW5jZWxSZXF1ZXN0XTsKLSAgICB1c2Vy
TWVkaWFSZXF1ZXN0c01hcCgpLnJlbW92ZShpdCk7CisgICAgcmVxdWVzdHNNYXAucmVtb3ZlKGl0
KTsKIH0KIAogCkBAIC0xNTMsMjIgKzE1Myw4IEBAIC0gKHZvaWQpYWxsb3cKICAgICBpZiAoIV9y
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB2aWRlb1VJ
RCA9IF9yZXF1ZXN0LT5maXJzdFZpZGVvRGV2aWNlVUlEKCk7Ci0gICAgY29uc3QgU3RyaW5nJiBh
dWRpb1VJRCA9IF9yZXF1ZXN0LT5maXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAgCi0gICAgX3Jl
cXVlc3QtPnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQodmlkZW9VSUQsIGF1ZGlvVUlEKTsKLSAgICBS
ZW1vdmVSZXF1ZXN0RnJvbU1hcChfcmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKLX0KKyAgICBfcmVx
dWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChfcmVxdWVzdC0+YWxsb3dlZEF1ZGlvRGV2aWNl
VUlEKCksIF9yZXF1ZXN0LT5hbGxvd2VkVmlkZW9EZXZpY2VVSUQoKSk7CiAKLS0gKHZvaWQpYWxs
b3dEZXZpY2VXaXRoVmlkZW9VSUQ6KGNvbnN0IFN0cmluZyYpdmlkZW9VSUQgYW5kQXVkaW9VSUQ6
KGNvbnN0IFN0cmluZyYpYXVkaW9VSUQKLXsKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IGlmICghX3JlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfcmVxdWVzdC0+dXNl
ck1lZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIAogICAgIFJlbW92
ZVJlcXVlc3RGcm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogfQpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjE3
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTUtMDktMjQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBvc3NpYmxlKTogVXBkYXRlIAorICAgICAg
ICAgIGZvciBBUEkgY2hhbmdlcy4KKwogMjAxNS0wOS0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBydW5uaW5nIHVuaXQgdGVzdHMgb24gaU9T
IFNpbXVsYXRvciB0ZXN0IGJvdApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE5LDkgKzE2MTksMjQgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgICAgICByZXR1cm47
CiAKICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
cykgewotICAgICAgICBpZiAobV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAg
ICAgICAgICBpZiAoV0tBcnJheUdldFNpemUoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERl
dmljZU5hbWVzVmlkZW8ocmVxdWVzdC5nZXQoKSkpIHx8IFdLQXJyYXlHZXRTaXplKFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1lc0F1ZGlvKHJlcXVlc3QuZ2V0KCkpKSkKLSAg
ICAgICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdC5n
ZXQoKSwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0VmlkZW9EZXZpY2VVSUQocmVx
dWVzdC5nZXQoKSksIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNl
VUlEKHJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gYXVk
aW9EZXZpY2VVSURzID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlE
cyhyZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gdmlkZW9E
ZXZpY2VVSURzID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhy
ZXF1ZXN0LmdldCgpKTsKKworICAgICAgICBpZiAobV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxv
d2VkIHx8ICghV0tBcnJheUdldFNpemUodmlkZW9EZXZpY2VVSURzLmdldCgpKSAmJiAhV0tBcnJh
eUdldFNpemUoYXVkaW9EZXZpY2VVSURzLmdldCgpKSkpIHsKKyAgICAgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB2aWRlb0RldmljZVVJRDsKKyAgICAgICAgICAgIGlmIChXS0FycmF5
R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHZpZGVvRGV2
aWNlVUlEID0gcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdElu
ZGV4KHZpZGVvRGV2aWNlVUlEcy5nZXQoKSwgMCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHZpZGVvRGV2aWNlVUlEID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IiIpOworCisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXVkaW9EZXZpY2VV
SUQ7CisgICAgICAgICAgICBpZiAoV0tBcnJheUdldFNpemUoYXVkaW9EZXZpY2VVSURzLmdldCgp
KSkKKyAgICAgICAgICAgICAgICBhdWRpb0RldmljZVVJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChhdWRpb0RldmljZVVJRHMuZ2V0KCksIDAp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhdWRpb0RldmljZVVJRCA9IFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKworICAgICAgICAgICAgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KHJlcXVlc3QuZ2V0KCksIHZpZGVvRGV2aWNlVUlELmdl
dCgpLCBhdWRpb0RldmljZVVJRC5nZXQoKSk7CisKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShyZXF1ZXN0LmdldCgpKTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261944</attachid>
            <date>2015-09-25 14:54:19 -0700</date>
            <delta_ts>2015-09-25 18:46:44 -0700</delta_ts>
            <desc>One more time...</desc>
            <filename>user_request_api_patch_7.txt</filename>
            <type>text/plain</type>
            <size>42453</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZCk6IFVzZSB0
cmFjayBwZXJzaXN0ZW50IElEIHRvIGNyZWF0ZSB2ZWN0b3JzCisgICAgICAgICAgYXMgdGhhdCBp
cyB3aGF0IHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRvIG1hcCB0byBhIGNhcHR1cmUgZGV2aWNl
LgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3Jh
bnRlZCk6IG1fY2hvc2VuWFhEZXZpY2VVSUQgLT4gbV9YWERldmljZVVJREFsbG93ZWQuCisgICAg
ICAgICAgVXNlIHRoZSBkZXZpY2UgSURzIHRvIGNyZWF0ZSB0aGUgTWVkaWFTdHJlYW0uIFN3aXRj
aCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOiBEb24ndCBhc3N1bWUgY29uc3RyYWludHMgYXJl
IHZhbGlkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9EZXZpY2VVSURzKToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvRGV2aWNlVUlEcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphbGxvd2VkVmlkZW9EZXZpY2VVSUQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZEF1ZGlvRGV2aWNl
VUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVzQXVkaW8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6cmVxdWlyZXNW
aWRlbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmaXJz
dFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmZpcnN0QXVkaW9EZXZpY2VVSUQpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKTogQ2FsbCBz
ZXRQZXJzaXN0ZW50SWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5v
aEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0eXBvIGVycm9ycyBp
biBhIGNvbW1lbnQgKCJwYXNzZWQiIC0+ICJQYXNzZWQiLCAiT3Zlcndpc2UiIC0+ICJPdGhlcndp
c2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsOSArMTI1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQog
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3MsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcykKIHsKICAgICBmb3IgKGF1
dG8mIGF1ZGlvVHJhY2sgOiBhdWRpb1RyYWNrcykKLSAgICAgICAgbV9hdWRpb0RldmljZVVJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPmlkKCkpOworICAgICAgICBtX2F1ZGlvRGV2aWNlVUlEcy5hcHBl
bmQoYXVkaW9UcmFjay0+cGVyc2lzdGVudElEKCkpOwogICAgIGZvciAoYXV0byYgdmlkZW9UcmFj
ayA6IHZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9U
cmFjay0+aWQoKSk7CisgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNr
LT5wZXJzaXN0ZW50SUQoKSk7CisKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CiAg
ICAgICAgIC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9y
IGFjY2VzcyB0byBtZWRpYS4KQEAgLTEzNiwxNCArMTM3LDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6Y29uc3RyYWludHNWYWxpZGEKICAgICB9KTsKIH0KIAotdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBtX2Nob3NlblZpZGVvRGV2aWNlVUlEID0g
dmlkZW9EZXZpY2VVSUQ7Ci0gICAgbV9jaG9zZW5BdWRpb0RldmljZVVJRCA9IGF1ZGlvRGV2aWNl
VUlEOworICAgIG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEID0gdmlkZW9EZXZpY2VVSUQ7CisgICAg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQgPSBhdWRpb0RldmljZVVJRDsKKwogICAgIFJlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
LCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKICAgICAgICAgLy8gMyAtIHRoZSB1
c2VyIGdyYW50ZWQgYWNjZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJl
YW0gZGVzY3JpcHRvcnMuCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIHByb3RlY3RlZFRo
aXMtPm1fYXVkaW9Db25zdHJhaW50cywgcHJvdGVjdGVkVGhpcy0+bV92aWRlb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRl
TWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKTsKICAgICB9KTsKIH0KIApAQCAtMTY0LDEwICsxNjYsMTQgQEAgdm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUAogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVk
aWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJl
YW0tPmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2F1ZGlvQ29uc3RyYWludHMpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZp
ZGVvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29u
c3RyYWludHMpOworICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKKyAgICAgICAgZm9yIChh
dXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkKKyAgICAgICAgICAgIHRyYWNr
LT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOworICAgIH0KKyAgICBpZiAo
bV92aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldFZpZGVvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJl
YW0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxNyArNjUsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIAotICAgIGJvb2wgcmVxdWlyZXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdHJhaW50czsgfQotICAgIGJvb2wgcmVx
dWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db25zdHJhaW50czsgfQotICAgIAot
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRGV2aWNlVUlEczsgfQorICAgIGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzLnNpemUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNWaWRl
bygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzLnNpemUoKTsgfQorCiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVk
aW9EZXZpY2VVSURzOyB9Ci0gICAgCi0gICAgY29uc3QgU3RyaW5nJiBmaXJzdFZpZGVvRGV2aWNl
VUlEKCkgY29uc3QgeyByZXR1cm4gIXZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHZpZGVv
RGV2aWNlVUlEcygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0cmluZyYg
Zmlyc3RBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5p
c0VtcHR5KCkgPyBhdWRpb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0RldmljZVVJRHM7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZEF1ZGlvRGV2
aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJREFsbG93ZWQ7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFsbG93ZWRWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dlZFZpZGVvRGV2aWNlVUlEOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlhUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CkBAIC05
NSwxMiArOTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZp
Y2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwotICAgIAotICAg
IFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2Nob3NlbkF1ZGlv
RGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsK
IAorICAgIFN0cmluZyBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsKKyAgICBTdHJpbmcgbV9hdWRp
b0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlCiAKICAgICBpZiAobV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIG1faWQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgbV9wZXJzaXN0ZW50SWQgPSBtX2lkOworICAgIG1fcGVy
c2lzdGVudElEID0gbV9pZDsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElk
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGVyc2lzdGVudElkKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKSB7IG1fcGVyc2lzdGVudElk
ID0gcGVyc2lzdGVudElkOyB9CisgICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJzaXN0
ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQgPSBwZXJz
aXN0ZW50SUQ7IH0KIAogICAgIGVudW0gVHlwZSB7IE5vbmUsIEF1ZGlvLCBWaWRlbyB9OwogICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTE1LDcgKzExNSw3IEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsKLSAgICBTdHJpbmcgbV9w
ZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBl
OwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX3N0b3BwZWQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRp
YUNhcHR1cmVTb3VyCiAgICAgLCBtX2lzUnVubmluZyhmYWxzZSkKIHsKICAgICBzZXROYW1lKGRl
dmljZS5sb2NhbGl6ZWROYW1lKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlE
KTsKICAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZSh0eXBlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvID8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhIDogUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTA5LTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIgbWVkaWEgcmVxdWVzdCBp
bnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKTogTmV3LCBy
ZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8u
CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKTog
TmV3LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVz
QXVkaW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1l
c1ZpZGVvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZXZpY2VOYW1lc0F1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwOgorICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6
IFVwZGF0ZSBmb3IgVXNlck1lZGlhUmVxdWVzdCBBUEkgY2hhbmdlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZVJlcXVlc3QpOiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFtZXRlcnMuCisgICAgICAgICAgU3dp
dGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggZXZl
cnl3aGVyZSBlbHNlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KTogR2V0IHJpZCBvZiB0aGUg
Ym9vbCBwYXJhbWV0ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIg
b3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3cpOiBTd2l0Y2ggYXVk
aW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpnZXREZXZpY2VOYW1lRm9yVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp2aWRlb0Rldmlj
ZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphdWRpb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cmVxdWlyZXNBdWRpbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnJlcXVpcmVz
VmlkZW8pOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZSk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVycy4KKyAgICAgICAgICBT
d2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBl
dmVyeXdoZXJlIGVsc2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOiBHZXQgcmlkIG9mIGJvb2wgcGFyYW1zLCB0aGUg
ZGV2aWNlCisgICAgICAgICAgdmVjdG9ycyBoYXZlIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8KKyAgICAg
ICAgICBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxz
ZS4gZGV2aWNlVUlEVmlkZW8gLT4gdmlkZW9EZXZpY2VVSUQsCisgICAgICAgIGRldmljZVVJREF1
ZGlvIC0+IGF1ZGlvRGV2aWNlVUlELgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFy
YW1ldGVyIG9yZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMTUtMDktMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmFuIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcgogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlv
KQorUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIHJlcXVpcmVzQXVkaW8sIHJlcXVpcmVz
VmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlE
cywgdmlkZW9EZXZpY2VVSURzKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlh
SUQsIHJlcXVlc3QuZ2V0KCkpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlEKQogewogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCB2aWRlb0Rldmlj
ZVVJRCwgYXVkaW9EZXZpY2VVSUQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFsbG93
ZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkocmV2
aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUmVxdWVzdCh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRp
byk7CisgICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVk
aW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKIAog
ICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5IHdoZW4gYSBk
ZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90LCBib29sIGFsbG93
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
VUlEKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1JlcXVlc3RzOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxOSArMjYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRl
dmljZVVJRHNBdWRpbykKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURz
KQogICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRp
YUlEKQotICAgICwgbV9yZXF1aXJlc0F1ZGlvKHJlcXVpcmVzQXVkaW8pCi0gICAgLCBtX3JlcXVp
cmVzVmlkZW8ocmVxdWlyZXNWaWRlbykKLSAgICAsIG1fdmlkZW9EZXZpY2VVSURzKGRldmljZVVJ
RHNWaWRlbykKLSAgICAsIG1fYXVkaW9kZXZpY2VVSURzKGRldmljZVVJRHNBdWRpbykKKyAgICAs
IG1fdmlkZW9EZXZpY2VVSURzKHZpZGVvRGV2aWNlVUlEcykKKyAgICAsIG1fYXVkaW9EZXZpY2VV
SURzKGF1ZGlvRGV2aWNlVUlEcykKIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjphbGxvdyhjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJp
bmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlVUlEKQogewotICAgIG1fbWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lv
bkRlY2lzaW9uKG1fdXNlck1lZGlhSUQsIHRydWUsIHZpZGVvRGV2aWNlVUlELCBhdWRpb0Rldmlj
ZVVJRCk7CisgICAgbV9tYW5hZ2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24obV91c2VyTWVkaWFJRCwgdHJ1ZSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZW55KCkKQEAgLTUx
LDEyICs0OSw1IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW4KICAg
ICBtX21hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotY29uc3QgU3RyaW5nJiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpn
ZXREZXZpY2VOYW1lRm9yVUlEKGNvbnN0IFN0cmluZyYgVUlELCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNvdXJjZVdpdGhVSUQoVUlELCB0eXBlLCBudWxs
cHRyKS0+bGFiZWwoKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclAKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBi
b29sIHJlcXVpcmVzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGF1ZGlvRGV2aWNlVUlEcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwg
cmVxdWlyZXNBdWRpbywgcmVxdWlyZXNWaWRlbywgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VVSURz
QXVkaW8pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCB2aWRlb0RldmljZVVJRHMsIGF1ZGlv
RGV2aWNlVUlEcykpOwogICAgIH0KIAogICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5nJiB2aWRl
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CkBAIC00MSwyOCArNDEs
MjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotICAgIGNvbnN0IFN0cmluZyYgZ2V0RGV2aWNlTmFtZUZvclVJRChjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLSNlbmRpZgorICAg
IGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzLnNp
emUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9E
ZXZpY2VVSURzLnNpemUoKTsgfQogCi0gICAgYm9vbCByZXF1aXJlc0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1aXJlc0F1ZGlvOyB9Ci0gICAgYm9vbCByZXF1aXJlc1ZpZGVvKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1aXJlc1ZpZGVvOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZpZGVvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzOyB9
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXVkaW9kZXZpY2VVSURzOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlv
RGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzOyB9CiAgICAgCiAg
ICAgY29uc3QgU3RyaW5nJiBmaXJzdFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gIXZp
ZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHZpZGVvRGV2aWNlVUlEcygpLmF0KDApIDogZW1w
dHlTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgZmlyc3RBdWRpb0RldmljZVVJRCgpIGNv
bnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyBhdWRpb0RldmljZVVJ
RHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1
aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWlu
dDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMpOwogCiAgICAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBt
X3VzZXJNZWRpYUlEOwotICAgIGJvb2wgbV9yZXF1aXJlc0F1ZGlvOwotICAgIGJvb2wgbV9yZXF1
aXJlc1ZpZGVvOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZpY2VVSURzOwotICAgIFZl
Y3RvcjxTdHJpbmc+IG1fYXVkaW9kZXZpY2VVSURzOworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVk
aW9EZXZpY2VVSURzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyNzksMTMgKzUyNzksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcgogICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29s
IHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQog
ewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikpOwotICAg
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdCh1c2VyTWVkaWFJRCwg
YXVkaW8sIHZpZGVvLCBkZXZpY2VVSURzVmlkZW8sIGRldmljZVVJRHNBdWRpbyk7CisgICAgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KHVzZXJNZWRpYUlELCBhdWRp
b0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7CiAKICAgICBpZiAoIW1fdWlDbGllbnQtPmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsICpv
cmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgyLDcgKzExODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIs
IHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNl
VUlEc0F1ZGlvKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAg
ICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcs
NyArMjY3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgICMgTWVkaWFTdGVhbSBtZXNzYWdlcwotICAgIFJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBW
ZWN0b3I8U3RyaW5nPiBkZXZpY2VVSURzVmlkZW8sIFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNB
dWRpbykKKyAgICBSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURzLCBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJ
RHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uIG1lc3NhZ2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE2ICszMyw5IEBAIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RHZXQKIH0KIAogCi12b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxv
d0Jlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZikKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYs
IFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCkK
IHsKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UmVmKS0+Zmlyc3RWaWRlb0RldmljZVVJRCgpOwotICAgIGNvbnN0IFN0cmlu
ZyYgYXVkaW9EZXZpY2UgPSB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5m
aXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmKS0+YWxsb3codmlkZW9EZXZpY2UsIGF1ZGlvRGV2aWNlKTsKLX0KLQotdm9pZCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgV0tTdHJpbmdSZWYgdmlkZW9EZXZp
Y2VVSUQsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlEKQotewotICAgIHRvSW1wbCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmFsbG93KHRvV1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlE
KSwgdG9XVEZTdHJpbmcoYXVkaW9EZXZpY2VVSUQpKTsKKyAgICB0b0ltcGwodXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh0b1dURlN0cmluZyhhdWRpb0RldmljZVVJRCksIHRv
V1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlEKSk7CiB9CiAKIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZikKQEAgLTUwLDM2ICs0MywyMiBAQCB2b2lkIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REZW55KFdLCiAgICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmKS0+ZGVueSgpOwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVz
ZXJNZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBX
S011dGFibGVBcnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9y
IChhdXRvJiBuYW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0Rldmlj
ZVVJRHMoKSkgewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFy
cmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAg
fQorICAgIGZvciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25S
ZWYpLT52aWRlb0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXks
IHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGFycmF5OwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZXZpY2VOYW1lc0F1ZGlvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNl
ck1lZGlhUGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEF1ZGlvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJN
ZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011
dGFibGVBcnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChh
dXRvJiBuYW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJ
RHMoKSkgewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJt
aXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5
LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQor
ICAgIGZvciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYp
LT5hdWRpb0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRv
QVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGFycmF5OwogfQotCi1XS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVz
ZXJNZWRpYVBlcm1pc3Npb25SZWYpCi17Ci0gICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVy
bWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRlbyh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDog
cmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIiIpKTsKLX0KLQotV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZp
cnN0QXVkaW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVk
aWFQZXJtaXNzaW9uUmVmKQotewotICAgIHJldHVybiAhdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Np
b25SZWYpLT5hdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyByZWludGVycHJldF9jYXN0PFdL
U3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdERldmljZU5hbWVzQXVkaW8odXNlck1lZGlhUGVybWlzc2lvblJlZiksIDApKSA6IHJlaW50
ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIi
KSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxMSBAQCBleHRlcm4gIkMiIHsK
IAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBl
SUQoKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
QmVzdChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmLCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZp
Y2VVSUQpOworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNl
VUlELCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCk7CiBXS19FWFBPUlQgdm9pZCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVm
KTsKIAotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERl
dmljZU5hbWVzVmlkZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci1XS19FWFBP
UlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRp
byhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLSAgICAKLVdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRChXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0QXVkaW9EZXZpY2VVSURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOwogCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsMTAgKzcxLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXEKIAogICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7CiAKLSAgICBjb25zdCBT
dHJpbmcmIHZpZGVvRGV2aWNlID0gcHJpdi0+cmVxdWVzdC0+Zmlyc3RWaWRlb0RldmljZVVJRCgp
OwotICAgIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2UgPSBwcml2LT5yZXF1ZXN0LT5maXJzdEF1
ZGlvRGV2aWNlVUlEKCk7CisgICAgYXV0byB2aWRlb0RldmljZVVJRHMgPSBwcml2LT5yZXF1ZXN0
LT52aWRlb0RldmljZVVJRHMoKTsKKyAgICBhdXRvIGF1ZGlvRGV2aWNlVUlEcyA9IHByaXYtPnJl
cXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpOworCisgICAgYXV0byB2aWRlb0RldmljZSA9ICF2aWRl
b0RldmljZVVJRHMuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VVSURzWzBdIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIGF1ZGlvRGV2aWNlID0gIWF1ZGlvRGV2aWNlVUlEcy5pc0VtcHR5KCkgPyBh
dWRpb0RldmljZVVJRHNbMF0gOiBlbXB0eVN0cmluZygpOwogICAgIAotICAgIHByaXYtPnJlcXVl
c3QtPmFsbG93KHZpZGVvRGV2aWNlLCBhdWRpb0RldmljZSk7CisgICAgcHJpdi0+cmVxdWVzdC0+
YWxsb3coYXVkaW9EZXZpY2UsIHZpZGVvRGV2aWNlKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiBy
ZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTIsMyArMzEyLDI2IEBACiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlh
LmVuZHBvaW50c3RyZWFtLnhwYyIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1l
ZGlhLmVuZHBvaW50cGxheWJhY2tzZXNzaW9uLnhwYyIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGlja2VyLnhwYyIpKQorCisKKzs7IENhbWVyYSBhY2Nl
c3MKKyhhbGxvdyBkZXZpY2UtY2FtZXJhKQorKGFsbG93IGZpbGUtcmVhZCoKKyAgICAobGl0ZXJh
bCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLmNvcmVtZWRpYSIpCisgICAgKGhvbWUt
bGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLmNvcmVtZWRpYSIpKQorKGFs
bG93IG1hY2gtbG9va3VwIChleHRlbnNpb24gImNvbS5hcHBsZS5hcHAtc2FuZGJveC5tYWNoIikp
CisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLkFw
cGxlQ2FtZXJhQXNzaXN0YW50IikKKyAgICA7OyBBcHBsZSBEQUwgYXNzaXN0YW50cworICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uVkRDQXNzaXN0YW50IikKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jbWlvLkFWQ0Fzc2lzdGFudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY21pby5JSURDVmlkZW9Bc3Npc3RhbnQiKQorICAgIDs7IFF1aWNrVGltZUlJRENEaWdp
dGl6ZXIgYXNzaXN0YW50CisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuSUlEQ0Fzc2lzdGFu
dCIpKQorKGFsbG93IGlva2l0LW9wZW4KKyAgICA7OyBRdWlja1RpbWVVU0JWRENEaWdpdGl6ZXIK
KyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPVVNCRGV2aWNlVXNlckNsaWVudFYyIikK
KyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPVVNCSW50ZXJmYWNlVXNlckNsaWVudFYy
IikpCisKKzs7IE1pY3JvcGhvbmUKKyhhbGxvdyBkZXZpY2UtbWljcm9waG9uZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlz
aW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAg
QVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSByZXF1ZXN0
LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1l
LT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHJlcXVlc3QucmVxdWly
ZXNBdWRpbygpLCByZXF1ZXN0LnJlcXVpcmVzVmlkZW8oKSwgcmVxdWVzdC52aWRlb0RldmljZVVJ
RHMoKSwgcmVxdWVzdC5hdWRpb0RldmljZVVJRHMoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVx
dWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
LCByZXF1ZXN0LmF1ZGlvRGV2aWNlVUlEcygpLCByZXF1ZXN0LnZpZGVvRGV2aWNlVUlEcygpKSk7
CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1
ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjoKICAgICBtX2lkVG9SZXF1ZXN0TWFwLnJl
bW92ZShyZXF1ZXN0SUQpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiByZXF1ZXN0ID0gbV9pZFRvUmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6CiAgICAgbV9yZXF1ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBp
ZiAoYWxsb3dlZCkKLSAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChkZXZp
Y2VVSURWaWRlbywgZGV2aWNlVUlEQXVkaW8pOworICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFB
Y2Nlc3NHcmFudGVkKGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiAgICAgZWxzZQog
ICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dCYpOwogICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0
X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRl
bywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbyk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93
ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZp
Y2VVSUQpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDIw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMxMiw5ICszMzEyLDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZl
Tm90aWZpY2F0aW9uUGVybQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGRldmljZVVJRFZpZGVvLCBjb25z
dCBTdHJpbmcmIGRldmljZVVJREF1ZGlvKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VV
SUQpCiB7Ci0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2
ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgZGV2aWNl
VUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRp
YUlELCBhbGxvd2VkLCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSUQpOwogfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dlZCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbyk7CisgICAgV0tfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtCi0gICAgRGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBTdHJpbmcgZGV2
aWNlVUlEVmlkZW8sIFN0cmluZyBkZXZpY2VVSURBdWRpbykKKyAgICBEaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3RyaW5nIHZpZGVvRGV2aWNlVUlEKQogI2VuZGlmCiAK
ICAgICAjIE5vdGlmaWNhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjA2
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTUtMDktMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6
Y2FuY2VsUmVxdWVzdCk6IFB1dCBVc2VyTWVkaWFSZXF1ZXN0c01hcCBpbiBhIGxvY2FsIGluc3Rl
YWQgb3IgY2FsbGluZworICAgICAgICAgIHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkgdGhyZWUgdGlt
ZXMuCisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG93XSk6IEdldCBy
aWQgb2YgdW5uZWVkZWQgbG9jYWwgdmFyaWFibGVzLgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lMaXN0ZW5lciBhbGxvd0RldmljZVdpdGhWaWRlb1VJRF0pOiBEZWxldGVkLCB1bnVzZWQu
CisKIDIwMTUtMDktMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2FibGUgUXVpY2tMb29rIG9uIHR2T1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDE5
MDIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBAaW50ZXJmYWNlIFdlYlVz
ZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogCiB9CiAtIChpZClpbml0V2l0aFVzZXJNZWRpYVJlcXVl
c3Q6KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4pcmVxdWVzdDsKIC0gKHZvaWQpY2FuY2Vs
UmVxdWVzdDsKLS0gKHZvaWQpYWxsb3dEZXZpY2VXaXRoVmlkZW9VSUQ6KGNvbnN0IFN0cmluZyYp
dmlkZW9VSUQgYW5kQXVkaW9VSUQ6KGNvbnN0IFN0cmluZyYpYXVkaW9VSUQ7CiAtICh2b2lkKWRl
bnk7CiBAZW5kCiAKQEAgLTExNCwxMiArMTEzLDEzIEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2kKIAogdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVl
c3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0c01h
cDo6aXRlcmF0b3IgaXQgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmZpbmQoJnJlcXVlc3QpOwot
ICAgIGlmIChpdCA9PSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmVuZCgpKQorICAgIFVzZXJNZWRp
YVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCk7CisgICAg
VXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdHNNYXAuZmluZCgmcmVx
dWVzdCk7CisgICAgaWYgKGl0ID09IHJlcXVlc3RzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBbaXQtPnZhbHVlIGNhbmNlbFJlcXVlc3RdOwotICAgIHVzZXJNZWRpYVJlcXVlc3Rz
TWFwKCkucmVtb3ZlKGl0KTsKKyAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOwogfQogCiAKQEAg
LTE1MywyMiArMTUzLDggQEAgLSAodm9pZClhbGxvdwogICAgIGlmICghX3JlcXVlc3QpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvVUlEID0gX3JlcXVlc3Qt
PmZpcnN0VmlkZW9EZXZpY2VVSUQoKTsKLSAgICBjb25zdCBTdHJpbmcmIGF1ZGlvVUlEID0gX3Jl
cXVlc3QtPmZpcnN0QXVkaW9EZXZpY2VVSUQoKTsKLSAgICAKLSAgICBfcmVxdWVzdC0+dXNlck1l
ZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIFJlbW92ZVJlcXVlc3RG
cm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotfQorICAgIF9yZXF1ZXN0LT51c2VyTWVk
aWFBY2Nlc3NHcmFudGVkKF9yZXF1ZXN0LT5hbGxvd2VkQXVkaW9EZXZpY2VVSUQoKSwgX3JlcXVl
c3QtPmFsbG93ZWRWaWRlb0RldmljZVVJRCgpKTsKIAotLSAodm9pZClhbGxvd0RldmljZVdpdGhW
aWRlb1VJRDooY29uc3QgU3RyaW5nJil2aWRlb1VJRCBhbmRBdWRpb1VJRDooY29uc3QgU3RyaW5n
JilhdWRpb1VJRAotewotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKCFfcmVxdWVz
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NH
cmFudGVkKHZpZGVvVUlELCBhdWRpb1VJRCk7Ci0gICAgCiAgICAgUmVtb3ZlUmVxdWVzdEZyb21N
YXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAyMTcpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wOS0yNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCB1
c2VyIG1lZGlhIHJlcXVlc3QgaW50ZXJuYWwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUpOiBVcGRhdGUgCisgICAgICAgICAgZm9yIEFQSSBj
aGFuZ2VzLgorCiAyMDE1LTA5LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdXBwb3J0IHJ1bm5pbmcgdW5pdCB0ZXN0cyBvbiBpT1MgU2ltdWxhdG9yIHRl
c3QgYm90CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTkwMjA2KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTksOSArMTYxOSwyNCBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JVc2VyCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAo
YXV0byYgcmVxdWVzdCA6IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKSB7Ci0gICAgICAg
IGlmIChtX2lzVXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAgICAgICAgIGlmIChX
S0FycmF5R2V0U2l6ZShXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRl
byhyZXF1ZXN0LmdldCgpKSkgfHwgV0tBcnJheUdldFNpemUoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdERldmljZU5hbWVzQXVkaW8ocmVxdWVzdC5nZXQoKSkpKQotICAgICAgICAgICAgICAg
IFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhyZXF1ZXN0LmdldCgpLCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChyZXF1ZXN0LmdldCgpKSwg
V0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0QXVkaW9EZXZpY2VVSUQocmVxdWVzdC5n
ZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBhdWRpb0RldmljZVVJRHMg
PSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0
KCkpOworICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB2aWRlb0RldmljZVVJRHMgPSBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKHJlcXVlc3QuZ2V0KCkp
OworCisgICAgICAgIGlmIChtX2lzVXNlck1lZGlhUGVybWlzc2lvbkFsbG93ZWQgfHwgKCFXS0Fy
cmF5R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMuZ2V0KCkpICYmICFXS0FycmF5R2V0U2l6ZShhdWRp
b0RldmljZVVJRHMuZ2V0KCkpKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHZpZGVvRGV2aWNlVUlEOworICAgICAgICAgICAgaWYgKFdLQXJyYXlHZXRTaXplKHZpZGVv
RGV2aWNlVUlEcy5nZXQoKSkpCisgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2VVSUQgPSByZWlu
dGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgodmlkZW9EZXZp
Y2VVSURzLmdldCgpLCAwKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmlk
ZW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIik7CisKKyAgICAg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdWRpb0RldmljZVVJRDsKKyAgICAgICAg
ICAgIGlmIChXS0FycmF5R2V0U2l6ZShhdWRpb0RldmljZVVJRHMuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIGF1ZGlvRGV2aWNlVUlEID0gcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tB
cnJheUdldEl0ZW1BdEluZGV4KGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSwgMCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlVUlEID0gV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIiIpOworCisgICAgICAgICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0QWxsb3cocmVxdWVzdC5nZXQoKSwgdmlkZW9EZXZpY2VVSUQuZ2V0KCksIGF1ZGlvRGV2
aWNlVUlELmdldCgpKTsKKwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REZW55KHJlcXVlc3QuZ2V0KCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261959</attachid>
            <date>2015-09-25 18:46:44 -0700</date>
            <delta_ts>2015-09-25 19:23:22 -0700</delta_ts>
            <desc>One more time - redux</desc>
            <filename>user_request_api_patch_8.txt</filename>
            <type>text/plain</type>
            <size>44165</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA5LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIg
bWVkaWEgcmVxdWVzdCBpbnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZCk6IFVzZSB0
cmFjayBwZXJzaXN0ZW50IElEIHRvIGNyZWF0ZSB2ZWN0b3JzCisgICAgICAgICAgYXMgdGhhdCBp
cyB3aGF0IHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRvIG1hcCB0byBhIGNhcHR1cmUgZGV2aWNl
LgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dXNlck1lZGlhQWNjZXNzR3Jh
bnRlZCk6IG1fY2hvc2VuWFhEZXZpY2VVSUQgLT4gbV9YWERldmljZVVJREFsbG93ZWQuCisgICAg
ICAgICAgVXNlIHRoZSBkZXZpY2UgSURzIHRvIGNyZWF0ZSB0aGUgTWVkaWFTdHJlYW0uIFN3aXRj
aCBhdWRpby92aWRlbyBwYXJhbWV0ZXIgb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOiBEb24ndCBhc3N1bWUgY29uc3RyYWludHMgYXJl
IHZhbGlkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6dmlkZW9EZXZpY2VVSURzKToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmF1ZGlvRGV2aWNlVUlEcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjphbGxvd2VkVmlkZW9EZXZpY2VVSUQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3dlZEF1ZGlvRGV2aWNl
VUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVpcmVzQXVkaW8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6cmVxdWlyZXNW
aWRlbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmaXJz
dFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OmZpcnN0QXVkaW9EZXZpY2VVSUQpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKTogQ2FsbCBz
ZXRQZXJzaXN0ZW50SWQuCisKIDIwMTUtMDktMjQgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5v
aEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0eXBvIGVycm9ycyBp
biBhIGNvbW1lbnQgKCJwYXNzZWQiIC0+ICJQYXNzZWQiLCAiT3Zlcndpc2UiIC0+ICJPdGhlcndp
c2UiKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsOSArMTI1LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoKQog
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb25zdHJhaW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFja3MsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1RyYWNrcykKIHsKICAgICBmb3IgKGF1
dG8mIGF1ZGlvVHJhY2sgOiBhdWRpb1RyYWNrcykKLSAgICAgICAgbV9hdWRpb0RldmljZVVJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPmlkKCkpOworICAgICAgICBtX2F1ZGlvRGV2aWNlVUlEcy5hcHBl
bmQoYXVkaW9UcmFjay0+cGVyc2lzdGVudElEKCkpOwogICAgIGZvciAoYXV0byYgdmlkZW9UcmFj
ayA6IHZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvRGV2aWNlVUlEcy5hcHBlbmQodmlkZW9U
cmFjay0+aWQoKSk7CisgICAgICAgIG1fdmlkZW9EZXZpY2VVSURzLmFwcGVuZCh2aWRlb1RyYWNr
LT5wZXJzaXN0ZW50SUQoKSk7CisKICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CiAg
ICAgICAgIC8vIDIgLSBUaGUgY29uc3RyYWludHMgYXJlIHZhbGlkLCBhc2sgdGhlIHVzZXIgZm9y
IGFjY2VzcyB0byBtZWRpYS4KQEAgLTEzNiwxNCArMTM3LDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6Y29uc3RyYWludHNWYWxpZGEKICAgICB9KTsKIH0KIAotdm9pZCBVc2VyTWVkaWFSZXF1
ZXN0Ojp1c2VyTWVkaWFBY2Nlc3NHcmFudGVkKGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnVz
ZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3Qg
U3RyaW5nJiB2aWRlb0RldmljZVVJRCkKIHsKLSAgICBtX2Nob3NlblZpZGVvRGV2aWNlVUlEID0g
dmlkZW9EZXZpY2VVSUQ7Ci0gICAgbV9jaG9zZW5BdWRpb0RldmljZVVJRCA9IGF1ZGlvRGV2aWNl
VUlEOworICAgIG1fYWxsb3dlZFZpZGVvRGV2aWNlVUlEID0gdmlkZW9EZXZpY2VVSUQ7CisgICAg
bV9hdWRpb0RldmljZVVJREFsbG93ZWQgPSBhdWRpb0RldmljZVVJRDsKKwogICAgIFJlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
LCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSURdIHsKICAgICAgICAgLy8gMyAtIHRoZSB1
c2VyIGdyYW50ZWQgYWNjZXNzLCBhc2sgcGxhdGZvcm0gdG8gY3JlYXRlIHRoZSBtZWRpYSBzdHJl
YW0gZGVzY3JpcHRvcnMuCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKHByb3RlY3RlZFRoaXMuZ2V0KCksIHByb3RlY3RlZFRo
aXMtPm1fYXVkaW9Db25zdHJhaW50cywgcHJvdGVjdGVkVGhpcy0+bV92aWRlb0NvbnN0cmFpbnRz
KTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRl
TWVkaWFTdHJlYW0ocHJvdGVjdGVkVGhpcy5nZXQoKSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKTsKICAgICB9KTsKIH0KIApAQCAtMTY0LDEwICsxNjYsMTQgQEAgdm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUAogCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUgTWVk
aWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJl
YW0tPmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2F1ZGlvQ29uc3RyYWludHMpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZp
ZGVvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29u
c3RyYWludHMpOworICAgIGlmIChtX2F1ZGlvQ29uc3RyYWludHMpIHsKKyAgICAgICAgZm9yIChh
dXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKSkKKyAgICAgICAgICAgIHRyYWNr
LT5hcHBseUNvbnN0cmFpbnRzKCptX2F1ZGlvQ29uc3RyYWludHMpOworICAgIH0KKyAgICBpZiAo
bV92aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldFZpZGVvVHJhY2tzKCkpCisgICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygq
bV92aWRlb0NvbnN0cmFpbnRzKTsKKyAgICB9CiAKICAgICBtX3Byb21pc2UucmVzb2x2ZShzdHJl
YW0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxNyArNjUsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXNlck1lZGlhQWNjZXNzR3JhbnRlZChjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVzZXJNZWRpYUFjY2Vzc0dyYW50ZWQoY29uc3QgU3RyaW5nJiBhdWRp
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZVVJRCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIAotICAgIGJvb2wgcmVxdWlyZXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdHJhaW50czsgfQotICAgIGJvb2wgcmVx
dWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db25zdHJhaW50czsgfQotICAgIAot
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRGV2aWNlVUlEczsgfQorICAgIGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzLnNpemUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNWaWRl
bygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzLnNpemUoKTsgfQorCiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVk
aW9EZXZpY2VVSURzOyB9Ci0gICAgCi0gICAgY29uc3QgU3RyaW5nJiBmaXJzdFZpZGVvRGV2aWNl
VUlEKCkgY29uc3QgeyByZXR1cm4gIXZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHZpZGVv
RGV2aWNlVUlEcygpLmF0KDApIDogZW1wdHlTdHJpbmcoKTsgfQotICAgIGNvbnN0IFN0cmluZyYg
Zmlyc3RBdWRpb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5p
c0VtcHR5KCkgPyBhdWRpb0RldmljZVVJRHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0RldmljZVVJRHM7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWxsb3dlZEF1ZGlvRGV2
aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0RldmljZVVJREFsbG93ZWQ7IH0KKyAgICBj
b25zdCBTdHJpbmcmIGFsbG93ZWRWaWRlb0RldmljZVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dlZFZpZGVvRGV2aWNlVUlEOyB9CiAKIHByaXZhdGU6CiAgICAgVXNlck1lZGlhUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzLCBNZWRpYURldmljZXM6OlByb21pc2UmJik7CkBAIC05
NSwxMiArOTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZp
Y2VVSURzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVkaW9EZXZpY2VVSURzOwotICAgIAotICAg
IFN0cmluZyBtX2Nob3NlblZpZGVvRGV2aWNlVUlEOwotICAgIFN0cmluZyBtX2Nob3NlbkF1ZGlv
RGV2aWNlVUlEOwotICAgIAotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsK
IAorICAgIFN0cmluZyBtX2FsbG93ZWRWaWRlb0RldmljZVVJRDsKKyAgICBTdHJpbmcgbV9hdWRp
b0RldmljZVVJREFsbG93ZWQ7CisKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgTWVkaWFEZXZpY2VzOjpQcm9taXNlIG1fcHJvbWlzZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlCiAKICAgICBpZiAobV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIG1faWQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgbV9wZXJzaXN0ZW50SWQgPSBtX2lkOworICAgIG1fcGVy
c2lzdGVudElEID0gbV9pZDsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElk
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGVyc2lzdGVudElkKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkKSB7IG1fcGVyc2lzdGVudElk
ID0gcGVyc2lzdGVudElkOyB9CisgICAgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJzaXN0
ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQgPSBwZXJz
aXN0ZW50SUQ7IH0KIAogICAgIGVudW0gVHlwZSB7IE5vbmUsIEF1ZGlvLCBWaWRlbyB9OwogICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTE1LDcgKzExNSw3IEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsKLSAgICBTdHJpbmcgbV9w
ZXJzaXN0ZW50SWQ7CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBl
OwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgYm9vbCBtX3N0b3BwZWQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRp
YUNhcHR1cmVTb3VyCiAgICAgLCBtX2lzUnVubmluZyhmYWxzZSkKIHsKICAgICBzZXROYW1lKGRl
dmljZS5sb2NhbGl6ZWROYW1lKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlE
KTsKICAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZSh0eXBlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvID8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhIDogUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTA5LTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXIgbWVkaWEgcmVxdWVzdCBp
bnRlcm5hbCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKTogTmV3LCBy
ZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVzVmlkZW8u
CisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKTog
TmV3LCByZW5hbWVkIGZyb20gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVz
QXVkaW8uCisgICAgICAgIChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZXZpY2VOYW1l
c1ZpZGVvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RE
ZXZpY2VOYW1lc0F1ZGlvKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RGaXJzdFZpZGVvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKFdLVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuY3BwOgorICAgICAgICAod2Via2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyk6
IFVwZGF0ZSBmb3IgVXNlck1lZGlhUmVxdWVzdCBBUEkgY2hhbmdlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZVJlcXVlc3QpOiBHZXQgcmlkIG9mIHRoZSBib29sIHBhcmFtZXRlcnMuCisgICAgICAgICAgU3dp
dGNoIGF1ZGlvL3ZpZGVvIHBhcmFtZXRlciBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggZXZl
cnl3aGVyZSBlbHNlLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbik6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KTogR2V0IHJpZCBvZiB0aGUg
Ym9vbCBwYXJhbWV0ZXJzLgorICAgICAgICAgIFN3aXRjaCBhdWRpby92aWRlbyBwYXJhbWV0ZXIg
b3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxzZS4KKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6YWxsb3cpOiBTd2l0Y2ggYXVk
aW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyLgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpnZXREZXZpY2VOYW1lRm9yVUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojp2aWRlb0Rldmlj
ZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphdWRpb0RldmljZVVJRHMpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpmaXJzdEF1ZGlvRGV2aWNlVUlEKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6cmVxdWlyZXNBdWRpbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OnJlcXVpcmVz
VmlkZW8pOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Np
b25Gb3JGcmFtZSk6IEdldCByaWQgb2YgdGhlIGJvb2wgcGFyYW1ldGVycy4KKyAgICAgICAgICBT
d2l0Y2ggYXVkaW8vdmlkZW8gcGFyYW1ldGVyIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBl
dmVyeXdoZXJlIGVsc2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOiBHZXQgcmlkIG9mIGJvb2wgcGFyYW1zLCB0aGUg
ZGV2aWNlCisgICAgICAgICAgdmVjdG9ycyBoYXZlIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2Vp
dmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8KKyAgICAg
ICAgICBwYXJhbWV0ZXIgb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIGV2ZXJ5d2hlcmUgZWxz
ZS4gZGV2aWNlVUlEVmlkZW8gLT4gdmlkZW9EZXZpY2VVSUQsCisgICAgICAgIGRldmljZVVJREF1
ZGlvIC0+IGF1ZGlvRGV2aWNlVUlELgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24pOiBTd2l0Y2ggYXVkaW8vdmlkZW8gcGFy
YW1ldGVyIG9yZGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
IDIwMTUtMDktMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmFuIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxNCArMzgsMTQgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcgogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgdXNlck1lZGlhSUQsIGJv
b2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlv
KQorUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcykKIHsKLSAgICBSZWZQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIHJlcXVpcmVzQXVkaW8sIHJlcXVpcmVz
VmlkZW8sIGRldmljZVVJRHNWaWRlbywgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQsIGF1ZGlvRGV2aWNlVUlE
cywgdmlkZW9EZXZpY2VVSURzKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQodXNlck1lZGlh
SUQsIHJlcXVlc3QuZ2V0KCkpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVz
ZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2
aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwg
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcm
IHZpZGVvRGV2aWNlVUlEKQogewogICAgIGlmICghbV9wYWdlLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRpYUlELCBhbGxvd2VkLCB2aWRlb0Rldmlj
ZVVJRCwgYXVkaW9EZXZpY2VVSUQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2
aWNlVUlEKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFsbG93
ZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAkocmV2
aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUmVxdWVzdCh1aW50NjRf
dCB1c2VyTWVkaWFJRCwgYm9vbCBhdWRpbywgYm9vbCB2aWRlbywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNBdWRp
byk7CisgICAgUGFzc1JlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVk
aW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKIAog
ICAgIC8vIENhbGxlZCBieSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5IHdoZW4gYSBk
ZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRp
YVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwgYm9vbCBhbGxvdywgY29uc3QgU3RyaW5nJiB2
aWRlb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90LCBib29sIGFsbG93
LCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
VUlEKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eT4+IG1fcGVuZGluZ1JlcXVlc3RzOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxOSArMjYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBib29sIHJlcXVpcmVzQXVkaW8sIGJvb2wgcmVxdWlyZXNWaWRlbywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRldmljZVVJRHNWaWRlbywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRl
dmljZVVJRHNBdWRpbykKK1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IHVzZXJNZWRpYUlELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURz
KQogICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCiAgICAgLCBtX3VzZXJNZWRpYUlEKHVzZXJNZWRp
YUlEKQotICAgICwgbV9yZXF1aXJlc0F1ZGlvKHJlcXVpcmVzQXVkaW8pCi0gICAgLCBtX3JlcXVp
cmVzVmlkZW8ocmVxdWlyZXNWaWRlbykKLSAgICAsIG1fdmlkZW9EZXZpY2VVSURzKGRldmljZVVJ
RHNWaWRlbykKLSAgICAsIG1fYXVkaW9kZXZpY2VVSURzKGRldmljZVVJRHNBdWRpbykKKyAgICAs
IG1fdmlkZW9EZXZpY2VVSURzKHZpZGVvRGV2aWNlVUlEcykKKyAgICAsIG1fYXVkaW9EZXZpY2VV
SURzKGF1ZGlvRGV2aWNlVUlEcykKIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5OjphbGxvdyhjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlELCBjb25zdCBTdHJp
bmcmIGF1ZGlvRGV2aWNlVUlEKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OjphbGxvdyhjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25zdCBTdHJpbmcmIHZpZGVv
RGV2aWNlVUlEKQogewotICAgIG1fbWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lv
bkRlY2lzaW9uKG1fdXNlck1lZGlhSUQsIHRydWUsIHZpZGVvRGV2aWNlVUlELCBhdWRpb0Rldmlj
ZVVJRCk7CisgICAgbV9tYW5hZ2VyLmRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24obV91c2VyTWVkaWFJRCwgdHJ1ZSwgYXVkaW9EZXZpY2VVSUQsIHZpZGVvRGV2aWNlVUlEKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpkZW55KCkKQEAgLTUx
LDEyICs0OSw1IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6aW4KICAg
ICBtX21hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotY29uc3QgU3RyaW5nJiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpn
ZXREZXZpY2VOYW1lRm9yVUlEKGNvbnN0IFN0cmluZyYgVUlELCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNvdXJjZVdpdGhVSUQoVUlELCB0eXBlLCBudWxs
cHRyKS0+bGFiZWwoKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclAKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCByZXF1aXJlc0F1ZGlvLCBi
b29sIHJlcXVpcmVzVmlkZW8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzVmlkZW8s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXZpY2VVSURzQXVkaW8pCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlKFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCB1c2VyTWVkaWFJ
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZpZGVvRGV2aWNlVUlEcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGF1ZGlvRGV2aWNlVUlEcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5hZ2VyLCB1c2VyTWVkaWFJRCwg
cmVxdWlyZXNBdWRpbywgcmVxdWlyZXNWaWRlbywgZGV2aWNlVUlEc1ZpZGVvLCBkZXZpY2VVSURz
QXVkaW8pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KG1hbmFnZXIsIHVzZXJNZWRpYUlELCB2aWRlb0RldmljZVVJRHMsIGF1ZGlv
RGV2aWNlVUlEcykpOwogICAgIH0KIAogICAgIHZvaWQgYWxsb3coY29uc3QgU3RyaW5nJiB2aWRl
b0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCk7CkBAIC00MSwyOCArNDEs
MjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotICAgIGNvbnN0IFN0cmluZyYgZ2V0RGV2aWNlTmFtZUZvclVJRChjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLSNlbmRpZgorICAg
IGJvb2wgcmVxdWlyZXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzLnNp
emUoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9E
ZXZpY2VVSURzLnNpemUoKTsgfQogCi0gICAgYm9vbCByZXF1aXJlc0F1ZGlvKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1aXJlc0F1ZGlvOyB9Ci0gICAgYm9vbCByZXF1aXJlc1ZpZGVvKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1aXJlc1ZpZGVvOyB9Ci0gICAgCiAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZpZGVvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9EZXZpY2VVSURzOyB9
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlvRGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXVkaW9kZXZpY2VVSURzOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGF1ZGlv
RGV2aWNlVUlEcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9EZXZpY2VVSURzOyB9CiAgICAgCiAg
ICAgY29uc3QgU3RyaW5nJiBmaXJzdFZpZGVvRGV2aWNlVUlEKCkgY29uc3QgeyByZXR1cm4gIXZp
ZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHZpZGVvRGV2aWNlVUlEcygpLmF0KDApIDogZW1w
dHlTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgZmlyc3RBdWRpb0RldmljZVVJRCgpIGNv
bnN0IHsgcmV0dXJuICFhdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyBhdWRpb0RldmljZVVJ
RHMoKS5hdCgwKSA6IGVtcHR5U3RyaW5nKCk7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiwgdWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgcmVxdWlyZXNBdWRpbywgYm9vbCByZXF1
aXJlc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKTsKKyAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgdWlu
dDY0X3QgdXNlck1lZGlhSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0RldmljZVVJRHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMpOwogCiAgICAgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICB1aW50NjRfdCBt
X3VzZXJNZWRpYUlEOwotICAgIGJvb2wgbV9yZXF1aXJlc0F1ZGlvOwotICAgIGJvb2wgbV9yZXF1
aXJlc1ZpZGVvOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fdmlkZW9EZXZpY2VVSURzOwotICAgIFZl
Y3RvcjxTdHJpbmc+IG1fYXVkaW9kZXZpY2VVSURzOworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXVk
aW9EZXZpY2VVSURzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTkwMjA2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyNzksMTMgKzUyNzksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2Nh
dGlvblBlcgogICAgIHJlcXVlc3QtPmRlbnkoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29s
IHZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc0F1ZGlvKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKQog
ewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcikpOwotICAg
IFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVzdCh1c2VyTWVkaWFJRCwg
YXVkaW8sIHZpZGVvLCBkZXZpY2VVSURzVmlkZW8sIGRldmljZVVJRHNBdWRpbyk7CisgICAgUmVm
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBtX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KHVzZXJNZWRpYUlELCBhdWRp
b0RldmljZVVJRHMsIHZpZGVvRGV2aWNlVUlEcyk7CiAKICAgICBpZiAoIW1fdWlDbGllbnQtPmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCAqZnJhbWUsICpv
cmlnaW4uZ2V0KCksICpyZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmVxdWVzdC0+ZGVueSgpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgyLDcgKzExODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIs
IHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1p
c3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGV2aWNlVUlEc1ZpZGVvLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGV2aWNl
VUlEc0F1ZGlvKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
dWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXVkaW9EZXZpY2VVSURzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmlkZW9EZXZpY2VVSURzKTsKIAogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAg
ICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcs
NyArMjY3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgICMgTWVkaWFTdGVhbSBtZXNzYWdlcwotICAgIFJlcXVlc3RVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBib29sIGF1ZGlvLCBib29sIHZpZGVvLCBW
ZWN0b3I8U3RyaW5nPiBkZXZpY2VVSURzVmlkZW8sIFZlY3RvcjxTdHJpbmc+IGRldmljZVVJRHNB
dWRpbykKKyAgICBSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4gYXVkaW9EZXZpY2VVSURzLCBWZWN0b3I8U3RyaW5nPiB2aWRlb0RldmljZVVJ
RHMpCiAjZW5kaWYKIAogICAgICMgTm90aWZpY2F0aW9uIG1lc3NhZ2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE2ICszMyw5IEBAIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RHZXQKIH0KIAogCi12b2lkIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxv
d0Jlc3QoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZikKK3ZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYs
IFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlELCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCkK
IHsKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlID0gdG9JbXBsKHVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UmVmKS0+Zmlyc3RWaWRlb0RldmljZVVJRCgpOwotICAgIGNvbnN0IFN0cmlu
ZyYgYXVkaW9EZXZpY2UgPSB0b0ltcGwodXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpLT5m
aXJzdEF1ZGlvRGV2aWNlVUlEKCk7Ci0gICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmKS0+YWxsb3codmlkZW9EZXZpY2UsIGF1ZGlvRGV2aWNlKTsKLX0KLQotdm9pZCBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFJlZiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgV0tTdHJpbmdSZWYgdmlkZW9EZXZp
Y2VVSUQsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNlVUlEKQotewotICAgIHRvSW1wbCh1c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFJlZiktPmFsbG93KHRvV1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlE
KSwgdG9XVEZTdHJpbmcoYXVkaW9EZXZpY2VVSUQpKTsKKyAgICB0b0ltcGwodXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RSZWYpLT5hbGxvdyh0b1dURlN0cmluZyhhdWRpb0RldmljZVVJRCksIHRv
V1RGU3RyaW5nKHZpZGVvRGV2aWNlVUlEKSk7CiB9CiAKIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdERlbnkoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFJlZikKQEAgLTUwLDM2ICs0MywyMiBAQCB2b2lkIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3REZW55KFdLCiAgICAgdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UmVmKS0+ZGVueSgpOwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3REZXZpY2VOYW1lc1ZpZGVvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYg
dXNlck1lZGlhUGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVz
ZXJNZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBX
S011dGFibGVBcnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9y
IChhdXRvJiBuYW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT52aWRlb0Rldmlj
ZVVJRHMoKSkgewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQ
ZXJtaXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFy
cmF5LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAg
fQorICAgIGZvciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25S
ZWYpLT52aWRlb0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXks
IHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGFycmF5OwogfQogCi1XS0FycmF5UmVmIFdLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3REZXZpY2VOYW1lc0F1ZGlvKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYgdXNl
ck1lZGlhUGVybWlzc2lvblJlZikKK1dLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdEF1ZGlvRGV2aWNlVUlEcyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVzZXJN
ZWRpYVBlcm1pc3Npb25SZWYpCiB7CiAgICAgV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBXS011
dGFibGVBcnJheUNyZWF0ZSgpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgZm9yIChh
dXRvJiBuYW1lIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYpLT5hdWRpb0RldmljZVVJ
RHMoKSkgewotICAgICAgICBTdHJpbmcgZGV2aWNlTmFtZSA9IHRvSW1wbCh1c2VyTWVkaWFQZXJt
aXNzaW9uUmVmKS0+Z2V0RGV2aWNlTmFtZUZvclVJRChuYW1lLCBXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5
LCB0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRldmljZU5hbWUpLnB0cigpKSk7Ci0gICAgfQor
ICAgIGZvciAoYXV0byYgZGV2aWNlVUlEIDogdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Npb25SZWYp
LT5hdWRpb0RldmljZVVJRHMoKSkKKyAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXksIHRv
QVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGV2aWNlVUlEKS5wdHIoKSkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGFycmF5OwogfQotCi1XS1N0cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmIHVz
ZXJNZWRpYVBlcm1pc3Npb25SZWYpCi17Ci0gICAgcmV0dXJuICF0b0ltcGwodXNlck1lZGlhUGVy
bWlzc2lvblJlZiktPnZpZGVvRGV2aWNlVUlEcygpLmlzRW1wdHkoKSA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChXS1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0RGV2aWNlTmFtZXNWaWRlbyh1c2VyTWVkaWFQZXJtaXNzaW9uUmVmKSwgMCkpIDog
cmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIiIpKTsKLX0KLQotV0tTdHJpbmdSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZp
cnN0QXVkaW9EZXZpY2VVSUQoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiB1c2VyTWVk
aWFQZXJtaXNzaW9uUmVmKQotewotICAgIHJldHVybiAhdG9JbXBsKHVzZXJNZWRpYVBlcm1pc3Np
b25SZWYpLT5hdWRpb0RldmljZVVJRHMoKS5pc0VtcHR5KCkgPyByZWludGVycHJldF9jYXN0PFdL
U3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdERldmljZU5hbWVzQXVkaW8odXNlck1lZGlhUGVybWlzc2lvblJlZiksIDApKSA6IHJlaW50
ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIi
KSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgJKHJldmlzaW9uIDE5MDIwNikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxMSBAQCBleHRlcm4gIkMiIHsK
IAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRUeXBl
SUQoKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
QmVzdChXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UmVmLCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCwgV0tTdHJpbmdSZWYgYXVkaW9EZXZp
Y2VVSUQpOworV0tfRVhQT1JUIHZvaWQgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEFsbG93
KFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFdLU3RyaW5nUmVmIGF1ZGlvRGV2aWNl
VUlELCBXS1N0cmluZ1JlZiB2aWRlb0RldmljZVVJRCk7CiBXS19FWFBPUlQgdm9pZCBXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGVueShXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVm
KTsKIAotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERl
dmljZU5hbWVzVmlkZW8oV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZik7Ci1XS19FWFBP
UlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0RGV2aWNlTmFtZXNBdWRp
byhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLSAgICAKLVdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RWaWRlb0RldmljZVVJRChX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Rmlyc3RBdWRpb0RldmljZVVJRChXS1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RWaWRlb0RldmljZVVJRHMoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0QXVkaW9EZXZpY2VVSURzKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOwogCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsMTAgKzcxLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXEKIAogICAgIHByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7CiAKLSAgICBjb25zdCBT
dHJpbmcmIHZpZGVvRGV2aWNlID0gcHJpdi0+cmVxdWVzdC0+Zmlyc3RWaWRlb0RldmljZVVJRCgp
OwotICAgIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2UgPSBwcml2LT5yZXF1ZXN0LT5maXJzdEF1
ZGlvRGV2aWNlVUlEKCk7CisgICAgYXV0byB2aWRlb0RldmljZVVJRHMgPSBwcml2LT5yZXF1ZXN0
LT52aWRlb0RldmljZVVJRHMoKTsKKyAgICBhdXRvIGF1ZGlvRGV2aWNlVUlEcyA9IHByaXYtPnJl
cXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpOworCisgICAgYXV0byB2aWRlb0RldmljZSA9ICF2aWRl
b0RldmljZVVJRHMuaXNFbXB0eSgpID8gdmlkZW9EZXZpY2VVSURzWzBdIDogZW1wdHlTdHJpbmco
KTsKKyAgICBhdXRvIGF1ZGlvRGV2aWNlID0gIWF1ZGlvRGV2aWNlVUlEcy5pc0VtcHR5KCkgPyBh
dWRpb0RldmljZVVJRHNbMF0gOiBlbXB0eVN0cmluZygpOwogICAgIAotICAgIHByaXYtPnJlcXVl
c3QtPmFsbG93KHZpZGVvRGV2aWNlLCBhdWRpb0RldmljZSk7CisgICAgcHJpdi0+cmVxdWVzdC0+
YWxsb3coYXVkaW9EZXZpY2UsIHZpZGVvRGV2aWNlKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3REZW55KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0KiBy
ZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAxOTAyMDYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTIsMyArMzEyLDI2IEBACiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1lZGlh
LmVuZHBvaW50c3RyZWFtLnhwYyIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZW1l
ZGlhLmVuZHBvaW50cGxheWJhY2tzZXNzaW9uLnhwYyIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cGlja2VyLnhwYyIpKQorCisKKzs7IENhbWVyYSBhY2Nl
c3MKKyhhbGxvdyBkZXZpY2UtY2FtZXJhKQorKGFsbG93IGZpbGUtcmVhZCoKKyAgICAobGl0ZXJh
bCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLmNvcmVtZWRpYSIpCisgICAgKGhvbWUt
bGl0ZXJhbCAiL0xpYnJhcnkvUHJlZmVyZW5jZXMvY29tLmFwcGxlLmNvcmVtZWRpYSIpKQorKGFs
bG93IG1hY2gtbG9va3VwIChleHRlbnNpb24gImNvbS5hcHBsZS5hcHAtc2FuZGJveC5tYWNoIikp
CisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jbWlvLkFw
cGxlQ2FtZXJhQXNzaXN0YW50IikKKyAgICA7OyBBcHBsZSBEQUwgYXNzaXN0YW50cworICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNtaW8uVkRDQXNzaXN0YW50IikKKyAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5jbWlvLkFWQ0Fzc2lzdGFudCIpCisgICAgKGdsb2JhbC1uYW1lICJjb20u
YXBwbGUuY21pby5JSURDVmlkZW9Bc3Npc3RhbnQiKQorICAgIDs7IFF1aWNrVGltZUlJRENEaWdp
dGl6ZXIgYXNzaXN0YW50CisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuSUlEQ0Fzc2lzdGFu
dCIpKQorKGFsbG93IGlva2l0LW9wZW4KKyAgICA7OyBRdWlja1RpbWVVU0JWRENEaWdpdGl6ZXIK
KyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPVVNCRGV2aWNlVXNlckNsaWVudFYyIikK
KyAgICAoaW9raXQtdXNlci1jbGllbnQtY2xhc3MgIklPVVNCSW50ZXJmYWNlVXNlckNsaWVudFYy
IikpCisKKzs7IE1pY3JvcGhvbmUKKyhhbGxvdyBkZXZpY2UtbWljcm9waG9uZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlz
aW9uIDE5MDIwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6CiAgICAg
QVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSByZXF1ZXN0
LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1l
LT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHJlcXVlc3QucmVxdWly
ZXNBdWRpbygpLCByZXF1ZXN0LnJlcXVpcmVzVmlkZW8oKSwgcmVxdWVzdC52aWRlb0RldmljZVVJ
RHMoKSwgcmVxdWVzdC5hdWRpb0RldmljZVVJRHMoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVx
dWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
LCByZXF1ZXN0LmF1ZGlvRGV2aWNlVUlEcygpLCByZXF1ZXN0LnZpZGVvRGV2aWNlVUlEcygpKSk7
CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1
ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjoKICAgICBtX2lkVG9SZXF1ZXN0TWFwLnJl
bW92ZShyZXF1ZXN0SUQpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRlbywgY29uc3Qg
U3RyaW5nJiBkZXZpY2VVSURBdWRpbykKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpkaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKQogewogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiByZXF1ZXN0ID0gbV9pZFRvUmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjo6CiAgICAgbV9yZXF1ZXN0VG9JRE1hcC5yZW1vdmUocmVxdWVzdCk7CiAKICAgICBp
ZiAoYWxsb3dlZCkKLSAgICAgICAgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZChkZXZp
Y2VVSURWaWRlbywgZGV2aWNlVUlEQXVkaW8pOworICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFB
Y2Nlc3NHcmFudGVkKGF1ZGlvRGV2aWNlVUlELCB2aWRlb0RldmljZVVJRCk7CiAgICAgZWxzZQog
ICAgICAgICByZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NEZW5pZWQoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRp
YVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkocmV2aXNpb24gMTkw
MjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dCYpOwogICAgIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNpb24odWludDY0
X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURWaWRl
bywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbyk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNl
ck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93
ZWQsIGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZp
Y2VVSUQpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDIw
NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMxMiw5ICszMzEyLDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZl
Tm90aWZpY2F0aW9uUGVybQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGRldmljZVVJRFZpZGVvLCBjb25z
dCBTdHJpbmcmIGRldmljZVVJREF1ZGlvKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VVSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VV
SUQpCiB7Ci0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZGlkUmVjZWl2
ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1c2VyTWVkaWFJRCwgYWxsb3dlZCwgZGV2aWNl
VUlEVmlkZW8sIGRldmljZVVJREF1ZGlvKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5kaWRSZWNlaXZlVXNlck1lZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVzZXJNZWRp
YUlELCBhbGxvd2VkLCBhdWRpb0RldmljZVVJRCwgdmlkZW9EZXZpY2VVSUQpOwogfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3dlZCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIFdLX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVVc2VyTWVkaWFQZXJtaXNzaW9uRGVjaXNp
b24odWludDY0X3QgdXNlck1lZGlhSUQsIGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBkZXZp
Y2VVSURWaWRlbywgY29uc3QgU3RyaW5nJiBkZXZpY2VVSURBdWRpbyk7CisgICAgV0tfRVhQT1JU
IHZvaWQgZGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGF1ZGlvRGV2aWNlVUlELCBjb25z
dCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTkwMjA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgIyBNZWRpYVN0ZWFtCi0gICAgRGlkUmVjZWl2ZVVzZXJNZWRpYVBlcm1pc3Np
b25EZWNpc2lvbih1aW50NjRfdCB1c2VyTWVkaWFJRCwgYm9vbCBhbGxvd2VkLCBTdHJpbmcgZGV2
aWNlVUlEVmlkZW8sIFN0cmluZyBkZXZpY2VVSURBdWRpbykKKyAgICBEaWRSZWNlaXZlVXNlck1l
ZGlhUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIGFsbG93ZWQs
IFN0cmluZyBhdWRpb0RldmljZVVJRCwgU3RyaW5nIHZpZGVvRGV2aWNlVUlEKQogI2VuZGlmCiAK
ICAgICAjIE5vdGlmaWNhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjA2
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTUtMDktMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlciBtZWRpYSByZXF1ZXN0IGludGVybmFsIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6
Y2FuY2VsUmVxdWVzdCk6IFB1dCBVc2VyTWVkaWFSZXF1ZXN0c01hcCBpbiBhIGxvY2FsIGluc3Rl
YWQgb3IgY2FsbGluZworICAgICAgICAgIHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkgdGhyZWUgdGlt
ZXMuCisgICAgICAgICgtW1dlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIGFsbG93XSk6IEdldCBy
aWQgb2YgdW5uZWVkZWQgbG9jYWwgdmFyaWFibGVzLgorICAgICAgICAoLVtXZWJVc2VyTWVkaWFQ
b2xpY3lMaXN0ZW5lciBhbGxvd0RldmljZVdpdGhWaWRlb1VJRF0pOiBEZWxldGVkLCB1bnVzZWQu
CisKIDIwMTUtMDktMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2FibGUgUXVpY2tMb29rIG9uIHR2T1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDE5
MDIwNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBAaW50ZXJmYWNlIFdlYlVz
ZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogCiB9CiAtIChpZClpbml0V2l0aFVzZXJNZWRpYVJlcXVl
c3Q6KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4pcmVxdWVzdDsKIC0gKHZvaWQpY2FuY2Vs
UmVxdWVzdDsKLS0gKHZvaWQpYWxsb3dEZXZpY2VXaXRoVmlkZW9VSUQ6KGNvbnN0IFN0cmluZyYp
dmlkZW9VSUQgYW5kQXVkaW9VSUQ6KGNvbnN0IFN0cmluZyYpYXVkaW9VSUQ7CiAtICh2b2lkKWRl
bnk7CiBAZW5kCiAKQEAgLTExNCwxMiArMTEzLDEzIEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2kKIAogdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OmNhbmNlbFJlcXVl
c3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBVc2VyTWVkaWFSZXF1ZXN0c01h
cDo6aXRlcmF0b3IgaXQgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmZpbmQoJnJlcXVlc3QpOwot
ICAgIGlmIChpdCA9PSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmVuZCgpKQorICAgIFVzZXJNZWRp
YVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCk7CisgICAg
VXNlck1lZGlhUmVxdWVzdHNNYXA6Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdHNNYXAuZmluZCgmcmVx
dWVzdCk7CisgICAgaWYgKGl0ID09IHJlcXVlc3RzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBbaXQtPnZhbHVlIGNhbmNlbFJlcXVlc3RdOwotICAgIHVzZXJNZWRpYVJlcXVlc3Rz
TWFwKCkucmVtb3ZlKGl0KTsKKyAgICByZXF1ZXN0c01hcC5yZW1vdmUoaXQpOwogfQogCiAKQEAg
LTE1MywyMiArMTUzLDggQEAgLSAodm9pZClhbGxvdwogICAgIGlmICghX3JlcXVlc3QpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBjb25zdCBTdHJpbmcmIHZpZGVvVUlEID0gX3JlcXVlc3Qt
PmZpcnN0VmlkZW9EZXZpY2VVSUQoKTsKLSAgICBjb25zdCBTdHJpbmcmIGF1ZGlvVUlEID0gX3Jl
cXVlc3QtPmZpcnN0QXVkaW9EZXZpY2VVSUQoKTsKLSAgICAKLSAgICBfcmVxdWVzdC0+dXNlck1l
ZGlhQWNjZXNzR3JhbnRlZCh2aWRlb1VJRCwgYXVkaW9VSUQpOwotICAgIFJlbW92ZVJlcXVlc3RG
cm9tTWFwKF9yZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotfQorICAgIF9yZXF1ZXN0LT51c2VyTWVk
aWFBY2Nlc3NHcmFudGVkKF9yZXF1ZXN0LT5hbGxvd2VkQXVkaW9EZXZpY2VVSUQoKSwgX3JlcXVl
c3QtPmFsbG93ZWRWaWRlb0RldmljZVVJRCgpKTsKIAotLSAodm9pZClhbGxvd0RldmljZVdpdGhW
aWRlb1VJRDooY29uc3QgU3RyaW5nJil2aWRlb1VJRCBhbmRBdWRpb1VJRDooY29uc3QgU3RyaW5n
JilhdWRpb1VJRAotewotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKCFfcmVxdWVz
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIF9yZXF1ZXN0LT51c2VyTWVkaWFBY2Nlc3NH
cmFudGVkKHZpZGVvVUlELCBhdWRpb1VJRCk7Ci0gICAgCiAgICAgUmVtb3ZlUmVxdWVzdEZyb21N
YXAoX3JlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAyMTcpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wOS0yNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCB1
c2VyIG1lZGlhIHJlcXVlc3QgaW50ZXJuYWwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1VzZXJNZWRp
YS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdENhbGxCYWNrKTogVXBkYXRlIGZvciBBUEkgY2hhbmdlcy4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RJZlBvc3NpYmxlKTogRGl0dG8uCisKIDIwMTUtMDktMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgcnVubmluZyB1bml0IHRlc3RzIG9uIGlP
UyBTaW11bGF0b3IgdGVzdCBib3QKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Vc2VyTWVkaWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Vc2VyTWVkaWEuY3BwCShyZXZpc2lvbiAxOTAyMDYpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvVXNlck1lZGlhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsMjUgQEAgc3RhdGljIGJvb2wgZG9uZTsKIAogdm9pZCBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxCYWNrKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiBwZXJt
aXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogLyogY2xpZW50SW5mbyAqLykKIHsKLSAgICBXS1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3dCZXN0KHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAg
ICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBhdWRpb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZpY2VVSURzKHBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBX
S1JldGFpblB0cjxXS0FycmF5UmVmPiB2aWRlb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKHBlcm1pc3Npb25SZXF1ZXN0KTsKKworICAgIGlm
IChXS0FycmF5R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMuZ2V0KCkpIHx8IFdLQXJyYXlHZXRTaXpl
KGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSkpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHZpZGVvRGV2aWNlVUlEOworICAgICAgICBpZiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZp
Y2VVSURzLmdldCgpKSkKKyAgICAgICAgICAgIHZpZGVvRGV2aWNlVUlEID0gcmVpbnRlcnByZXRf
Y2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHZpZGVvRGV2aWNlVUlEcy5n
ZXQoKSwgMCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWRlb0RldmljZVVJRCA9IFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKworICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gYXVkaW9EZXZpY2VVSUQ7CisgICAgICAgIGlmIChXS0FycmF5R2V0U2l6ZShh
dWRpb0RldmljZVVJRHMuZ2V0KCkpKQorICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSByZWlu
dGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYXVkaW9EZXZp
Y2VVSURzLmdldCgpLCAwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF1ZGlvRGV2aWNl
VUlEID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOworCisgICAgICAgIFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RBbGxvdyhwZXJtaXNzaW9uUmVxdWVzdCwgdmlkZW9EZXZp
Y2VVSUQuZ2V0KCksIGF1ZGlvRGV2aWNlVUlELmdldCgpKTsKKyAgICB9CisKICAgICBkb25lID0g
dHJ1ZTsKIH0KIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE5MDIwNikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE5LDkgKzE2MTksMjQgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKGF1dG8mIHJlcXVlc3QgOiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cykgewotICAg
ICAgICBpZiAobV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAgICAgICAgICBp
ZiAoV0tBcnJheUdldFNpemUoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdERldmljZU5hbWVz
VmlkZW8ocmVxdWVzdC5nZXQoKSkpIHx8IFdLQXJyYXlHZXRTaXplKFdLVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3REZXZpY2VOYW1lc0F1ZGlvKHJlcXVlc3QuZ2V0KCkpKSkKLSAgICAgICAgICAg
ICAgICBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QWxsb3cocmVxdWVzdC5nZXQoKSwgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEZpcnN0VmlkZW9EZXZpY2VVSUQocmVxdWVzdC5nZXQo
KSksIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RGaXJzdEF1ZGlvRGV2aWNlVUlEKHJlcXVl
c3QuZ2V0KCkpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gYXVkaW9EZXZpY2VV
SURzID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEF1ZGlvRGV2aWNlVUlEcyhyZXF1ZXN0
LmdldCgpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gdmlkZW9EZXZpY2VVSURz
ID0gV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFZpZGVvRGV2aWNlVUlEcyhyZXF1ZXN0Lmdl
dCgpKTsKKworICAgICAgICBpZiAobV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkICYmIChX
S0FycmF5R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMuZ2V0KCkpIHx8IFdLQXJyYXlHZXRTaXplKGF1
ZGlvRGV2aWNlVUlEcy5nZXQoKSkpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gdmlkZW9EZXZpY2VVSUQ7CisgICAgICAgICAgICBpZiAoV0tBcnJheUdldFNpemUodmlk
ZW9EZXZpY2VVSURzLmdldCgpKSkKKyAgICAgICAgICAgICAgICB2aWRlb0RldmljZVVJRCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh2aWRlb0Rl
dmljZVVJRHMuZ2V0KCksIDApKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2
aWRlb0RldmljZVVJRCA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKworICAg
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF1ZGlvRGV2aWNlVUlEOworICAgICAg
ICAgICAgaWYgKFdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihX
S0FycmF5R2V0SXRlbUF0SW5kZXgoYXVkaW9EZXZpY2VVSURzLmdldCgpLCAwKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXVkaW9EZXZpY2VVSUQgPSBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiIik7CisKKyAgICAgICAgICAgIFdLVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RBbGxvdyhyZXF1ZXN0LmdldCgpLCB2aWRlb0RldmljZVVJRC5nZXQoKSwgYXVkaW9E
ZXZpY2VVSUQuZ2V0KCkpOworCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0tVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdERlbnkocmVxdWVzdC5nZXQoKSk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>