<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>516442</bug_id>
          
          <creation_ts>2026-02-21 07:31:52 +0000</creation_ts>
          <short_desc>Wacom tablet always shows 3 buttons even if fewer are supported</short_desc>
          <delta_ts>2026-02-27 23:33:37 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>systemsettings</product>
          <component>kcm_tablet</component>
          <version>6.6.0</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>regression</keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kat Pavlu">realkpavel</reporter>
          <assigned_to name="Plasma Bugs List">plasma-bugs-null</assigned_to>
          <cc>aleixpol</cc>
    
    <cc>josh</cc>
    
    <cc>nate</cc>
          
          <cf_commitlink>https://invent.kde.org/plasma/plasma-desktop/-/commit/fbed2cb25a460e4d6dd2c85b69330b60e5cac76a</cf_commitlink>
          <cf_versionfixedin>6.6.1</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2496958</commentid>
    <comment_count>0</comment_count>
      <attachid>189907</attachid>
    <who name="Kat Pavlu">realkpavel</who>
    <bug_when>2026-02-21 07:31:52 +0000</bug_when>
    <thetext>Created attachment 189907
libwacom-list-local-devices output

SUMMARY
I have a Thinkbook 14s Yoga. All the pens supported for this model in libwacom only have one button (see attachment). PLasma used to correctly show one button in the KCM until 6.5.4, but now it always shows 3 buttons.

I have taken a look at the logs and code listings and I think this is a regression introduced by https://invent.kde.org/plasma/plasma-desktop/-/commit/b1c4cf7b11a9f320709246a47056542ac8093a46. If I understand the code correctly, the newly introduced logic now effectively does 
numButtons = max( (numButtons on any stylus),  3). 

Included is a patched kcmtablet.cpp, where the logic is changed to:
numButtons = tabletSupported? max(numButtons on any stulys), 3

which is what I think was intended here.
I can try getting a second drive and buiding this to test it .

STEPS TO REPRODUCE
1. Open the Drawing Tablet KCM on a Lenovo Yoga device

Operating System: Fedora Linux 43
KDE Plasma Version: 6.6.0
KDE Frameworks Version: 6.23.0
Qt Version: 6.10.1
Kernel Version: 6.18.12-200.fc43.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 8 × 11th Gen Intel® Core™ i7-1165G7 @ 2.80GHz
Memory: 16 GiB of RAM (15.4 GiB usable)
Graphics Processor: Intel® Iris® Xe Graphics
Manufacturer: LENOVO
Product Name: 20WE
System Version: ThinkBook 14s Yoga ITL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2496959</commentid>
    <comment_count>1</comment_count>
      <attachid>189908</attachid>
    <who name="Kat Pavlu">realkpavel</who>
    <bug_when>2026-02-21 07:32:23 +0000</bug_when>
    <thetext>Created attachment 189908
patch for the bug (not yet tested)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2497376</commentid>
    <comment_count>2</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2026-02-22 20:34:08 +0000</bug_when>
    <thetext>A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3567</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2497777</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Goins">josh</who>
    <bug_when>2026-02-23 21:21:16 +0000</bug_when>
    <thetext>Git commit fbed2cb25a460e4d6dd2c85b69330b60e5cac76a by Joshua Goins, on behalf of Kat Pavlu.
Committed on 23/02/2026 at 21:21.
Pushed by redstrate into branch &apos;master&apos;.

kcms/tablet: Stop showing non existent buttons

Prevents the Tablet kcm from always showing 3 buttons on a pen if all supported pens have fewer than that.

M  +1    -0    kcms/tablet/kcmtablet.cpp

https://invent.kde.org/plasma/plasma-desktop/-/commit/fbed2cb25a460e4d6dd2c85b69330b60e5cac76a</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>189907</attachid>
            <date>2026-02-21 07:31:52 +0000</date>
            <delta_ts>2026-02-21 07:31:52 +0000</delta_ts>
            <desc>libwacom-list-local-devices output</desc>
            <filename>penlist.txt</filename>
            <type>text/plain</type>
            <size>5474</size>
            <attacher name="Kat Pavlu">realkpavel</attacher>
            
              <data encoding="base64">ZGV2aWNlczoKICAtIG5hbWU6ICdJU0R2NCA1MjZhJwogICAgYnVzOiAnaTJjJwogICAgdmlkOiAw
eDA1NmEKICAgIHBpZDogMHg1MjZhCiAgICBub2RlczoKICAgICAgLSAvZGV2L2lucHV0L2V2ZW50
NTogJ1dhY29tIEhJRCA1MjZBIFBlbicKICAgIHN0eWxpOgogICAgICAtIGlkOiAweDEKICAgICAg
ICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdtb2Jp
bGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25z
OiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRv
bicKICAgICAgLSBpZDogMHgxMQogICAgICAgIHZpZDogMHgwNTZhCiAgICAgICAgbmFtZTogJ0FF
UyBQZW4nCiAgICAgICAgdHlwZTogJ21vYmlsZScKICAgICAgICBheGVzOiBbJ3gnLCAneScgLCAn
cHJlc3N1cmUnXQogICAgICAgIGJ1dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwog
ICAgICAgIGVyYXNlcl90eXBlOiAnYnV0dG9uJwogICAgICAtIGlkOiAweDE5CiAgICAgICAgdmlk
OiAweDA1NmEKICAgICAgICBuYW1lOiAnQUVTIFBlbicKICAgICAgICB0eXBlOiAnbW9iaWxlJwog
ICAgICAgIGF4ZXM6IFsneCcsICd5JyAsICdwcmVzc3VyZSddCiAgICAgICAgYnV0dG9uczogMQog
ICAgICAgIGlzX2VyYXNlcjogJ3RydWUnCiAgICAgICAgZXJhc2VyX3R5cGU6ICdidXR0b24nCiAg
ICAgIC0gaWQ6IDB4MjEKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMgUGVu
JwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3ByZXNz
dXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAg
ICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHgzMQogICAgICAgIHZpZDogMHgw
NTZhCiAgICAgICAgbmFtZTogJ0FFUyBQZW4nCiAgICAgICAgdHlwZTogJ21vYmlsZScKICAgICAg
ICBheGVzOiBbJ3gnLCAneScgLCAncHJlc3N1cmUnXQogICAgICAgIGJ1dHRvbnM6IDEKICAgICAg
ICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVyYXNlcl90eXBlOiAnYnV0dG9uJwogICAgICAt
IGlkOiAweDM5CiAgICAgICAgdmlkOiAweDA1NmEKICAgICAgICBuYW1lOiAnQUVTIFBlbicKICAg
ICAgICB0eXBlOiAnbW9iaWxlJwogICAgICAgIGF4ZXM6IFsneCcsICd5JyAsICdwcmVzc3VyZSdd
CiAgICAgICAgYnV0dG9uczogMQogICAgICAgIGlzX2VyYXNlcjogJ3RydWUnCiAgICAgICAgZXJh
c2VyX3R5cGU6ICdidXR0b24nCiAgICAgIC0gaWQ6IDB4NDkKICAgICAgICB2aWQ6IDB4MDU2YQog
ICAgICAgIG5hbWU6ICdCYW1ib28gSW5rJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAg
YXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAg
aXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBp
ZDogMHg3MQogICAgICAgIHZpZDogMHgwNTZhCiAgICAgICAgbmFtZTogJ0JhbWJvbyBJbmsnCiAg
ICAgICAgdHlwZTogJ21vYmlsZScKICAgICAgICBheGVzOiBbJ3gnLCAneScgLCAncHJlc3N1cmUn
XQogICAgICAgIGJ1dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVy
YXNlcl90eXBlOiAnYnV0dG9uJwogICAgICAtIGlkOiAweDIxMQogICAgICAgIHZpZDogMHgwNTZh
CiAgICAgICAgbmFtZTogJ0RlbGwgQWN0aXZlIFBlbiAtIFBONzMyMEEnCiAgICAgICAgdHlwZTog
J21vYmlsZScKICAgICAgICBheGVzOiBbJ3gnLCAneScgLCAncHJlc3N1cmUnXQogICAgICAgIGJ1
dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVyYXNlcl90eXBlOiAn
YnV0dG9uJwogICAgICAtIGlkOiAweDIxOQogICAgICAgIHZpZDogMHgwNTZhCiAgICAgICAgbmFt
ZTogJ0xlbm92byBEaWdpdGFsIFBlbiAyJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAg
YXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAg
aXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBp
ZDogMHgyMjEKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAg
ICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10K
ICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFz
ZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHgyMzEKICAgICAgICB2aWQ6IDB4MDU2YQog
ICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhl
czogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNf
ZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDog
MHgyNzEKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdCYW1ib28gSW5rJwogICAg
ICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10K
ICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFz
ZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHg0MjEKICAgICAgICB2aWQ6IDB4MDU2YQog
ICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhl
czogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNf
ZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDog
MHg0MzEKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAg
IHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAg
ICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJf
dHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHg2MjEKICAgICAgICB2aWQ6IDB4MDU2YQogICAg
ICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczog
Wyd4JywgJ3knICwgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJh
c2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHg2
MzEKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdEZWxsIEFjdGl2ZSBQZW4nCiAg
ICAgICAgdHlwZTogJ21vYmlsZScKICAgICAgICBheGVzOiBbJ3gnLCAneScgLCAncHJlc3N1cmUn
XQogICAgICAgIGJ1dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVy
YXNlcl90eXBlOiAnYnV0dG9uJwogICAgICAtIGlkOiAweDgwNTEKICAgICAgICB2aWQ6IDB4MDU2
YQogICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAg
YXhlczogWyd4JywgJ3knICwgJ3RpbHQnLCAncHJlc3N1cmUnXQogICAgICAgIGJ1dHRvbnM6IDAK
ICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVyYXNlcl90eXBlOiAnYnV0dG9uJwog
ICAgICAtIGlkOiAweDgwNWIKICAgICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMg
UGVuJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3Rp
bHQnLCAncHJlc3N1cmUnXQogICAgICAgIGJ1dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0
cnVlJwogICAgICAgIGVyYXNlcl90eXBlOiAnYnV0dG9uJwogICAgICAtIGlkOiAweDgwNmIKICAg
ICAgICB2aWQ6IDB4MDU2YQogICAgICAgIG5hbWU6ICdBRVMgUGVuJwogICAgICAgIHR5cGU6ICdt
b2JpbGUnCiAgICAgICAgYXhlczogWyd4JywgJ3knICwgJ3RpbHQnLCAncHJlc3N1cmUnXQogICAg
ICAgIGJ1dHRvbnM6IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVyYXNlcl90
eXBlOiAnYnV0dG9uJwogICAgICAtIGlkOiAweDgwN2IKICAgICAgICB2aWQ6IDB4MDU2YQogICAg
ICAgIG5hbWU6ICdCYW1ib28gSW5rIFBsdXMnCiAgICAgICAgdHlwZTogJ21vYmlsZScKICAgICAg
ICBheGVzOiBbJ3gnLCAneScgLCAndGlsdCcsICdwcmVzc3VyZSddCiAgICAgICAgYnV0dG9uczog
MQogICAgICAgIGlzX2VyYXNlcjogJ3RydWUnCiAgICAgICAgZXJhc2VyX3R5cGU6ICdidXR0b24n
CiAgICAgIC0gaWQ6IDB4ODBhMwogICAgICAgIHZpZDogMHgwNTZhCiAgICAgICAgbmFtZTogJ0xl
bm92byBTbGltIFBlbicKICAgICAgICB0eXBlOiAnbW9iaWxlJwogICAgICAgIGF4ZXM6IFsneCcs
ICd5JyAsICd0aWx0JywgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNf
ZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDog
MHg4MjZiCiAgICAgICAgdmlkOiAweDA1NmEKICAgICAgICBuYW1lOiAnQUVTIFBlbicKICAgICAg
ICB0eXBlOiAnbW9iaWxlJwogICAgICAgIGF4ZXM6IFsneCcsICd5JyAsICd0aWx0JywgJ3ByZXNz
dXJlJ10KICAgICAgICBidXR0b25zOiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAg
ICBlcmFzZXJfdHlwZTogJ2J1dHRvbicKICAgICAgLSBpZDogMHg4NDZiCiAgICAgICAgdmlkOiAw
eDA1NmEKICAgICAgICBuYW1lOiAnQUVTIFBlbicKICAgICAgICB0eXBlOiAnbW9iaWxlJwogICAg
ICAgIGF4ZXM6IFsneCcsICd5JyAsICd0aWx0JywgJ3ByZXNzdXJlJ10KICAgICAgICBidXR0b25z
OiAxCiAgICAgICAgaXNfZXJhc2VyOiAndHJ1ZScKICAgICAgICBlcmFzZXJfdHlwZTogJ2J1dHRv
bicKICAgICAgLSBpZDogMHg4NjViCiAgICAgICAgdmlkOiAweDA1NmEKICAgICAgICBuYW1lOiAn
TGVub3ZvIEFjdGl2ZSBQZW4gMyAoMjAyMyknCiAgICAgICAgdHlwZTogJ21vYmlsZScKICAgICAg
ICBheGVzOiBbJ3gnLCAneScgLCAndGlsdCcsICdwcmVzc3VyZSddCiAgICAgICAgYnV0dG9uczog
MQogICAgICAgIGlzX2VyYXNlcjogJ3RydWUnCiAgICAgICAgZXJhc2VyX3R5cGU6ICdidXR0b24n
CiAgICAgIC0gaWQ6IDB4ODY2YgogICAgICAgIHZpZDogMHgwNTZhCiAgICAgICAgbmFtZTogJ0xl
bm92byBQcmVjaXNpb24gUGVuIDIgKDIwMjMpJwogICAgICAgIHR5cGU6ICdtb2JpbGUnCiAgICAg
ICAgYXhlczogWyd4JywgJ3knICwgJ3RpbHQnLCAncHJlc3N1cmUnXQogICAgICAgIGJ1dHRvbnM6
IDEKICAgICAgICBpc19lcmFzZXI6ICd0cnVlJwogICAgICAgIGVyYXNlcl90eXBlOiAnYnV0dG9u
Jwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>189908</attachid>
            <date>2026-02-21 07:32:23 +0000</date>
            <delta_ts>2026-02-21 07:32:23 +0000</delta_ts>
            <desc>patch for the bug (not yet tested)</desc>
            <filename>kcmtablet.cpp</filename>
            <type>text/x-c++src</type>
            <size>18771</size>
            <attacher name="Kat Pavlu">realkpavel</attacher>
            
              <data encoding="base64">LyoKICAgIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjEgQWxlaXggUG9sIEdvbnphbGV6IDxh
bGVpeHBvbEBrZGUub3JnPgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1v
ci1sYXRlcgoqLwoKI2luY2x1ZGUgImtjbXRhYmxldC5oIgojaW5jbHVkZSAiY2FsaWJyYXRpb250
b29sLmgiCiNpbmNsdWRlICJpbnB1dGRldmljZS5oIgojaW5jbHVkZSAibG9nZ2luZy5oIgojaW5j
bHVkZSAidGFibGV0ZXZlbnRzLmgiCiNpbmNsdWRlICJ0YWJsZXRtb2R1bGVkYXRhLmgiCgojaW5j
bHVkZSA8S0NvbmZpZ0dyb3VwPgojaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KI2luY2x1ZGUg
PEtQbHVnaW5GYWN0b3J5PgojaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgojaW5jbHVkZSA8UU1h
dHJpeDR4ND4KI2luY2x1ZGUgPFFTY3JlZW4+CiNpbmNsdWRlIDxRU3RhbmRhcmRJdGVtTW9kZWw+
CgpLX1BMVUdJTl9GQUNUT1JZX1dJVEhfSlNPTihUYWJsZXRGYWN0b3J5LCAia2NtX3RhYmxldC5q
c29uIiwgcmVnaXN0ZXJQbHVnaW48VGFibGV0PigpOyByZWdpc3RlclBsdWdpbjxUYWJsZXRNb2R1
bGVEYXRhPigpOykKCmNsYXNzIE9yaWVudGF0aW9uc01vZGVsIDogcHVibGljIFFTdGFuZGFyZEl0
ZW1Nb2RlbAp7CiAgICBRX09CSkVDVApwdWJsaWM6CiAgICBPcmllbnRhdGlvbnNNb2RlbCgpCiAg
ICB7CiAgICAgICAgYXV0byBhZGRPcmllbnRhdGlvbiA9IFt0aGlzXShjb25zdCBRU3RyaW5nICZk
aXNwbGF5LCBRdDo6U2NyZWVuT3JpZW50YXRpb24gbykgewogICAgICAgICAgICBhdXRvIGl0ZW0g
PSBuZXcgUVN0YW5kYXJkSXRlbShkaXNwbGF5KTsKICAgICAgICAgICAgaXRlbS0+c2V0RGF0YShv
LCBRdDo6VXNlclJvbGUpOwogICAgICAgICAgICBhcHBlbmRSb3coaXRlbSk7CiAgICAgICAgfTsK
CiAgICAgICAgYWRkT3JpZW50YXRpb24oaTE4bigiRGVmYXVsdCIpLCBRdDo6UHJpbWFyeU9yaWVu
dGF0aW9uKTsKICAgICAgICBhZGRPcmllbnRhdGlvbihpMThuKCJQb3J0cmFpdCIpLCBRdDo6UG9y
dHJhaXRPcmllbnRhdGlvbik7CiAgICAgICAgYWRkT3JpZW50YXRpb24oaTE4bigiTGFuZHNjYXBl
IiksIFF0OjpMYW5kc2NhcGVPcmllbnRhdGlvbik7CiAgICAgICAgYWRkT3JpZW50YXRpb24oaTE4
bigiSW52ZXJ0ZWQgUG9ydHJhaXQiKSwgUXQ6OkludmVydGVkUG9ydHJhaXRPcmllbnRhdGlvbik7
CiAgICAgICAgYWRkT3JpZW50YXRpb24oaTE4bigiSW52ZXJ0ZWQgTGFuZHNjYXBlIiksIFF0OjpJ
bnZlcnRlZExhbmRzY2FwZU9yaWVudGF0aW9uKTsKCiAgICAgICAgc2V0SXRlbVJvbGVOYW1lcyh7
CiAgICAgICAgICAgIHtRdDo6RGlzcGxheVJvbGUsICJkaXNwbGF5In0sCiAgICAgICAgICAgIHtR
dDo6VXNlclJvbGUsICJ2YWx1ZSJ9LAogICAgICAgIH0pOwogICAgfQoKICAgIFFfU0NSSVBUQUJM
RSBpbnQgb3JpZW50YXRpb25BdChpbnQgcm93KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBp
dGVtKHJvdyktPmRhdGEoUXQ6OlVzZXJSb2xlKS50b0ludCgpOwogICAgfQogICAgUV9TQ1JJUFRB
QkxFIGludCByb3dGb3JPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICB7CiAgICAgICAg
Zm9yIChpbnQgaSA9IDAsIGMgPSByb3dDb3VudCgpOyBpIDwgYzsgKytpKSB7CiAgICAgICAgICAg
IGlmIChpdGVtKGkpLT5kYXRhKFF0OjpVc2VyUm9sZSkgPT0gb3JpZW50YXRpb24pIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBJ
ZiBub3QgZm91bmQsIGxldCdzIGp1c3QgcmV0dXJuIHRoZSBQcmltYXJ5T3JpZW50YXRpb24KICAg
ICAgICByZXR1cm4gMDsKICAgIH0KfTsKCi8vLyBUaGlzIGlzIGZvciB0aGUgRml0dGluZyB0YWJs
ZXQgdG8gc2NyZWVuLCAiIiBtZWFucyB0byBmb2xsb3cgdGhlIEFjdGl2ZSBzY3JlZW4sIG90aGVy
d2lzZSB3ZSBwYXNzIHRoZSBuYW1lCmNsYXNzIE91dHB1dHNNb2RlbCA6IHB1YmxpYyBRU3RhbmRh
cmRJdGVtTW9kZWwKewogICAgUV9PQkpFQ1QKcHVibGljOgogICAgT3V0cHV0c01vZGVsKCkKICAg
IHsKICAgICAgICBzZXRJdGVtUm9sZU5hbWVzKHsKICAgICAgICAgICAge1F0OjpEaXNwbGF5Um9s
ZSwgImRpc3BsYXkifSwKICAgICAgICAgICAge1F0OjpVc2VyUm9sZSwgIm5hbWUifSwKICAgICAg
ICAgICAge1F0OjpVc2VyUm9sZSArIDEsICJwaHlzaWNhbFNpemUifSwKICAgICAgICAgICAge1F0
OjpVc2VyUm9sZSArIDIsICJzaXplIn0sCiAgICAgICAgfSk7CgogICAgICAgIHJlc2V0KCk7Cgog
ICAgICAgIGNvbm5lY3QocUd1aUFwcCwgJlFHdWlBcHBsaWNhdGlvbjo6c2NyZWVuQWRkZWQsIHRo
aXMsICZPdXRwdXRzTW9kZWw6OnJlc2V0KTsKICAgICAgICBjb25uZWN0KHFHdWlBcHAsICZRR3Vp
QXBwbGljYXRpb246OnNjcmVlblJlbW92ZWQsIHRoaXMsICZPdXRwdXRzTW9kZWw6OnJlc2V0KTsK
ICAgIH0KCiAgICB2b2lkIHJlc2V0KCkKICAgIHsKICAgICAgICBjbGVhcigpOwoKICAgICAgICBh
dXRvIHNjcmVlbnMgPSBxR3VpQXBwLT5zY3JlZW5zKCk7CiAgICAgICAgYXV0byBpdCA9IG5ldyBR
U3RhbmRhcmRJdGVtKGkxOG4oIkZvbGxvdyB0aGUgQ3VycmVudCBTY3JlZW4iKSk7CiAgICAgICAg
aXQtPnNldERhdGEoc2NyZWVuc1swXS0+cGh5c2ljYWxTaXplKCksIFF0OjpVc2VyUm9sZSArIDEp
OyAvLyB3ZSB1c2UgdGhlIGZpcnN0IGRpc3BsYXkgdG8gZ2l2ZSBhbiBpZGVhCiAgICAgICAgaXQt
PnNldERhdGEoc2NyZWVuc1swXS0+c2l6ZSgpLCBRdDo6VXNlclJvbGUgKyAyKTsKICAgICAgICBh
cHBlbmRSb3coaXQpOwoKICAgICAgICBpdCA9IG5ldyBRU3RhbmRhcmRJdGVtKGkxOG4oIkFsbCBT
Y3JlZW5zIikpOwogICAgICAgIGl0LT5zZXREYXRhKHNjcmVlbnNbMF0tPnZpcnR1YWxTaXplKCks
IFF0OjpVc2VyUm9sZSArIDEpOwogICAgICAgIGl0LT5zZXREYXRhKHNjcmVlbnNbMF0tPnZpcnR1
YWxTaXplKCksIFF0OjpVc2VyUm9sZSArIDIpOwogICAgICAgIGFwcGVuZFJvdyhpdCk7CgogICAg
ICAgIGZvciAoYXV0byBzY3JlZW4gOiBzY3JlZW5zKSB7CiAgICAgICAgICAgIGF1dG8gZ2VvID0g
c2NyZWVuLT5nZW9tZXRyeSgpOwogICAgICAgICAgICBhdXRvIG5hbWUgPSBzY3JlZW4tPm1vZGVs
KCkuaXNFbXB0eSgpID8gc2NyZWVuLT5uYW1lKCkgOiBzY3JlZW4tPm1vZGVsKCk7CiAgICAgICAg
ICAgIGF1dG8gaXQgPSBuZXcgUVN0YW5kYXJkSXRlbShpMThuYygibW9kZWwgLSAoeCx5IHdpZHRo
eGhlaWdodCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiUxIC0gKCUyLCUzICU0w5clNSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFFTdHJpbmc6Om51bWJlcihnZW8ueCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6Om51bWJlcihnZW8ueSgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6Om51bWJlcihnZW8u
d2lkdGgoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR
U3RyaW5nOjpudW1iZXIoZ2VvLmhlaWdodCgpKSkpOwogICAgICAgICAgICBpdC0+c2V0RGF0YShz
Y3JlZW4tPm5hbWUoKSwgUXQ6OlVzZXJSb2xlKTsKICAgICAgICAgICAgaXQtPnNldERhdGEoc2Ny
ZWVuLT5waHlzaWNhbFNpemUoKSwgUXQ6OlVzZXJSb2xlICsgMSk7CiAgICAgICAgICAgIGl0LT5z
ZXREYXRhKHNjcmVlbi0+c2l6ZSgpLCBRdDo6VXNlclJvbGUgKyAyKTsKICAgICAgICAgICAgYXBw
ZW5kUm93KGl0KTsKICAgICAgICB9CgogICAgICAgIHNldEl0ZW1Sb2xlTmFtZXMoewogICAgICAg
ICAgICB7UXQ6OkRpc3BsYXlSb2xlLCAiZGlzcGxheSJ9LAogICAgICAgICAgICB7UXQ6OlVzZXJS
b2xlLCAibmFtZSJ9LAogICAgICAgICAgICB7UXQ6OlVzZXJSb2xlICsgMSwgInBoeXNpY2FsU2l6
ZSJ9LAogICAgICAgICAgICB7UXQ6OlVzZXJSb2xlICsgMiwgInNpemUifSwKICAgICAgICB9KTsK
ICAgIH0KCiAgICBRX1NDUklQVEFCTEUgUVN0cmluZyBvdXRwdXROYW1lQXQoaW50IHJvdykgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gaXRlbShyb3cpLT5kYXRhKFF0OjpVc2VyUm9sZSkudG9T
dHJpbmcoKTsKICAgIH0KCiAgICBRX1NDUklQVEFCTEUgaW50IHJvd0ZvckRldmljZShJbnB1dERl
dmljZSAqZGV2aWNlKQogICAgewogICAgICAgIGlmICghZGV2aWNlKSB7CiAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlLT5pc01hcFRvV29ya3NwYWNlKCkpIHsK
ICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJu
IHJvd0Zvck91dHB1dE5hbWUoZGV2aWNlLT5vdXRwdXROYW1lKCkpOwogICAgICAgIH0KICAgIH0K
CiAgICBRX1NDUklQVEFCTEUgaW50IHJvd0Zvck91dHB1dE5hbWUoY29uc3QgUVN0cmluZyAmb3V0
cHV0TmFtZSkKICAgIHsKICAgICAgICBmb3IgKGludCBpID0gMCwgYyA9IHJvd0NvdW50KCk7IGkg
PCBjOyArK2kpIHsKICAgICAgICAgICAgaWYgKGl0ZW0oaSktPmRhdGEoUXQ6OlVzZXJSb2xlKSA9
PSBvdXRwdXROYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgLy8gSWYgbm90IGZvdW5kLCBsZXQncyBqdXN0IHJldHVybiB0aGUg
UHJpbWFyeU9yaWVudGF0aW9uCiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgUV9TQ1JJUFRB
QkxFIGJvb2wgaXNNYXBUb1dvcmtzcGFjZUF0KGludCByb3cpCiAgICB7CiAgICAgICAgcmV0dXJu
IHJvdyA9PSAxOwogICAgfQp9OwoKLy8vIFRoaXMgbW9kZWwgbGlzdHMgdGhlIGRpZmZlcmVudCB3
YXlzIHRoZSB0YWJsZXQgd2lsbCBmaXQgb250byBpdHMgb3V0cHV0CmNsYXNzIE91dHB1dHNGaXR0
aW5nTW9kZWwgOiBwdWJsaWMgUVN0YW5kYXJkSXRlbU1vZGVsCnsKcHVibGljOgogICAgT3V0cHV0
c0ZpdHRpbmdNb2RlbCgpCiAgICB7CiAgICAgICAgYXBwZW5kUm93KG5ldyBRU3RhbmRhcmRJdGVt
KGkxOG5jKCJAaXRlbTppbmxpc3Rib3ggU3RyZXRjaCBhbmQgZmlsbCB0byB0aGUgc2NyZWVuIiwg
IlN0cmV0Y2ggYW5kIEZpbGwiKSkpOwogICAgICAgIGFwcGVuZFJvdyhuZXcgUVN0YW5kYXJkSXRl
bShpMThuYygiQGl0ZW06aW5saXN0Ym94IEtlZXAgYXNwZWN0IHJhdGlvIGFuZCBmaXQgd2l0aGlu
IHRoZSBzY3JlZW4iLCAiS2VlcCBBc3BlY3QgUmF0aW8gYW5kIEZpdCIpKSk7CiAgICAgICAgYXBw
ZW5kUm93KG5ldyBRU3RhbmRhcmRJdGVtKGkxOG5jKCJAaXRlbTppbmxpc3Rib3ggTWFwIHRvIHBv
cnRpb24gb2YgdGhlIHNjcmVlbiIsICJNYXAgdG8gUG9ydGlvbiIpKSk7CgogICAgICAgIHNldEl0
ZW1Sb2xlTmFtZXMoe3tRdDo6RGlzcGxheVJvbGUsICJkaXNwbGF5In19KTsKICAgIH0KfTsKCmNs
YXNzIFN0eWx1c0J1dHRvbnNNb2RlbCA6IHB1YmxpYyBRU3RhbmRhcmRJdGVtTW9kZWwKewogICAg
UV9PQkpFQ1QKCiAgICBRX1BST1BFUlRZKFdhY29tRGV2aWNlRGF0YWJhc2UgKmRiIFJFQUQgZGIg
V1JJVEUgc2V0RGIgTk9USUZZIGRiQ2hhbmdlZCBSRVFVSVJFRCkKICAgIFFfUFJPUEVSVFkoSW5w
dXREZXZpY2UgKmRldmljZSBSRUFEIGRldmljZSBXUklURSBzZXREZXZpY2UgTk9USUZZIGRldmlj
ZUNoYW5nZWQgUkVRVUlSRUQpCgpwdWJsaWM6CiAgICBlbnVtIEN1c3RvbVJvbGVzIHsKICAgICAg
ICBOYW1lUm9sZSA9IFF0OjpVc2VyUm9sZSwKICAgICAgICBMYWJlbFJvbGUsCiAgICAgICAgVmFs
dWVSb2xlLAogICAgfTsKCiAgICBTdHlsdXNCdXR0b25zTW9kZWwoKQogICAgewogICAgICAgIHNl
dEl0ZW1Sb2xlTmFtZXMoewogICAgICAgICAgICB7TmFtZVJvbGUsICJuYW1lIn0sCiAgICAgICAg
ICAgIHtMYWJlbFJvbGUsICJsYWJlbCJ9LAogICAgICAgICAgICB7VmFsdWVSb2xlLCAidmFsdWUi
fSwKICAgICAgICB9KTsKICAgICAgICByZWNhbGN1bGF0ZUl0ZW1zKCk7CiAgICB9CgogICAgV2Fj
b21EZXZpY2VEYXRhYmFzZSAqZGIoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2RiOwog
ICAgfQoKICAgIHZvaWQgc2V0RGIoV2Fjb21EZXZpY2VEYXRhYmFzZSAqZGIpCiAgICB7CiAgICAg
ICAgaWYgKGRiICE9IG1fZGIpIHsKICAgICAgICAgICAgbV9kYiA9IGRiOwogICAgICAgICAgICBR
X0VNSVQgZGJDaGFuZ2VkKCk7CiAgICAgICAgICAgIHJlY2FsY3VsYXRlSXRlbXMoKTsKICAgICAg
ICB9CiAgICB9CgogICAgSW5wdXREZXZpY2UgKmRldmljZSgpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIG1fZGV2aWNlOwogICAgfQoKICAgIHZvaWQgc2V0RGV2aWNlKElucHV0RGV2aWNlICpk
ZXZpY2UpCiAgICB7CiAgICAgICAgaWYgKG1fZGV2aWNlICE9IGRldmljZSkgewogICAgICAgICAg
ICBtX2RldmljZSA9IGRldmljZTsKICAgICAgICAgICAgUV9FTUlUIGRldmljZUNoYW5nZWQoKTsK
ICAgICAgICAgICAgcmVjYWxjdWxhdGVJdGVtcygpOwogICAgICAgIH0KICAgIH0KClFfU0lHTkFM
UzoKICAgIHZvaWQgZGJDaGFuZ2VkKCk7CiAgICB2b2lkIGRldmljZUNoYW5nZWQoKTsKCnByaXZh
dGU6CiAgICB2b2lkIHJlY2FsY3VsYXRlSXRlbXMoKQogICAgewogICAgICAgIGlmICghbV9kZXZp
Y2UgfHwgIW1fZGIpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8g
V2hlbiB0aGVyZSdzIG5vIHN0eWx1cyBkZXRlY3RlZCBpbiB0aGUgZGF0YWJhc2UsIGZhbGxiYWNr
IHRvIDMuCiAgICAgICAgaW50IG51bUJ1dHRvbnMgPSAzOwogICAgICAgIGNvbnN0IFFTdHJpbmcg
c3lzUGF0aCA9IFFTdHJpbmdMaXRlcmFsKCIvZGV2L2lucHV0LyUxIikuYXJnKG1fZGV2aWNlLT5z
eXNOYW1lKCkpOwoKICAgICAgICBXYWNvbUVycm9yICplcnJvciA9IGxpYndhY29tX2Vycm9yX25l
dygpOwogICAgICAgIGF1dG8gZGV2aWNlID0gbGlid2Fjb21fbmV3X2Zyb21fcGF0aChtX2RiLCBz
eXNQYXRoLnRvTGF0aW4xKCkuY29uc3REYXRhKCksIFdGQUxMQkFDS19HRU5FUklDLCBlcnJvcik7
CiAgICAgICAgaWYgKGRldmljZSA9PSBudWxscHRyKSB7CiAgICAgICAgICAgIHFDV2FybmluZyhL
Q01fVEFCTEVUKCkpIDw8ICJGYWlsZWQgdG8gZmluZCBkZXZpY2UgaW4gbGlid2Fjb206IiA8PCBs
aWJ3YWNvbV9lcnJvcl9nZXRfbWVzc2FnZShlcnJvcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgaW50IG51bV9zdHlsaSA9IDA7CiAgICAgICAgICAgIGNvbnN0IGludCAqc3R5bGkgPSBs
aWJ3YWNvbV9nZXRfc3VwcG9ydGVkX3N0eWxpKGRldmljZSwgJm51bV9zdHlsaSk7CiAgICAgICAg
ICAgIGlmIChudW1fc3R5bGkgPiAwKSB7CiAgICAgICAgICAgICAgICBudW1CdXR0b25zID0gMDsK
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N0eWxpOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN0eWx1cyA9IGxpYndhY29tX3N0eWx1c19nZXRf
Zm9yX2lkKG1fZGIsIHN0eWxpW2ldKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bHVzICE9
IG51bGxwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbnVtQnV0dG9ucyA9IHN0ZDo6bWF4
KG51bUJ1dHRvbnMsIGxpYndhY29tX3N0eWx1c19nZXRfbnVtX2J1dHRvbnMoc3R5bHVzKSk7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIGxpYndhY29tX2Vycm9yX2ZyZWUoJmVycm9yKTsKCiAgICAgICAgLy8gV2Ug
Y3VycmVudGx5IGRvbid0IHN1cHBvcnQgbW9yZSB0aGFuIDMgc3R5bHVzIGJ1dHRvbnMsIGF0IHRo
ZSBtb21lbnQKICAgICAgICBpZiAobnVtQnV0dG9ucyA+IDMpIHsKICAgICAgICAgICAgbnVtQnV0
dG9ucyA9IDM7CiAgICAgICAgICAgIHFDV2FybmluZyhLQ01fVEFCTEVUKQogICAgICAgICAgICAg
ICAgPDwgIk1vcmUgdGhhbiAzIHN0eWx1cyBidXR0b25zIGRldGVjdGVkISBUaGlzIGlzIGN1cnJl
bnRseSBub3Qgc3VwcG9ydGVkLiBJZiB5b3UgaGF2ZSBzdWNoIGEgc3R5bHVzLCBwbGVhc2UgZmls
ZSBhIGJ1ZyByZXBvcnQuIjsKICAgICAgICB9CgogICAgICAgIGNsZWFyKCk7CgogICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtQnV0dG9uczsgaSsrKSB7CiAgICAgICAgICAgIGF1dG8gaXRl
bSA9IG5ldyBRU3RhbmRhcmRJdGVtKCk7CiAgICAgICAgICAgIGl0ZW0tPnNldERhdGEoaTE4bmMo
IlN0eWx1cyBwZW4gYnV0dG9uIiwgIlBlbiBidXR0b24gJTE6IiwgaSArIDEpLCBMYWJlbFJvbGUp
OwogICAgICAgICAgICBpdGVtLT5zZXREYXRhKGkxOG5jKCJAaW5mbyBNZWFudCB0byBiZSBpbnNl
cnRlZCBpbnRvIGFuIGV4aXN0aW5nIHNlbnRlbmNlIGxpa2UgJ2NvbmZpZ3VyaW5nIHBlbiBidXR0
b24gWCciLCAicGVuIGJ1dHRvbiAlMSIsIGkgKyAxKSwgTmFtZVJvbGUpOwogICAgICAgICAgICBz
d2l0Y2ggKGkpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaXRlbS0+c2V0
RGF0YSgweDE0YiwgVmFsdWVSb2xlKTsgLy8gQlROX1NUWUxVUwogICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGl0ZW0tPnNldERhdGEoMHgx
NGMsIFZhbHVlUm9sZSk7IC8vIEJUTl9TVFlMVVMyCiAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgaXRlbS0+c2V0RGF0YSgweDE0OSwgVmFs
dWVSb2xlKTsgLy8gQlROX1NUWUxVUzMKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgUV9VTlJFQUNIQUJMRSgpOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGFwcGVuZFJvdyhpdGVtKTsKICAgICAgICB9CiAgICB9CgogICAgV2Fjb21E
ZXZpY2VEYXRhYmFzZSAqbV9kYiA9IG51bGxwdHI7CiAgICBJbnB1dERldmljZSAqbV9kZXZpY2Ug
PSBudWxscHRyOwp9OwoKVGFibGV0OjpUYWJsZXQoUU9iamVjdCAqcGFyZW50LCBjb25zdCBLUGx1
Z2luTWV0YURhdGEgJm1ldGFEYXRhKQogICAgOiBLUXVpY2tNYW5hZ2VkQ29uZmlnTW9kdWxlKHBh
cmVudCwgbWV0YURhdGEpCnsKICAgIG1fZGIgPSBsaWJ3YWNvbV9kYXRhYmFzZV9uZXcoKTsKICAg
IGlmIChtX2RiID09IG51bGxwdHIpIHsKICAgICAgICBxQ1dhcm5pbmcoS0NNX1RBQkxFVCkgPDwg
IkZhaWxlZCB0byBpbml0aWFsaXplIGxpYndhY29tIGRhdGFiYXNlISI7CiAgICB9CgogICAgbV90
YWJsZXRzTW9kZWwgPSBuZXcgVGFibGV0c01vZGVsKG1fZGIsIHRoaXMpOwoKICAgIHFtbFJlZ2lz
dGVyVHlwZTxPdXRwdXRzTW9kZWw+KCJvcmcua2RlLnBsYXNtYS50YWJsZXQua2NtIiwgMSwgMCwg
Ik91dHB1dHNNb2RlbCIpOwogICAgcW1sUmVnaXN0ZXJUeXBlPE9yaWVudGF0aW9uc01vZGVsPigi
b3JnLmtkZS5wbGFzbWEudGFibGV0LmtjbSIsIDEsIDAsICJPcmllbnRhdGlvbnNNb2RlbCIpOwog
ICAgcW1sUmVnaXN0ZXJUeXBlPFN0eWx1c0J1dHRvbnNNb2RlbD4oIm9yZy5rZGUucGxhc21hLnRh
YmxldC5rY20iLCAxLCAxLCAiU3R5bHVzQnV0dG9uc01vZGVsIik7CiAgICBxbWxSZWdpc3RlclR5
cGU8VGFibGV0RXZlbnRzPigib3JnLmtkZS5wbGFzbWEudGFibGV0LmtjbSIsIDEsIDEsICJUYWJs
ZXRFdmVudHMiKTsKICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPElucHV0RGV2aWNlPigi
b3JnLmtkZS5wbGFzbWEudGFibGV0LmtjbSIsIDEsIDAsICJJbnB1dERldmljZSIsICJBY2Nlc3Mg
ZnJvbSBDKysgb25seSIpOwogICAgcW1sUmVnaXN0ZXJUeXBlPENhbGlicmF0aW9uVG9vbD4oIm9y
Zy5rZGUucGxhc21hLnRhYmxldC5rY20iLCAxLCAxLCAiQ2FsaWJyYXRpb25Ub29sIik7CiAgICAv
LyBUaGlzIGxvb2tzIHdlaXJkLCBidXQgdGhlIGZpcnN0IHR5cGUgaGVyZSBpcyB0aGUgdmFsdWUg
dHlwZS4gVGhlIHNlY29uZCB0eXBlIGlzIGhlcmUgaXMganVzdCBmb3IgdGhlIGVudW1lcmF0aW9u
cy4KICAgIC8vIFllcywgdGhpcyBJUyB3aGF0IHRoZXkgc3VnZ2VzdCB5b3UgZG86IGh0dHBzOi8v
ZG9jLnF0LmlvL3F0LTYvcXRxbWwtY3BwaW50ZWdyYXRpb24tZGVmaW5ldHlwZXMuaHRtbCN2YWx1
ZS10eXBlcy13aXRoLWVudW1lcmF0aW9ucwogICAgcW1sUmVnaXN0ZXJUeXBlPElucHV0U2VxdWVu
Y2U+KCJvcmcua2RlLnBsYXNtYS50YWJsZXQua2NtIiwgMSwgMSwgImlucHV0U2VxdWVuY2UiKTsK
ICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVNZXRhT2JqZWN0KElucHV0U2VxdWVuY2U6OnN0YXRp
Y01ldGFPYmplY3QsICJvcmcua2RlLnBsYXNtYS50YWJsZXQua2NtIiwgMSwgMSwgIklucHV0U2Vx
dWVuY2UiLCAiQWNjZXNzIHRvIGVudW1zICYgZmxhZ3Mgb25seSIpOwoKICAgIGNvbm5lY3QobV90
YWJsZXRzTW9kZWwsICZUYWJsZXRzTW9kZWw6Om5lZWRzU2F2ZUNoYW5nZWQsIHRoaXMsICZUYWJs
ZXQ6OnJlZnJlc2hOZWVkc1NhdmUpOwogICAgY29ubmVjdCh0aGlzLCAmVGFibGV0OjpzZXR0aW5n
c1Jlc3RvcmVkLCB0aGlzLCAmVGFibGV0OjpyZWZyZXNoTmVlZHNTYXZlKTsKfQoKVGFibGV0Ojp+
VGFibGV0KCkKewogICAgaWYgKG1fZGIpIHsKICAgICAgICBsaWJ3YWNvbV9kYXRhYmFzZV9kZXN0
cm95KG1fZGIpOwogICAgfQp9Cgp2b2lkIFRhYmxldDo6cmVmcmVzaE5lZWRzU2F2ZSgpCnsKICAg
IHNldE5lZWRzU2F2ZShpc1NhdmVOZWVkZWQoKSk7Cn0KCmJvb2wgVGFibGV0Ojppc1NhdmVOZWVk
ZWQoKSBjb25zdAp7CiAgICBjb25zdCBhdXRvIGNmZyA9IEtTaGFyZWRDb25maWc6Om9wZW5Db25m
aWcoImtjbWlucHV0cmMiKTsKICAgIGNvbnN0IEtDb25maWdHcm91cCB0YWJsZXRHcm91cCA9IGNm
Zy0+Z3JvdXAoUVN0cmluZ0xpdGVyYWwoIlRhYmxldCIpKTsKICAgIHJldHVybiAhbV91bnNhdmVk
TWFwcGluZ3MuaXNFbXB0eSgpIHx8IG1fdGFibGV0c01vZGVsLT5pc1NhdmVOZWVkZWQoKSB8fCB0
YWJsZXRHcm91cC5yZWFkRW50cnkoUVN0cmluZ0xpdGVyYWwoIlN5bmNXaXRoTW91c2UiKSwgZmFs
c2UpICE9IG1fc3luY1dpdGhNb3VzZTsKfQoKYm9vbCBUYWJsZXQ6OmlzRGVmYXVsdHMoKSBjb25z
dAp7CiAgICBpZiAoIW1fdW5zYXZlZE1hcHBpbmdzLmlzRW1wdHkoKSkKICAgICAgICByZXR1cm4g
ZmFsc2U7CgogICAgY29uc3QgYXV0byBjZmcgPSBLU2hhcmVkQ29uZmlnOjpvcGVuQ29uZmlnKCJr
Y21pbnB1dHJjIik7CiAgICBpZiAoY2ZnLT5ncm91cCgiQnV0dG9uUmViaW5kcyIpLmdyb3VwKCJU
YWJsZXQiKS5pc1ZhbGlkKCkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAo
Y2ZnLT5ncm91cCgiQnV0dG9uUmViaW5kcyIpLmdyb3VwKCJUYWJsZXRUb29sIikuaXNWYWxpZCgp
KSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIG1fdGFibGV0c01vZGVs
LT5pc0RlZmF1bHRzKCk7Cn0KCnZvaWQgVGFibGV0Ojpsb2FkKCkKewogICAgbV90YWJsZXRzTW9k
ZWwtPmxvYWQoKTsKCiAgICBtX3Vuc2F2ZWRNYXBwaW5ncy5jbGVhcigpOwogICAgUV9FTUlUIHNl
dHRpbmdzUmVzdG9yZWQoKTsKCiAgICBjb25zdCBhdXRvIGNmZyA9IEtTaGFyZWRDb25maWc6Om9w
ZW5Db25maWcoImtjbWlucHV0cmMiKTsKICAgIGNvbnN0IEtDb25maWdHcm91cCB0YWJsZXRHcm91
cCA9IGNmZy0+Z3JvdXAoUVN0cmluZ0xpdGVyYWwoIlRhYmxldCIpKTsKICAgIG1fc3luY1dpdGhN
b3VzZSA9IHRhYmxldEdyb3VwLnJlYWRFbnRyeShRU3RyaW5nTGl0ZXJhbCgiU3luY1dpdGhNb3Vz
ZSIpLCBmYWxzZSk7CiAgICBRX0VNSVQgc3luY1dpdGhNb3VzZUNoYW5nZWQoKTsKCiAgICByZWZy
ZXNoTmVlZHNTYXZlKCk7Cn0KCnZvaWQgVGFibGV0OjpzYXZlKCkKewogICAgbV90YWJsZXRzTW9k
ZWwtPnNhdmUoKTsKCiAgICBhdXRvIGdlbmVyYWxHcm91cCA9IEtTaGFyZWRDb25maWc6Om9wZW5D
b25maWcoImtjbWlucHV0cmMiKS0+Z3JvdXAoIkJ1dHRvblJlYmluZHMiKTsKICAgIC8vIHJlZ3Vs
YXIgcmViaW5kcwogICAgZm9yIChjb25zdCBhdXRvICZkZXZpY2UgOiBRU3RyaW5nTGlzdHsiVGFi
bGV0IiwgIlRhYmxldFRvb2wiLCAiVGFibGV0RGlhbCJ9KSB7CiAgICAgICAgZm9yIChhdXRvIGl0
ID0gbV91bnNhdmVkTWFwcGluZ3NbZGV2aWNlXS5jYmVnaW4oKSwgaXRFbmQgPSBtX3Vuc2F2ZWRN
YXBwaW5nc1tkZXZpY2VdLmNlbmQoKTsgaXQgIT0gaXRFbmQ7ICsraXQpIHsKICAgICAgICAgICAg
YXV0byBjb25maWdHcm91cCA9IGdlbmVyYWxHcm91cC5ncm91cChkZXZpY2UpLmdyb3VwKGl0Lmtl
eSgpKTsKICAgICAgICAgICAgZm9yIChhdXRvIGl0RGV2aWNlID0gaXQtPmNiZWdpbigpLCBpdERl
dmljZUVuZCA9IGl0LT5jZW5kKCk7IGl0RGV2aWNlICE9IGl0RGV2aWNlRW5kOyArK2l0RGV2aWNl
KSB7CiAgICAgICAgICAgICAgICBjb25zdCBhdXRvIFtidXR0b24sIGdyb3VwXSA9IGl0RGV2aWNl
LmtleSgpOwoKICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8ga2V5ID0gaXREZXZpY2UtPnRvQ29u
ZmlnRm9ybWF0KCk7CiAgICAgICAgICAgICAgICBpZiAoa2V5LmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgICAgIGNvbmZpZ0dyb3VwLmRlbGV0ZUVudHJ5KFFTdHJpbmc6Om51bWJlcihidXR0
b24pLCBLQ29uZmlnOjpOb3RpZnkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICBjb25maWdHcm91cC53cml0ZUVudHJ5KFFTdHJpbmc6Om51bWJlcihidXR0b24p
LCBrZXksIEtDb25maWc6Ok5vdGlmeSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9CiAgICAvLyBtb2RlLWJhc2VkIHJlYmluZHMKICAgIGZvciAoY29uc3Qg
YXV0byAmZGV2aWNlIDogUVN0cmluZ0xpc3R7IlRhYmxldFJpbmcifSkgewogICAgICAgIGZvciAo
YXV0byBpdCA9IG1fdW5zYXZlZE1hcHBpbmdzW2RldmljZV0uY2JlZ2luKCksIGl0RW5kID0gbV91
bnNhdmVkTWFwcGluZ3NbZGV2aWNlXS5jZW5kKCk7IGl0ICE9IGl0RW5kOyArK2l0KSB7CiAgICAg
ICAgICAgIGF1dG8gY29uZmlnR3JvdXAgPSBnZW5lcmFsR3JvdXAuZ3JvdXAoZGV2aWNlKS5ncm91
cChpdC5rZXkoKSk7CiAgICAgICAgICAgIGZvciAoYXV0byBpdERldmljZSA9IGl0LT5jYmVnaW4o
KSwgaXREZXZpY2VFbmQgPSBpdC0+Y2VuZCgpOyBpdERldmljZSAhPSBpdERldmljZUVuZDsgKytp
dERldmljZSkgewogICAgICAgICAgICAgICAgY29uc3QgYXV0byBbYnV0dG9uLCBtb2RlXSA9IGl0
RGV2aWNlLmtleSgpOwoKICAgICAgICAgICAgICAgIGF1dG8gbW9kZUdyb3VwID0gY29uZmlnR3Jv
dXAuZ3JvdXAoUVN0cmluZzo6bnVtYmVyKG1vZGUpKTsKCiAgICAgICAgICAgICAgICBjb25zdCBh
dXRvIGtleSA9IGl0RGV2aWNlLT50b0NvbmZpZ0Zvcm1hdCgpOwogICAgICAgICAgICAgICAgaWYg
KGtleS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICBtb2RlR3JvdXAuZGVsZXRlRW50
cnkoUVN0cmluZzo6bnVtYmVyKGJ1dHRvbiksIEtDb25maWc6Ok5vdGlmeSk7CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIG1vZGVHcm91cC53cml0ZUVudHJ5KFFT
dHJpbmc6Om51bWJlcihidXR0b24pLCBrZXksIEtDb25maWc6Ok5vdGlmeSk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBnZW5lcmFsR3JvdXAuc3lu
YygpOwogICAgbV91bnNhdmVkTWFwcGluZ3MuY2xlYXIoKTsKCiAgICBjb25zdCBhdXRvIGNmZyA9
IEtTaGFyZWRDb25maWc6Om9wZW5Db25maWcoImtjbWlucHV0cmMiKTsKICAgIEtDb25maWdHcm91
cCB0YWJsZXRHcm91cCA9IGNmZy0+Z3JvdXAoUVN0cmluZ0xpdGVyYWwoIlRhYmxldCIpKTsKICAg
IHRhYmxldEdyb3VwLndyaXRlRW50cnkoUVN0cmluZ0xpdGVyYWwoIlN5bmNXaXRoTW91c2UiKSwg
bV9zeW5jV2l0aE1vdXNlLCBLQ29uZmlnOjpOb3RpZnkpOwogICAgY2ZnLT5zeW5jKCk7Cn0KCnZv
aWQgVGFibGV0OjpkZWZhdWx0cygpCnsKICAgIG1fdGFibGV0c01vZGVsLT5kZWZhdWx0cygpOwog
ICAgbV91bnNhdmVkTWFwcGluZ3MuY2xlYXIoKTsKICAgIG1fc3luY1dpdGhNb3VzZSA9IGZhbHNl
OwogICAgUV9FTUlUIHNldHRpbmdzUmVzdG9yZWQoKTsKICAgIFFfRU1JVCBzeW5jV2l0aE1vdXNl
Q2hhbmdlZCgpOwp9Cgp2b2lkIFRhYmxldDo6YXNzaWduUGFkQnV0dG9uTWFwcGluZyhjb25zdCBR
U3RyaW5nICZkZXZpY2VOYW1lLCB1aW50IGJ1dHRvbiwgY29uc3QgSW5wdXRTZXF1ZW5jZSAma2V5
U2VxdWVuY2UpCnsKICAgIG1fdW5zYXZlZE1hcHBpbmdzWyJUYWJsZXQiXVtkZXZpY2VOYW1lXVt7
YnV0dG9uLCAwfV0gPSBrZXlTZXF1ZW5jZTsKICAgIFFfRU1JVCBzZXR0aW5nc1Jlc3RvcmVkKCk7
Cn0KCnZvaWQgVGFibGV0Ojphc3NpZ25QYWREaWFsTWFwcGluZyhjb25zdCBRU3RyaW5nICZkZXZp
Y2VOYW1lLCB1aW50IGJ1dHRvbiwgY29uc3QgSW5wdXRTZXF1ZW5jZSAma2V5U2VxdWVuY2UpCnsK
ICAgIG1fdW5zYXZlZE1hcHBpbmdzWyJUYWJsZXREaWFsIl1bZGV2aWNlTmFtZV1be2J1dHRvbiwg
MH1dID0ga2V5U2VxdWVuY2U7CiAgICBRX0VNSVQgc2V0dGluZ3NSZXN0b3JlZCgpOwp9Cgp2b2lk
IFRhYmxldDo6YXNzaWduUGFkUmluZ01hcHBpbmcoY29uc3QgUVN0cmluZyAmZGV2aWNlTmFtZSwg
dWludCBidXR0b24sIHVpbnQgZ3JvdXAsIGNvbnN0IElucHV0U2VxdWVuY2UgJmtleVNlcXVlbmNl
KQp7CiAgICBtX3Vuc2F2ZWRNYXBwaW5nc1siVGFibGV0UmluZyJdW2RldmljZU5hbWVdW3tidXR0
b24sIGdyb3VwfV0gPSBrZXlTZXF1ZW5jZTsKICAgIFFfRU1JVCBzZXR0aW5nc1Jlc3RvcmVkKCk7
Cn0KCnZvaWQgVGFibGV0Ojphc3NpZ25Ub29sQnV0dG9uTWFwcGluZyhjb25zdCBRU3RyaW5nICZk
ZXZpY2VOYW1lLCB1aW50IGJ1dHRvbiwgY29uc3QgSW5wdXRTZXF1ZW5jZSAma2V5U2VxdWVuY2Up
CnsKICAgIG1fdW5zYXZlZE1hcHBpbmdzWyJUYWJsZXRUb29sIl1bZGV2aWNlTmFtZV1be2J1dHRv
biwgMH1dID0ga2V5U2VxdWVuY2U7CiAgICBRX0VNSVQgc2V0dGluZ3NSZXN0b3JlZCgpOwp9CgpJ
bnB1dFNlcXVlbmNlIFRhYmxldDo6cGFkQnV0dG9uTWFwcGluZyhjb25zdCBRU3RyaW5nICZkZXZp
Y2VOYW1lLCB1aW50IGJ1dHRvbikgY29uc3QKewogICAgaWYgKGRldmljZU5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgcmV0dXJuIHt9OwogICAgfQoKICAgIGlmIChjb25zdCBhdXRvICZkZXZpY2Ug
PSBtX3Vuc2F2ZWRNYXBwaW5nc1siVGFibGV0Il1bZGV2aWNlTmFtZV07IGRldmljZS5jb250YWlu
cyh7YnV0dG9uLCAwfSkpIHsKICAgICAgICByZXR1cm4gZGV2aWNlLnZhbHVlKHtidXR0b24sIDB9
KTsKICAgIH0KCiAgICBjb25zdCBhdXRvIGNmZyA9IEtTaGFyZWRDb25maWc6Om9wZW5Db25maWco
ImtjbWlucHV0cmMiKTsKICAgIGNvbnN0IGF1dG8gZ3JvdXAgPSBjZmctPmdyb3VwKCJCdXR0b25S
ZWJpbmRzIikuZ3JvdXAoIlRhYmxldCIpLmdyb3VwKGRldmljZU5hbWUpOwogICAgY29uc3QgYXV0
byBzZXF1ZW5jZSA9IGdyb3VwLnJlYWRFbnRyeShRU3RyaW5nOjpudW1iZXIoYnV0dG9uKSwgUVN0
cmluZ0xpc3QoKSk7CiAgICByZXR1cm4gSW5wdXRTZXF1ZW5jZShzZXF1ZW5jZSk7Cn0KCklucHV0
U2VxdWVuY2UgVGFibGV0OjpwYWREaWFsTWFwcGluZyhjb25zdCBRU3RyaW5nICZkZXZpY2VOYW1l
LCB1aW50IGJ1dHRvbikgY29uc3QKewogICAgaWYgKGRldmljZU5hbWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgcmV0dXJuIHt9OwogICAgfQoKICAgIGlmIChjb25zdCBhdXRvICZkZXZpY2UgPSBtX3Vu
c2F2ZWRNYXBwaW5nc1siVGFibGV0RGlhbCJdW2RldmljZU5hbWVdOyBkZXZpY2UuY29udGFpbnMo
e2J1dHRvbiwgMH0pKSB7CiAgICAgICAgcmV0dXJuIGRldmljZS52YWx1ZSh7YnV0dG9uLCAwfSk7
CiAgICB9CgogICAgY29uc3QgYXV0byBjZmcgPSBLU2hhcmVkQ29uZmlnOjpvcGVuQ29uZmlnKCJr
Y21pbnB1dHJjIik7CiAgICBjb25zdCBhdXRvIGdyb3VwID0gY2ZnLT5ncm91cCgiQnV0dG9uUmVi
aW5kcyIpLmdyb3VwKCJUYWJsZXREaWFsIikuZ3JvdXAoZGV2aWNlTmFtZSk7CiAgICBjb25zdCBh
dXRvIHNlcXVlbmNlID0gZ3JvdXAucmVhZEVudHJ5KFFTdHJpbmc6Om51bWJlcihidXR0b24pLCBR
U3RyaW5nTGlzdCgpKTsKICAgIHJldHVybiBJbnB1dFNlcXVlbmNlKHNlcXVlbmNlKTsKfQoKSW5w
dXRTZXF1ZW5jZSBUYWJsZXQ6OnBhZFJpbmdNYXBwaW5nKGNvbnN0IFFTdHJpbmcgJmRldmljZU5h
bWUsIHVpbnQgYnV0dG9uLCB1aW50IG1vZGUpIGNvbnN0CnsKICAgIGlmIChkZXZpY2VOYW1lLmlz
RW1wdHkoKSkgewogICAgICAgIHJldHVybiB7fTsKICAgIH0KCiAgICBpZiAoY29uc3QgYXV0byAm
ZGV2aWNlID0gbV91bnNhdmVkTWFwcGluZ3NbIlRhYmxldFJpbmciXVtkZXZpY2VOYW1lXTsgZGV2
aWNlLmNvbnRhaW5zKHtidXR0b24sIG1vZGV9KSkgewogICAgICAgIHJldHVybiBkZXZpY2UudmFs
dWUoe2J1dHRvbiwgbW9kZX0pOwogICAgfQoKICAgIGNvbnN0IGF1dG8gY2ZnID0gS1NoYXJlZENv
bmZpZzo6b3BlbkNvbmZpZygia2NtaW5wdXRyYyIpOwogICAgY29uc3QgYXV0byBjb25maWdHcm91
cCA9IGNmZy0+Z3JvdXAoIkJ1dHRvblJlYmluZHMiKS5ncm91cCgiVGFibGV0UmluZyIpLmdyb3Vw
KGRldmljZU5hbWUpLmdyb3VwKFFTdHJpbmc6Om51bWJlcihtb2RlKSk7CiAgICBjb25zdCBhdXRv
IHNlcXVlbmNlID0gY29uZmlnR3JvdXAucmVhZEVudHJ5KFFTdHJpbmc6Om51bWJlcihidXR0b24p
LCBRU3RyaW5nTGlzdCgpKTsKICAgIHJldHVybiBJbnB1dFNlcXVlbmNlKHNlcXVlbmNlKTsKfQoK
SW5wdXRTZXF1ZW5jZSBUYWJsZXQ6OnRvb2xCdXR0b25NYXBwaW5nKGNvbnN0IFFTdHJpbmcgJmRl
dmljZU5hbWUsIHVpbnQgYnV0dG9uKSBjb25zdAp7CiAgICBpZiAoZGV2aWNlTmFtZS5pc0VtcHR5
KCkpIHsKICAgICAgICByZXR1cm4ge307CiAgICB9CgogICAgaWYgKGNvbnN0IGF1dG8gJmRldmlj
ZSA9IG1fdW5zYXZlZE1hcHBpbmdzWyJUYWJsZXRUb29sIl1bZGV2aWNlTmFtZV07IGRldmljZS5j
b250YWlucyh7YnV0dG9uLCAwfSkpIHsKICAgICAgICByZXR1cm4gZGV2aWNlLnZhbHVlKHtidXR0
b24sIDB9KTsKICAgIH0KCiAgICBjb25zdCBhdXRvIGNmZyA9IEtTaGFyZWRDb25maWc6Om9wZW5D
b25maWcoImtjbWlucHV0cmMiKTsKICAgIGNvbnN0IGF1dG8gZ3JvdXAgPSBjZmctPmdyb3VwKCJC
dXR0b25SZWJpbmRzIikuZ3JvdXAoIlRhYmxldFRvb2wiKS5ncm91cChkZXZpY2VOYW1lKTsKICAg
IGNvbnN0IGF1dG8gc2VxdWVuY2UgPSBncm91cC5yZWFkRW50cnkoUVN0cmluZzo6bnVtYmVyKGJ1
dHRvbiksIFFTdHJpbmdMaXN0KCkpOwogICAgcmV0dXJuIElucHV0U2VxdWVuY2Uoc2VxdWVuY2Up
Owp9CgpRU3RyaW5nIFRhYmxldDo6dG9TZXJpYWxpemVkQ3VydmUoY29uc3QgUVBvaW50RiAmY29u
dHJvbFBvaW50MSwgY29uc3QgUVBvaW50RiAmY29udHJvbFBvaW50MikKewogICAgLy8gVHVybiAo
MCwwKSAoMSwxKSB0byAwLjAsMC4wOzEuMCwxLjA7CiAgICBRU3RyaW5nIHNDdXJ2ZTsKICAgIHND
dXJ2ZSArPSBRU3RyaW5nOjpudW1iZXIoY29udHJvbFBvaW50MS54KCkpOwogICAgc0N1cnZlICs9
ICIsIjsKICAgIHNDdXJ2ZSArPSBRU3RyaW5nOjpudW1iZXIoY29udHJvbFBvaW50MS55KCkpOwog
ICAgc0N1cnZlICs9ICI7IjsKCiAgICBzQ3VydmUgKz0gUVN0cmluZzo6bnVtYmVyKGNvbnRyb2xQ
b2ludDIueCgpKTsKICAgIHNDdXJ2ZSArPSAiLCI7CiAgICBzQ3VydmUgKz0gUVN0cmluZzo6bnVt
YmVyKGNvbnRyb2xQb2ludDIueSgpKTsKICAgIHNDdXJ2ZSArPSAiOyI7CgogICAgcmV0dXJuIHND
dXJ2ZTsKfQoKUUxpc3Q8UVBvaW50Rj4gVGFibGV0Ojpmcm9tU2VyaWFsaXplZEN1cnZlKGNvbnN0
IFFTdHJpbmcgJmN1cnZlKQp7CiAgICBjb25zdCBRU3RyaW5nTGlzdCBkYXRhID0gY3VydmUuc3Bs
aXQoJzsnKTsKCiAgICBRTGlzdDxRUG9pbnRGPiBwb2ludHM7CiAgICBmb3IgKGNvbnN0IFFTdHJp
bmcgJnBhaXIgOiBkYXRhKSB7CiAgICAgICAgaWYgKHBhaXIuaW5kZXhPZignLCcpID4gLTEpIHsK
ICAgICAgICAgICAgcG9pbnRzLmFwcGVuZCh7cGFpci5zZWN0aW9uKCcsJywgMCwgMCkudG9Eb3Vi
bGUoKSwgcGFpci5zZWN0aW9uKCcsJywgMSwgMSkudG9Eb3VibGUoKX0pOwogICAgICAgIH0KICAg
IH0KCiAgICByZXR1cm4gcG9pbnRzOwp9CgpXYWNvbURldmljZURhdGFiYXNlICpUYWJsZXQ6OmRi
KCkgY29uc3QKewogICAgcmV0dXJuIG1fZGI7Cn0KCmJvb2wgVGFibGV0OjpzeW5jV2l0aE1vdXNl
KCkgY29uc3QKewogICAgcmV0dXJuIG1fc3luY1dpdGhNb3VzZTsKfQoKdm9pZCBUYWJsZXQ6OnNl
dFN5bmNXaXRoTW91c2UoYm9vbCB2YWx1ZSkKewogICAgaWYgKG1fc3luY1dpdGhNb3VzZSAhPSB2
YWx1ZSkgewogICAgICAgIG1fc3luY1dpdGhNb3VzZSA9IHZhbHVlOwogICAgICAgIFFfRU1JVCBz
eW5jV2l0aE1vdXNlQ2hhbmdlZCgpOwogICAgICAgIHJlZnJlc2hOZWVkc1NhdmUoKTsKICAgIH0K
fQoKVGFibGV0c01vZGVsICpUYWJsZXQ6OnRhYmxldHNNb2RlbCgpIGNvbnN0CnsKICAgIHJldHVy
biBtX3RhYmxldHNNb2RlbDsKfQoKI2luY2x1ZGUgImtjbXRhYmxldC5tb2MiCiNpbmNsdWRlICJt
b2Nfa2NtdGFibGV0LmNwcCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>