<?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>213750</bug_id>
          
          <creation_ts>2020-06-29 13:30:41 -0700</creation_ts>
          <short_desc>New API benchmark</short_desc>
          <delta_ts>2020-06-29 18:13:22 -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>JavaScriptCore</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="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667249</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-29 13:30:41 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667287</commentid>
    <comment_count>1</comment_count>
      <attachid>403119</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-29 15:02:13 -0700</bug_when>
    <thetext>Created attachment 403119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667288</commentid>
    <comment_count>2</comment_count>
      <attachid>403119</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-29 15:05:29 -0700</bug_when>
    <thetext>Comment on attachment 403119
Patch

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

rs=me

&gt; PerformanceTests/APIBench/api-bench:1
&gt; +#!/usr/bin/env bash

too much bash 😰</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667289</commentid>
    <comment_count>3</comment_count>
      <attachid>403119</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-29 15:08:56 -0700</bug_when>
    <thetext>Comment on attachment 403119
Patch

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

&gt; PerformanceTests/ChangeLog:30
&gt; +        Score: 68.7642

this should be time, not score, unless you invert

score implies bigger is better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667294</commentid>
    <comment_count>4</comment_count>
      <attachid>403119</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-29 15:14:24 -0700</bug_when>
    <thetext>Comment on attachment 403119
Patch

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

&gt; PerformanceTests/ChangeLog:25
&gt; +        RichardsJS: 15ms

it&apos;s kind of weird this is part of the score</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667311</commentid>
    <comment_count>5</comment_count>
      <attachid>403119</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-29 15:31:26 -0700</bug_when>
    <thetext>Comment on attachment 403119
Patch

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

&gt;&gt; PerformanceTests/ChangeLog:25
&gt;&gt; +        RichardsJS: 15ms
&gt; 
&gt; it&apos;s kind of weird this is part of the score

I removed this from the score, but kept it being printed here, just as a reference.

&gt;&gt; PerformanceTests/ChangeLog:30
&gt;&gt; +        Score: 68.7642
&gt; 
&gt; this should be time, not score, unless you invert
&gt; 
&gt; score implies bigger is better

I updated the changelog to be clearer, but yeah, it is inverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667343</commentid>
    <comment_count>6</comment_count>
      <attachid>403133</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-06-29 16:36:32 -0700</bug_when>
    <thetext>Created attachment 403133
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667391</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-29 18:12:35 -0700</bug_when>
    <thetext>Committed r263712: &lt;https://trac.webkit.org/changeset/263712&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403133.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667393</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-29 18:13:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/64917239&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403119</attachid>
            <date>2020-06-29 15:02:13 -0700</date>
            <delta_ts>2020-06-29 16:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213750-20200629150212.patch</filename>
            <type>text/plain</type>
            <size>163342</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNKUy9SaWNoYXJkc0pTLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZjcxYThiZWUyNjA1
MjJlM2EyMDViMzUxZTA4YzJjOGE1YTE2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcwpAQCAtMCwwICsxLDU0MSBA
QAorLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisv
LyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
ICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGhpcyBpcyBhIEphdmFT
Y3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRzCisvLyBiZW5jaG1hcmsgZnJvbToK
Ky8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bXIxMC9CZW5jaC5odG1sCisvLwor
Ly8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBpbiBCQ1BMIGJ5Cisv
LyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUgUmljaGFyZHMgYmVuY2htYXJrIHNp
bXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisgKiBvcGVyYXRpbmcgc3lzdGVtLgor
ICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZhciBzY2hlZHVsZXIgPSBuZXcgU2No
ZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJRF9JRExFLCAwLCBudWxsLCBDT1VO
VCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9XT1JLRVIsIEtJTkRfV09S
Syk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX1dPUktFUiwgS0lORF9XT1JLKTsK
KyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VSLCAxMDAwLCBxdWV1ZSk7CisKKyAg
cXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1
ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1
ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHNj
aGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0EsIDIwMDAsIHF1ZXVlKTsKKworICBx
dWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgc2No
ZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwgMzAwMCwgcXVldWUpOworCisgIHNj
aGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0MDAwLCBudWxsKTsKKworICBzY2hl
ZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAwMCwgbnVsbCk7CisKKyAgc2NoZWR1
bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVDVEVE
X1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hP
TERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAgIkVycm9yIGR1cmluZyBleGVjdXRp
b246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVlQ291bnQgKworICAgICAgICAiLCBo
b2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCArICIuIjsKKyAgICB0aHJvdyBuZXcg
RXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAxMDAwOworCisvKioKKyAqIFRoZXNl
IHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIHBhY2tldCBpcyBxdWV1ZWQg
YW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0IG9uIGhvbGQgaW4gYSBjb3JyZWN0
IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2ZSBhbnkgbWVhbmluZyBhIHN1Y2gg
YnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3JyZWN0IHJ1biBzbyBpZiB0aGUgYWN0
dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50IGZyb20KKyAqIHRoZSBleHBlY3Rl
ZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAqKi8KK3ZhciBF
WFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQRUNURURfSE9MRF9DT1VOVCA9IDky
ODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0
IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisgKiBwcmlvcml0aWVzLiAgU2NoZWR1
bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tz
CisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEgcXVldWUgdGhleSBhcmUgcHJvY2Vz
c2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTY2hlZHVsZXIoKSB7CisgIHRo
aXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50ID0gMDsKKyAgdGhpcy5ibG9ja3Mg
PSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMubGlzdCA9IG51bGw7CisgIHRoaXMu
Y3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElkID0gbnVsbDsKK30KKwordmFyIElE
X0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAgPSAxOwordmFyIElEX0hBTkRMRVJf
QSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFyIElEX0RFVklDRV9BICAgPSA0Owor
dmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9PRl9JRFMgPSA2OworCit2YXIgS0lO
RF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9IDE7CisKKy8qKgorICogQWRkIGFu
IGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRl
bnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHBy
aW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBv
ZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFk
ZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIGNvdW50KSB7CisgIHRo
aXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IElkbGVUYXNrKHRoaXMs
IDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdvcmsgdGFzayB0byB0aGlzIHNjaGVk
dWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tl
dH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisg
Ki8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJp
b3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcg
V29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsKK307CisKKy8qKgorICogQWRkIGEg
aGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBp
ZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3Mg
cHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBi
ZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5k
bGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFz
ayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRhc2sodGhpcykpOworfTsKKworLyoq
CisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2lu
dH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkg
dGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBv
ZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90
eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0
aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IERldmljZVRhc2sodGhpcykpCit9
OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgYW5kIG1hcmsgaXQgYXMgcnVubmlu
Zy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0g
cXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBA
cGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykg
eworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMuY3Vy
cmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRh
c2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9m
IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQor
ICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3Nl
ZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICov
CitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBuZXcgVGFza0NvbnRyb2xCbG9jayh0
aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmxpc3QgPSB0aGlz
LmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRoaXMuY3VycmVudFRjYjsKK307CisK
Ky8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyAq
LworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5j
dXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhpcy5jdXJyZW50VGNiICE9IG51bGwp
IHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9yU3VzcGVuZGVkKCkpIHsKKyAgICAg
IHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5saW5rOworICAgIH0gZWxzZSB7Cisg
ICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRjYi5pZDsKKyAgICAgIHRoaXMuY3Vy
cmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAgICB9CisgIH0KK307CisKKy8qKgor
ICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRo
ZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhlIHRh
c2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVhc2UgPSBmdW5jdGlv
biAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lkXTsKKyAgaWYgKHRjYiA9PSBudWxs
KSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgpOworICBpZiAodGNiLnByaW9yaXR5
ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAgcmV0dXJuIHRjYjsKKyAgfSBlbHNl
IHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9Cit9OworCisvKioKKyAqIEJsb2Nr
IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNv
bnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFk
ZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgKiByZWxlYXNlZCwgZXZlbiBpZiBu
ZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5ob2xkQ3Vy
cmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291bnQrKzsKKyAgdGhpcy5jdXJyZW50
VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRjYi5saW5rOworfTsKKwor
LyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFk
ZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRo
aXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRj
YjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2Yg
dGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFj
a2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICogc3Vz
cGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0aGUgcGFja2V0IHRvIGFkZAorICov
CitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rpb24gKHBhY2tldCkgeworICB2YXIg
dCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0ID09IG51bGwpIHJldHVybiB0Owor
ICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0LmxpbmsgPSBudWxsOworICBwYWNrZXQuaWQg
PSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQcmlvcml0eUFkZCh0aGlzLmN1cnJl
bnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFzayBjb250cm9sIGJsb2NrIG1hbmFn
ZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNrYWdlcyBhc3NvY2lhdGVkCisgKiB3
aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2NrfSBsaW5rIHRoZSBwcmVjZWRpbmcg
YmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlk
IG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgb2Yg
dGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiBwYWNrYWdl
cyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUg
dGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFRhc2tDb250cm9sQmxvY2sobGlu
aywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0
aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTsKKyAgdGhpcy5xdWV1ZSA9
IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAocXVldWUgPT0gbnVsbCkgeworICAg
IHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0gZWxzZSB7CisgICAgdGhpcy5zdGF0
ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQorfQorCisvKioKKyAqIFRoZSB0YXNr
IGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuCisgKi8KK3ZhciBTVEFURV9S
VU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMgcGFja2V0cyBsZWZ0IHRvIHByb2Nl
c3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisKKy8qKgorICogVGhlIHRhc2sgaXMg
bm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMgbm90IGJsb2NrZWQgYXMgc3VjaCBh
bmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAqLwordmFyIFNUQVRFX1NV
U1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMgYmxvY2tlZCBhbmQgY2Fubm90IGJl
IHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2VkLgorICovCit2YXIgU1RBVEVfSEVM
RCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUgPSBTVEFURV9TVVNQRU5ERUQg
fCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVMRCA9IH5TVEFURV9IRUxEOworCitU
YXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5nID0gZnVuY3Rpb24gKCkgeworICB0
aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0
YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5t
YXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNU
QVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3Bl
bmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLnN0YXRlICYgU1RBVEVfSEVMRCkg
IT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERUQpOworfTsKKworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgeworICB0aGlz
LnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRFRDsKK307CisKK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0
YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOworfTsKKworLyoqCisgKiBSdW5zIHRo
aXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBhbmQgcmV0dXJucyB0aGUgbmV4dCB0
YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUucnVuID0gZnVuY3Rp
b24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5E
RURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1ZXVlOworICAgIHRoaXMucXVldWUg
PSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgICB0aGlz
LnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5zdGF0ZSA9
IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBwYWNrZXQgPSBudWxsOwor
ICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7Cit9OworCisvKioKKyAqIEFkZHMg
YSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxvY2sncyB0YXNrLCBtYXJrcyB0aGlz
IGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCByZXR1cm5zIHRoZSBuZXh0IHJ1bm5h
YmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkp
LgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5jaGVja1ByaW9yaXR5QWRkID0gZnVu
Y3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAg
dGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtBc1J1bm5hYmxlKCk7CisgICAgaWYg
KHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1cm4gdGhpczsKKyAgfSBlbHNlIHsK
KyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMucXVldWUpOworICB9CisgIHJldHVy
biB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5j
dGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMudGFzayArICJAIiArIHRoaXMuc3Rh
dGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29y
ayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3bworICogZGV2aWNlIHRh
c2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQg
bWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2MSBhIHNlZWQgdmFsdWUgdGhhdCBj
b250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2NoZWR1bGVkCisgKiBAcGFyYW0ge2lu
dH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRhc2sgc2hvdWxkIGJlIHNjaGVkdWxl
ZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElkbGVUYXNrKHNjaGVkdWxlciwgdjEs
IGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gdjE7
CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1
bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOworICBpZiAodGhpcy5jb3VudCA9PSAw
KSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKKyAgaWYgKCh0aGlzLnYxICYg
MSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+IDE7CisgICAgcmV0dXJuIHRoaXMu
c2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9IGVsc2UgeworICAgIHRoaXMudjEg
PSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVs
ZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVUYXNrLnByb3RvdHlwZS50b1N0cmlu
ZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFzayIKK307CisKKy8qKgorICogQSB0
YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBpdCBoYXMgYmVlbiBydW4g
dG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBleHRlcm5hbCBkZXZpY2Uu
CisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5h
Z2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIERldmljZVRhc2so
c2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0g
bnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkg
eworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAodGhpcy52MSA9PSBudWxsKSByZXR1
cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKKyAgICB2YXIgdiA9IHRoaXMudjE7
CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYp
OworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7CisgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0RldmljZVRhc2sucHJvdG90eXBlLnRv
U3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRldmljZVRhc2siOworfTsKKworLyoq
CisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMuCisgKiBAcGFyYW0ge1Nj
aGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawor
ICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB1c2VkIHRvIHNwZWNpZnkgaG93IHdvcmsgcGFja2V0
cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBwYXJhbSB7aW50fSB2MiBhbm90aGVyIHNlZWQgdXNlZCB0
byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlwdWxhdGVkCisgKiBAY29uc3RydWN0
b3IKKyAqLworZnVuY3Rpb24gV29ya2VyVGFzayhzY2hlZHVsZXIsIHYxLCB2MikgeworICB0aGlz
LnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlzLnYyID0gdjI7
Cit9CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAg
aWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRD
dXJyZW50KCk7CisgIH0gZWxzZSB7CisgICAgaWYgKHRoaXMudjEgPT0gSURfSEFORExFUl9BKSB7
CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9COworICAgIH0gZWxzZSB7CisgICAgICB0aGlz
LnYxID0gSURfSEFORExFUl9BOworICAgIH0KKyAgICBwYWNrZXQuaWQgPSB0aGlzLnYxOworICAg
IHBhY2tldC5hMSA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7IGkrKykg
eworICAgICAgdGhpcy52MisrOworICAgICAgaWYgKHRoaXMudjIgPiAyNikgdGhpcy52MiA9IDE7
CisgICAgICBwYWNrZXQuYTJbaV0gPSB0aGlzLnYyOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIucXVldWUocGFja2V0KTsKKyAgfQorfTsKKworV29ya2VyVGFzay5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiV29ya2VyVGFzayI7Cit9OworCisv
KioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNw
ZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVs
ZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9u
IEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsK
KyAgdGhpcy52MSA9IG51bGw7CisgIHRoaXMudjIgPSBudWxsOworfQorCitIYW5kbGVyVGFzay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ICE9IG51bGwp
IHsKKyAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JLKSB7CisgICAgICB0aGlzLnYxID0g
cGFja2V0LmFkZFRvKHRoaXMudjEpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYyID0gcGFj
a2V0LmFkZFRvKHRoaXMudjIpOworICAgIH0KKyAgfQorICBpZiAodGhpcy52MSAhPSBudWxsKSB7
CisgICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKKyAgICB2YXIgdjsKKyAgICBpZiAoY291bnQg
PCBEQVRBX1NJWkUpIHsKKyAgICAgIGlmICh0aGlzLnYyICE9IG51bGwpIHsKKyAgICAgICAgdiA9
IHRoaXMudjI7CisgICAgICAgIHRoaXMudjIgPSB0aGlzLnYyLmxpbms7CisgICAgICAgIHYuYTEg
PSB0aGlzLnYxLmEyW2NvdW50XTsKKyAgICAgICAgdGhpcy52MS5hMSA9IGNvdW50ICsgMTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICB2ID0gdGhpcy52MTsKKyAgICAgIHRoaXMudjEgPSB0aGlzLnYxLmxpbms7Cisg
ICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAgfQorICB9CisgIHJldHVy
biB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOworfTsKKworSGFuZGxlclRhc2sucHJv
dG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkhhbmRsZXJUYXNrIjsK
K307CisKKy8qIC0tLSAqCisgKiBQIGEgYyBrIGUgdAorICogLS0tICovCisKK3ZhciBEQVRBX1NJ
WkUgPSA0OworCisvKioKKyAqIEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlw
dWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2Fk
IGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIg
aXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhl
IHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtl
ZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3Rz
LgorICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwgb2YgdGhlIGxpbmtlZCBsaXN0IG9m
IHBhY2tldHMKKyAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBmb3IgdGhpcyBwYWNrZXQKKyAqIEBw
YXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFja2V0CisgKiBAY29uc3RydWN0b3IK
KyAqLworZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5kKSB7CisgIHRoaXMubGluayA9IGxp
bms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhpcy5raW5kID0ga2luZDsKKyAgdGhpcy5hMSA9IDA7
CisgIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsKK30KKworLyoqCisgKiBBZGQgdGhp
cyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBhbmQgcmV0dXJuIHRoZSB3b3JrbGlz
dC4KKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29ya2xpc3QgdG8gYWRkIHRoaXMgcGFj
a2V0IHRvCisgKi8KK1BhY2tldC5wcm90b3R5cGUuYWRkVG8gPSBmdW5jdGlvbiAocXVldWUpIHsK
KyAgdGhpcy5saW5rID0gbnVsbDsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHJldHVybiB0aGlzOwor
ICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOworICB3aGlsZSAoKHBlZWsgPSBuZXh0LmxpbmspICE9
IG51bGwpCisgICAgbmV4dCA9IHBlZWs7CisgIG5leHQubGluayA9IHRoaXM7CisgIHJldHVybiBx
dWV1ZTsKK307CisKK1BhY2tldC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiAiUGFja2V0IjsKK307CisKKworY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpCitmb3Ig
KGxldCBpID0gMDsgaSA8IDUwOyArK2kpCisgICAgcnVuUmljaGFyZHMoKTsKK2NvbnN0IGVuZCA9
IERhdGUubm93KCkKK3ByaW50KGVuZCAtIHN0YXJ0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9z
dGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ0MjRjM2I5MmFlMzllZThhNzczOGM0OWYwOGEzYzZkYjkxYmRlYzcKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFy
ZHNNb3N0bHlKUy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjkwIEBACisv
LyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsK
KwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUMyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAxMTgxQjI0
OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAqLzsgfTsKKwkJMTQxNUFEMTgyNDk5QTQxNDAw
NUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87
IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE2MjQ5OTg1MTcwMDM5ODdBOSAvKiBD
b3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDE1QUQxODI0OTlBNDE0MDA1QkIyRTQgLyogcmlj
aGFyZHMuanMgaW4gQ29weUZpbGVzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQw
MTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0
YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFJpY2hhcmRzTW9zdGx5SlM7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0MDExODFCMjQ5OTg1MTcwMDM5ODdB
OSAvKiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MTVBRDE2MjQ5OTg2MDUwMDVCQjJFNCAvKiByaWNoYXJkcy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHJpY2hhcmRzLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0
MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MDExODBGMjQ5OTg1MTcwMDM5ODdB
OSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MUEy
NDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8sCisJCQkJMTQwMTE4MTkyNDk5
ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MTgyNDk5
ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8sCisJCQkpOworCQkJbmFtZSA9IFBy
b2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQwMTE4MUEyNDk5
ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MTVBRDE2MjQ5OTg2MDUwMDVCQjJFNCAvKiByaWNo
YXJkcy5qcyAqLywKKwkJCQkxNDAxMTgxQjI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAq
LywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNNb3N0bHlKUzsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyog
UmljaGFyZHNNb3N0bHlKUyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDAxMTgxRjI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5SlMi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQwMTE4MTQyNDk5ODUxNzAwMzk4N0E5IC8q
IFNvdXJjZXMgKi8sCisJCQkJMTQwMTE4MTUyNDk5ODUxNzAwMzk4N0E5IC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJMTQwMTE4MTYyNDk5ODUxNzAwMzk4N0E5IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7
CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gUmljaGFyZHNNb3N0bHlKUzsKKwkJCXByb2R1Y3ROYW1lID0gUmljaGFyZHNNb3N0
bHlKUzsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDAxMTgxODI0OTk4NTE3MDAzOTg3QTkgLyog
UmljaGFyZHNNb3N0bHlKUyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTE0MDExODEwMjQ5OTg1MTcwMDM5ODdB
OSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRy
aWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBn
cmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDAxMTgx
NzI0OTk4NTE3MDAzOTg3QTkgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMi4w
OworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
MDExODEzMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIlJpY2hhcmRzTW9zdGx5SlMiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNl
LAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOTsKKwkJCXBy
b2R1Y3RSZWZHcm91cCA9IDE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLzsK
KwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0
cyA9ICgKKwkJCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNNb3N0bHlKUyAq
LywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MTQyNDk5ODUxNzAwMzk4
N0E5IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDAxMTgx
QzI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkxNDAxMTgxRDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQU5BTFlaRVJf
Tk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJ
T04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAi
Z251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19F
TkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJ
CQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JMT0NLX0NB
UFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09O
U1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURfT0JKQ19J
TVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNB
R0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1FTlRTID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VO
VU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JK
Q19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfTElURVJB
TF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVT
X0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JLX0hFQURF
UiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJ
Q0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkg
PSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmY7
CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJRU5BQkxFX1RFU1RB
QklMSVRZID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJ
R0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7
CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJ
CQkpOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVD
TEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9
IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gSU5DTFVERV9TT1VS
Q0U7CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVT
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQUNUSVZFX0NPTVBJTEFUSU9OX0NP
TkRJVElPTlMgPSBERUJVRzsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU9ub25l
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MDExODFFMjQ5OTg1MTcwMDM5
ODdBOSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVN
QkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxp
YmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxF
X09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1F
TlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9J
TkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09C
SkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURF
X0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FO
QUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdV
QVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJF
QUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFU
Q0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFU
SU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NFUlRJT05T
ID0gTk87CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xB
UkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZ
RVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POworCQkJCU1UTF9G
QVNUX01BVEggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9DT01QSUxB
VElPTl9NT0RFID0gd2hvbGVtb2R1bGU7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0g
Ii1PIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQwMTE4MjAyNDk5ODUx
NzAwMzk4N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX1ZFUlNJT04g
PSA1LjA7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDAxMTgyMTI0OTk4NTE3
MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9O
ID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJCTE0MDExODEzMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5SlMiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovLAorCQkJCTE0MDExODFFMjQ5OTg1
MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNNb3N0bHlKUyIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkx
NDAxMTgyMDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQwMTE4MjEyNDk5ODUx
NzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmpl
Y3QgPSAxNDAxMTgxMDI0OTk4NTE3MDAzOTg3QTkgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmlj
aGFyZHNNb3N0bHlKUy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01v
c3RseUpTLnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmlj
aGFyZHNNb3N0bHlKUy54Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjM4NGM0ODI5ZThmZjU1YWE3ZTI1
NTk4ZWVmNTUwYmJmODc4Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZQpAQCAtMCwwICsxLDgx
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNjaGVtZQorICAg
TGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEyMDAiCisgICB2ZXJzaW9uID0gIjEuNyI+CisgICA8QnVp
bGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRhYmxlcyA9ICJZRVMiCisgICAgICBidWls
ZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+CisgICAgICA8QnVpbGRBY3Rpb25FbnRyaWVz
PgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGlu
ZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAg
ICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZp
bmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KKyAgICAg
ICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAi
MTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9
ICJSaWNoYXJkc01vc3RseUpTIgorICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNo
YXJkc01vc3RseUpTIgorICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250
YWluZXI6UmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2oiPgorICAgICAgICAgICAgPC9CdWlsZGFi
bGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CisgICAgICA8L0J1aWxk
QWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rpb24+CisgICA8VGVzdEFjdGlvbgorICAgICAg
YnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50
aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBz
ZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1
bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIj4K
KyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8L1Rlc3RhYmxlcz4KKyAgIDwvVGVzdEFjdGlvbj4K
KyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgor
ICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0
aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJY
Y29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIGxhdW5jaFN0eWxl
ID0gIjAiCisgICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgaWdu
b3Jlc1BlcnNpc3RlbnRTdGF0ZU9uTGF1bmNoID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZl
cnNpb25pbmcgPSAiWUVTIgorICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFs
IgorICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFi
bGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4K
KyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQw
MTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNo
YXJkc01vc3RseUpTIgorICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3Rs
eUpTIgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6UmljaGFy
ZHNNb3N0bHlKUy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Cisg
ICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwvTGF1bmNoQWN0aW9uPgorICAg
PFByb2ZpbGVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAg
ICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMiCisgICAgICBzYXZlZFRvb2xJ
ZGVudGlmaWVyID0gIiIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisg
ICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVBy
b2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAg
ICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmll
ciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDAxMTgx
NzI0OTk4NTE3MDAzOTg3QTkiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRz
TW9zdGx5SlMiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9zdGx5SlMi
CisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01v
c3RseUpTLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAg
IDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9Qcm9maWxlQWN0aW9uPgorICAgPEFu
YWx5emVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CisgICA8L0Fu
YWx5emVBY3Rpb24+CisgICA8QXJjaGl2ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCisgICAgICByZXZlYWxBcmNoaXZlSW5Pcmdhbml6ZXIgPSAiWUVTIj4KKyAg
IDwvQXJjaGl2ZUFjdGlvbj4KKyAgIDxJbnN0YWxsQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3Vy
YXRpb24gPSAiUmVsZWFzZSI+CisgICA8L0luc3RhbGxBY3Rpb24+Cis8L1NjaGVtZT4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJk
c01vc3RseUpTL21haW4uc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YWViOTIx
YjA5OWE1ZGE5ZWQ1ZDk1ZTJhNDcyMjYwOTBjZGRkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9t
YWluLnN3aWZ0CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbXBvcnQgRm91bmRhdGlv
bgoraW1wb3J0IEphdmFTY3JpcHRDb3JlCitpbXBvcnQgUXVhcnR6Q29yZQorCitsZXQgSURfSEFO
RExFUl9BID0gMgorbGV0IElEX0hBTkRMRVJfQiA9IDMKK2xldCBEQVRBX1NJWkUgPSA0CisKK0Bv
YmpjIHByb3RvY29sIFdvcmtlclRhc2tFeHBvcnRzIDogSlNFeHBvcnQgeworICAgIHZhciBzY2hl
ZHVsZXIgOiBKU1ZhbHVlIHsgZ2V0IH0KKyAgICB2YXIgdjEgOiBJbnQgeyBnZXQgfQorICAgIHZh
ciB2MiA6IEludCB7IGdldCB9CisKKyAgICBpbml0KHNjaGVkdWxlcjogSlNWYWx1ZSwgdjE6IElu
dCwgdjI6IEludCkKKworICAgIGZ1bmMgcnVuKF86IEpTVmFsdWUpLT4gTlNPYmplY3QKKyAgICBm
dW5jIHRvU3RyaW5nKCkgLT4gU3RyaW5nCit9CisKK0BvYmpjIHB1YmxpYyBjbGFzcyBXb3JrZXJU
YXNrIDogTlNPYmplY3QsIFdvcmtlclRhc2tFeHBvcnRzIHsKKyAgICBkeW5hbWljIHZhciBzY2hl
ZHVsZXIgOiBKU1ZhbHVlCisgICAgZHluYW1pYyB2YXIgdjEgOiBJbnQKKyAgICBkeW5hbWljIHZh
ciB2MiA6IEludAorCisgICAgcmVxdWlyZWQgaW5pdChzY2hlZHVsZXI6IEpTVmFsdWUsIHYxOiBJ
bnQsIHYyOiBJbnQpCisgICAgeworICAgICAgICBzZWxmLnNjaGVkdWxlciA9IHNjaGVkdWxlcgor
ICAgICAgICBzZWxmLnYxID0gdjEKKyAgICAgICAgc2VsZi52MiA9IHYyCisgICAgfQorCisgICAg
ZnVuYyB0b1N0cmluZygpIC0+IFN0cmluZworICAgIHsKKyAgICAgICAgcmV0dXJuICJXb3JrZXJU
YXNrIgorICAgIH0KKworICAgIGZ1bmMgcnVuKF8gcGFja2V0OiBKU1ZhbHVlKSAtPiBOU09iamVj
dAorICAgIHsKKyAgICAgICAgaWYgcGFja2V0LmlzTnVsbCB8fCBwYWNrZXQuaXNVbmRlZmluZWQg
eworICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmludm9rZU1ldGhvZCgic3VzcGVu
ZEN1cnJlbnQiLCB3aXRoQXJndW1lbnRzOiBbXSkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYu
djEgPSBJRF9IQU5ETEVSX0EgKyBJRF9IQU5ETEVSX0IgLSBzZWxmLnYxCisgICAgICAgIHBhY2tl
dC5zZXRWYWx1ZShzZWxmLnYxLCBmb3JQcm9wZXJ0eTogImlkIikKKyAgICAgICAgcGFja2V0LnNl
dFZhbHVlKDAsIGZvclByb3BlcnR5OiAiYTEiKQorICAgICAgICBmb3IgaSBpbiAwLi4uREFUQV9T
SVpFIHsKKyAgICAgICAgICAgIHNlbGYudjIgKz0gMQorICAgICAgICAgICAgaWYgc2VsZi52MiA+
IDI2IHsKKyAgICAgICAgICAgICAgICBzZWxmLnYyID0gMQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcGFja2V0LmZvclByb3BlcnR5KCJhMiIpLnNldFZhbHVlKHNlbGYudjIsIGZvclByb3Bl
cnR5OiBpKQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5pbnZva2VN
ZXRob2QoInF1ZXVlIiwgd2l0aEFyZ3VtZW50czogW3BhY2tldF0pCisgICAgfQorfQorCitndWFy
ZCBsZXQgY29udGV4dCA9IEpTQ29udGV4dCgpIGVsc2UgeworICAgIGV4aXQoMSkKK30KKworY29u
dGV4dC5zZXRPYmplY3QoV29ya2VyVGFzay5zZWxmLCBmb3JLZXllZFN1YnNjcmlwdDogIldvcmtl
clRhc2siIGFzIE5TU3RyaW5nKQorY29udGV4dC5leGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0
LCBleGNlcHRpb24gaW4KKyAgICBwcmludChleGNlcHRpb24/LnRvU3RyaW5nKCkgYXMgQW55KQor
ICAgIGV4aXQoMSkKK30KKworbGV0IHNvdXJjZSA9IHRyeSBTdHJpbmcoY29udGVudHNPZkZpbGU6
ICJyaWNoYXJkcy5qcyIpCitsZXQgcmVzdWx0ID0gY29udGV4dC5ldmFsdWF0ZVNjcmlwdChzb3Vy
Y2UpCisKK2xldCBpdGVyYXRpb25zID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGlt
ZSgpCitmb3IgXyBpbiAxLi4uaXRlcmF0aW9ucyB7CisgICAgY29udGV4dC5vYmplY3RGb3JLZXll
ZFN1YnNjcmlwdCgicnVuUmljaGFyZHMiKS5jYWxsKHdpdGhBcmd1bWVudHM6IFtdKQorfQorbGV0
IGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkgKiAxMDAw
KSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlK
Uy9SaWNoYXJkc01vc3RseUpTL3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvcmljaGFyZHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzk1NzNkOWFmNDQwZmRhM2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJk
c01vc3RseUpTL3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNDk3IEBACisvLyBDb3B5cmlnaHQgMjAw
Ni0yMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8g
ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAg
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBUaGlzIGlzIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUmljaGFyZHMKKy8vIGJlbmNobWFyayBmcm9tOgorLy8KKy8vICAgIGh0dHA6Ly93
d3cuY2wuY2FtLmFjLnVrL35tcjEwL0JlbmNoLmh0bWwKKy8vCisvLyBUaGUgYmVuY2htYXJrIHdh
cyBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGluIEJDUEwgYnkKKy8vIE1hcnRpbiBSaWNoYXJkcy4K
KworCisvKioKKyAqIFRoZSBSaWNoYXJkcyBiZW5jaG1hcmsgc2ltdWxhdGVzIHRoZSB0YXNrIGRp
c3BhdGNoZXIgb2YgYW4KKyAqIG9wZXJhdGluZyBzeXN0ZW0uCisgKiovCitmdW5jdGlvbiBydW5S
aWNoYXJkcygpIHsKKyAgdmFyIHNjaGVkdWxlciA9IG5ldyBTY2hlZHVsZXIoKTsKKyAgc2NoZWR1
bGVyLmFkZElkbGVUYXNrKElEX0lETEUsIDAsIG51bGwsIENPVU5UKTsKKworICB2YXIgcXVldWUg
PSBuZXcgUGFja2V0KG51bGwsIElEX1dPUktFUiwgS0lORF9XT1JLKTsKKyAgcXVldWUgPSBuZXcg
UGFja2V0KHF1ZXVlLCAgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBzY2hlZHVsZXIuYWRkV29y
a2VyVGFzayhJRF9XT1JLRVIsIDEwMDAsIHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQo
bnVsbCwgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1
ZXVlLCAgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1
ZXVlLCAgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJU
YXNrKElEX0hBTkRMRVJfQSwgMjAwMCwgcXVldWUpOworCisgIHF1ZXVlID0gbmV3IFBhY2tldChu
dWxsLCBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVl
dWUsICBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVl
dWUsICBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIuYWRkSGFuZGxlclRh
c2soSURfSEFORExFUl9CLCAzMDAwLCBxdWV1ZSk7CisKKyAgc2NoZWR1bGVyLmFkZERldmljZVRh
c2soSURfREVWSUNFX0EsIDQwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNr
KElEX0RFVklDRV9CLCA1MDAwLCBudWxsKTsKKworICBzY2hlZHVsZXIuc2NoZWR1bGUoKTsKKwor
ICBpZiAoc2NoZWR1bGVyLnF1ZXVlQ291bnQgIT0gRVhQRUNURURfUVVFVUVfQ09VTlQgfHwKKyAg
ICAgIHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9MRF9DT1VOVCkgeworICAgIHZh
ciBtc2cgPQorICAgICAgICAiRXJyb3IgZHVyaW5nIGV4ZWN1dGlvbjogcXVldWVDb3VudCA9ICIg
KyBzY2hlZHVsZXIucXVldWVDb3VudCArCisgICAgICAgICIsIGhvbGRDb3VudCA9ICIgKyBzY2hl
ZHVsZXIuaG9sZENvdW50ICsgIi4iOworICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworICB9Cit9
CisKK3ZhciBDT1VOVCA9IDEwMDA7CisKKy8qKgorICogVGhlc2UgdHdvIGNvbnN0YW50cyBzcGVj
aWZ5IGhvdyBtYW55IHRpbWVzIGEgcGFja2V0IGlzIHF1ZXVlZCBhbmQKKyAqIGhvdyBtYW55IHRp
bWVzIGEgdGFzayBpcyBwdXQgb24gaG9sZCBpbiBhIGNvcnJlY3QgcnVuIG9mIHJpY2hhcmRzLgor
ICogVGhleSBkb24ndCBoYXZlIGFueSBtZWFuaW5nIGEgc3VjaCBidXQgYXJlIGNoYXJhY3Rlcmlz
dGljIG9mIGEKKyAqIGNvcnJlY3QgcnVuIHNvIGlmIHRoZSBhY3R1YWwgcXVldWUgb3IgaG9sZCBj
b3VudCBpcyBkaWZmZXJlbnQgZnJvbQorICogdGhlIGV4cGVjdGVkIHRoZXJlIG11c3QgYmUgYSBi
dWcgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorICoqLwordmFyIEVYUEVDVEVEX1FVRVVFX0NPVU5U
ID0gMjMyMjsKK3ZhciBFWFBFQ1RFRF9IT0xEX0NPVU5UID0gOTI4OworCisKKy8qKgorICogQSBz
Y2hlZHVsZXIgY2FuIGJlIHVzZWQgdG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24g
dGhlaXIgcmVsYXRpdmUKKyAqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFp
bnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyAqIHdoaWNoIGhvbGRzIHRh
c2tzIGFuZCB0aGUgZGF0YSBxdWV1ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgorICogQGNvbnN0cnVj
dG9yCisgKi8KK2Z1bmN0aW9uIFNjaGVkdWxlcigpIHsKKyAgdGhpcy5xdWV1ZUNvdW50ID0gMDsK
KyAgdGhpcy5ob2xkQ291bnQgPSAwOworICB0aGlzLmJsb2NrcyA9IG5ldyBBcnJheShOVU1CRVJf
T0ZfSURTKTsKKyAgdGhpcy5saXN0ID0gbnVsbDsKKyAgdGhpcy5jdXJyZW50VGNiID0gbnVsbDsK
KyAgdGhpcy5jdXJyZW50SWQgPSBudWxsOworfQorCit2YXIgSURfSURMRSAgICAgICA9IDA7Cit2
YXIgSURfV09SS0VSICAgICA9IDE7Cit2YXIgSURfSEFORExFUl9BICA9IDI7Cit2YXIgSURfSEFO
RExFUl9CICA9IDM7Cit2YXIgSURfREVWSUNFX0EgICA9IDQ7Cit2YXIgSURfREVWSUNFX0IgICA9
IDU7Cit2YXIgTlVNQkVSX09GX0lEUyA9IDY7CisKK3ZhciBLSU5EX0RFVklDRSAgID0gMDsKK3Zh
ciBLSU5EX1dPUksgICAgID0gMTsKKworLyoqCisgKiBBZGQgYW4gaWRsZSB0YXNrIHRvIHRoaXMg
c2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzawor
ICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7
UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRh
c2sKKyAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHNjaGVkdWxl
IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2sgPSBmdW5jdGlv
biAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgY291bnQpIHsKKyAgdGhpcy5hZGRSdW5uaW5nVGFzayhp
ZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSWRsZVRhc2sodGhpcywgMSwgY291bnQpKTsKK307CisK
Ky8qKgorICogQWRkIGEgd29yayB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtp
bnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5
IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUg
b2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5hZGRXb3JrZXJUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAg
dGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBXb3JrZXJUYXNrKHRoaXMsIElE
X0hBTkRMRVJfQSwgMCkpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhp
cyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNr
CisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFt
IHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUg
dGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZEhhbmRsZXJUYXNrID0gZnVuY3Rpb24g
KGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVl
dWUsIG5ldyBIYW5kbGVyVGFzayh0aGlzKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIg
dGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkg
b2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5
CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vz
c2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNlVGFzayA9
IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJp
b3JpdHksIHF1ZXVlLCBuZXcgRGV2aWNlVGFzayh0aGlzKSkKK307CisKKy8qKgorICogQWRkIHRo
ZSBzcGVjaWZpZWQgdGFzayBhbmQgbWFyayBpdCBhcyBydW5uaW5nLgorICogQHBhcmFtIHtpbnR9
IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRo
ZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Yg
d29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0
aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayA9
IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7CisgIHRoaXMuYWRkVGFzayhp
ZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5jdXJyZW50VGNiLnNldFJ1bm5pbmco
KTsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxl
ci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0g
cXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBA
cGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUuYWRkVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7CisgIHRo
aXMuY3VycmVudFRjYiA9IG5ldyBUYXNrQ29udHJvbEJsb2NrKHRoaXMubGlzdCwgaWQsIHByaW9y
aXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMubGlzdCA9IHRoaXMuY3VycmVudFRjYjsKKyAgdGhp
cy5ibG9ja3NbaWRdID0gdGhpcy5jdXJyZW50VGNiOworfTsKKworLyoqCisgKiBFeGVjdXRlIHRo
ZSB0YXNrcyBtYW5hZ2VkIGJ5IHRoaXMgc2NoZWR1bGVyLgorICovCitTY2hlZHVsZXIucHJvdG90
eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmxp
c3Q7CisgIHdoaWxlICh0aGlzLmN1cnJlbnRUY2IgIT0gbnVsbCkgeworICAgIGlmICh0aGlzLmN1
cnJlbnRUY2IuaXNIZWxkT3JTdXNwZW5kZWQoKSkgeworICAgICAgdGhpcy5jdXJyZW50VGNiID0g
dGhpcy5jdXJyZW50VGNiLmxpbms7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuY3VycmVudElk
ID0gdGhpcy5jdXJyZW50VGNiLmlkOworICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJy
ZW50VGNiLnJ1bigpOworICAgIH0KKyAgfQorfTsKKworLyoqCisgKiBSZWxlYXNlIGEgdGFzayB0
aGF0IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVu
LgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGUgdGFzayB0byBzdXNwZW5kCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChpZCkgeworICB2YXIgdGNi
ID0gdGhpcy5ibG9ja3NbaWRdOworICBpZiAodGNiID09IG51bGwpIHJldHVybiB0Y2I7CisgIHRj
Yi5tYXJrQXNOb3RIZWxkKCk7CisgIGlmICh0Y2IucHJpb3JpdHkgPiB0aGlzLmN1cnJlbnRUY2Iu
cHJpb3JpdHkpIHsKKyAgICByZXR1cm4gdGNiOworICB9IGVsc2UgeworICAgIHJldHVybiB0aGlz
LmN1cnJlbnRUY2I7CisgIH0KK307CisKKy8qKgorICogQmxvY2sgdGhlIGN1cnJlbnRseSBleGVj
dXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jaworICogdG8g
cnVuLiAgVGhlIGJsb2NrZWQgdGFzayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0
IGlzIGV4cGxpY2l0bHkKKyAqIHJlbGVhc2VkLCBldmVuIGlmIG5ldyB3b3JrIGlzIGFkZGVkIHRv
IGl0LgorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50ID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLmhvbGRDb3VudCsrOworICB0aGlzLmN1cnJlbnRUY2IubWFya0FzSGVsZCgpOwor
ICByZXR1cm4gdGhpcy5jdXJyZW50VGNiLmxpbms7Cit9OworCisvKioKKyAqIFN1c3BlbmQgdGhl
IGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJv
bCBibG9jaworICogdG8gcnVuLiAgSWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRl
ZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5uYWJsZS4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlw
ZS5zdXNwZW5kQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiLm1hcmtB
c1N1c3BlbmRlZCgpOworICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworfTsKKworLyoqCisgKiBB
ZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBi
eSB0aGUgdGFzaworICogYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRh
c2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisgKiBzdXNwZW5kZWQuCisgKiBAcGFyYW0g
e1BhY2tldH0gcGFja2V0IHRoZSBwYWNrZXQgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUucXVldWUgPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIHZhciB0ID0gdGhpcy5ibG9ja3NbcGFj
a2V0LmlkXTsKKyAgaWYgKHQgPT0gbnVsbCkgcmV0dXJuIHQ7CisgIHRoaXMucXVldWVDb3VudCsr
OworICBwYWNrZXQubGluayA9IG51bGw7CisgIHBhY2tldC5pZCA9IHRoaXMuY3VycmVudElkOwor
ICByZXR1cm4gdC5jaGVja1ByaW9yaXR5QWRkKHRoaXMuY3VycmVudFRjYiwgcGFja2V0KTsKK307
CisKKy8qKgorICogQSB0YXNrIGNvbnRyb2wgYmxvY2sgbWFuYWdlcyBhIHRhc2sgYW5kIHRoZSBx
dWV1ZSBvZiB3b3JrIHBhY2thZ2VzIGFzc29jaWF0ZWQKKyAqIHdpdGggaXQuCisgKiBAcGFyYW0g
e1Rhc2tDb250cm9sQmxvY2t9IGxpbmsgdGhlIHByZWNlZGluZyBibG9jayBpbiB0aGUgbGlua2Vk
IGJsb2NrIGxpc3QKKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhpcyBibG9jaworICog
QHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSBwcmlvcml0eSBvZiB0aGlzIGJsb2NrCisgKiBAcGFy
YW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHBhY2thZ2VzIHRvIGJlIHByb2Nlc3NlZCBi
eSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrCisgKiBAY29uc3RydWN0
b3IKKyAqLworZnVuY3Rpb24gVGFza0NvbnRyb2xCbG9jayhsaW5rLCBpZCwgcHJpb3JpdHksIHF1
ZXVlLCB0YXNrKSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhp
cy5wcmlvcml0eSA9IHByaW9yaXR5OworICB0aGlzLnF1ZXVlID0gcXVldWU7CisgIHRoaXMudGFz
ayA9IHRhc2s7CisgIGlmIChxdWV1ZSA9PSBudWxsKSB7CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRF
X1NVU1BFTkRFRDsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVE
X1JVTk5BQkxFOworICB9Cit9CisKKy8qKgorICogVGhlIHRhc2sgaXMgcnVubmluZyBhbmQgaXMg
Y3VycmVudGx5IHNjaGVkdWxlZC4KKyAqLwordmFyIFNUQVRFX1JVTk5JTkcgPSAwOworCisvKioK
KyAqIFRoZSB0YXNrIGhhcyBwYWNrZXRzIGxlZnQgdG8gcHJvY2Vzcy4KKyAqLwordmFyIFNUQVRF
X1JVTk5BQkxFID0gMTsKKworLyoqCisgKiBUaGUgdGFzayBpcyBub3QgY3VycmVudGx5IHJ1bm5p
bmcuICBUaGUgdGFzayBpcyBub3QgYmxvY2tlZCBhcyBzdWNoIGFuZCBtYXkKKyogYmUgc3RhcnRl
ZCBieSB0aGUgc2NoZWR1bGVyLgorICovCit2YXIgU1RBVEVfU1VTUEVOREVEID0gMjsKKworLyoq
CisgKiBUaGUgdGFzayBpcyBibG9ja2VkIGFuZCBjYW5ub3QgYmUgcnVuIHVudGlsIGl0IGlzIGV4
cGxpY2l0bHkgcmVsZWFzZWQuCisgKi8KK3ZhciBTVEFURV9IRUxEID0gNDsKKwordmFyIFNUQVRF
X1NVU1BFTkRFRF9SVU5OQUJMRSA9IFNUQVRFX1NVU1BFTkRFRCB8IFNUQVRFX1JVTk5BQkxFOwor
dmFyIFNUQVRFX05PVF9IRUxEID0gflNUQVRFX0hFTEQ7CisKK1Rhc2tDb250cm9sQmxvY2sucHJv
dG90eXBlLnNldFJ1bm5pbmcgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSBTVEFURV9S
VU5OSU5HOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCA9
IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgJiBTVEFURV9OT1RfSEVM
RDsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQgPSBmdW5jdGlv
biAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfSEVMRDsKK307CisKK1Rh
c2tDb250cm9sQmxvY2sucHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gKHRoaXMuc3RhdGUgJiBTVEFURV9IRUxEKSAhPSAwIHx8ICh0aGlzLnN0YXRl
ID09IFNUQVRFX1NVU1BFTkRFRCk7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5t
YXJrQXNTdXNwZW5kZWQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRl
IHwgU1RBVEVfU1VTUEVOREVEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFy
a0FzUnVubmFibGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwg
U1RBVEVfUlVOTkFCTEU7Cit9OworCisvKioKKyAqIFJ1bnMgdGhpcyB0YXNrLCBpZiBpdCBpcyBy
ZWFkeSB0byBiZSBydW4sIGFuZCByZXR1cm5zIHRoZSBuZXh0IHRhc2sgdG8gcnVuLgorICovCitU
YXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7CisgIHZhciBwYWNr
ZXQ7CisgIGlmICh0aGlzLnN0YXRlID09IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRSkgeworICAg
IHBhY2tldCA9IHRoaXMucXVldWU7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5saW5rOworICAg
IGlmICh0aGlzLnF1ZXVlID09IG51bGwpIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5O
SU5HOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTkFCTEU7Cisg
ICAgfQorICB9IGVsc2UgeworICAgIHBhY2tldCA9IG51bGw7CisgIH0KKyAgcmV0dXJuIHRoaXMu
dGFzay5ydW4ocGFja2V0KTsKK307CisKKy8qKgorICogQWRkcyBhIHBhY2tldCB0byB0aGUgd29y
a2xpc3Qgb2YgdGhpcyBibG9jaydzIHRhc2ssIG1hcmtzIHRoaXMgYXMgcnVubmFibGUgaWYKKyAq
IG5lY2Vzc2FyeSwgYW5kIHJldHVybnMgdGhlIG5leHQgcnVubmFibGUgb2JqZWN0IHRvIHJ1biAo
dGhlIG9uZQorICogd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSkuCisgKi8KK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLmNoZWNrUHJpb3JpdHlBZGQgPSBmdW5jdGlvbiAodGFzaywgcGFja2V0
KSB7CisgIGlmICh0aGlzLnF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0
OworICAgIHRoaXMubWFya0FzUnVubmFibGUoKTsKKyAgICBpZiAodGhpcy5wcmlvcml0eSA+IHRh
c2sucHJpb3JpdHkpIHJldHVybiB0aGlzOworICB9IGVsc2UgeworICAgIHRoaXMucXVldWUgPSBw
YWNrZXQuYWRkVG8odGhpcy5xdWV1ZSk7CisgIH0KKyAgcmV0dXJuIHRhc2s7Cit9OworCitUYXNr
Q29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
ICJ0Y2IgeyAiICsgdGhpcy50YXNrICsgIkAiICsgdGhpcy5zdGF0ZSArICIgfSI7Cit9OworCisv
KioKKyAqIEFuIGlkbGUgdGFzayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVz
IGNvbnRyb2wgYmV0d2VlbiB0aGUgdHdvCisgKiBkZXZpY2UgdGFza3MuCisgKiBAcGFyYW0ge1Nj
aGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawor
ICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB2YWx1ZSB0aGF0IGNvbnRyb2xzIGhvdyB0aGUgZGV2
aWNlIHRhc2tzIGFyZSBzY2hlZHVsZWQKKyAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVy
IG9mIHRpbWVzIHRoaXMgdGFzayBzaG91bGQgYmUgc2NoZWR1bGVkCisgKiBAY29uc3RydWN0b3IK
KyAqLworZnVuY3Rpb24gSWRsZVRhc2soc2NoZWR1bGVyLCB2MSwgY291bnQpIHsKKyAgdGhpcy5z
Y2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSB2MTsKKyAgdGhpcy5jb3VudCA9IGNv
dW50OworfQorCitJZGxlVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewor
ICB0aGlzLmNvdW50LS07CisgIGlmICh0aGlzLmNvdW50ID09IDApIHJldHVybiB0aGlzLnNjaGVk
dWxlci5ob2xkQ3VycmVudCgpOworICBpZiAoKHRoaXMudjEgJiAxKSA9PSAwKSB7CisgICAgdGhp
cy52MSA9IHRoaXMudjEgPj4gMTsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJ
RF9ERVZJQ0VfQSk7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MSA9ICh0aGlzLnYxID4+IDEpIF4g
MHhEMDA4OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9CKTsK
KyAgfQorfTsKKworSWRsZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewor
ICByZXR1cm4gIklkbGVUYXNrIgorfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBzdXNwZW5kcyBp
dHNlbGYgYWZ0ZXIgZWFjaCB0aW1lIGl0IGhhcyBiZWVuIHJ1biB0byBzaW11bGF0ZQorICogd2Fp
dGluZyBmb3IgZGF0YSBmcm9tIGFuIGV4dGVybmFsIGRldmljZS4KKyAqIEBwYXJhbSB7U2NoZWR1
bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBA
Y29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gRGV2aWNlVGFzayhzY2hlZHVsZXIpIHsKKyAgdGhp
cy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSBudWxsOworfQorCitEZXZpY2VU
YXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgPT0g
bnVsbCkgeworICAgIGlmICh0aGlzLnYxID09IG51bGwpIHJldHVybiB0aGlzLnNjaGVkdWxlci5z
dXNwZW5kQ3VycmVudCgpOworICAgIHZhciB2ID0gdGhpcy52MTsKKyAgICB0aGlzLnYxID0gbnVs
bDsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgIH0gZWxzZSB7CisgICAg
dGhpcy52MSA9IHBhY2tldDsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQo
KTsKKyAgfQorfTsKKworRGV2aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAo
KSB7CisgIHJldHVybiAiRGV2aWNlVGFzayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1h
bmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFy
YW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMg
dGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxl
cikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cisg
IHRoaXMudjIgPSBudWxsOworfQorCitIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rp
b24gKHBhY2tldCkgeworICBpZiAocGFja2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0Lmtp
bmQgPT0gS0lORF9XT1JLKSB7CisgICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEp
OworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOwor
ICAgIH0KKyAgfQorICBpZiAodGhpcy52MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhp
cy52MS5hMTsKKyAgICB2YXIgdjsKKyAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAg
IGlmICh0aGlzLnYyICE9IG51bGwpIHsKKyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRo
aXMudjIgPSB0aGlzLnYyLmxpbms7CisgICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsK
KyAgICAgICAgdGhpcy52MS5hMSA9IGNvdW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLnF1ZXVlKHYpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52
MTsKKyAgICAgIHRoaXMudjEgPSB0aGlzLnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hl
ZHVsZXIucXVldWUodik7CisgICAgfQorICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNw
ZW5kQ3VycmVudCgpOworfTsKKworSGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gIkhhbmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQ
IGEgYyBrIGUgdAorICogLS0tICovCisKK3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEg
c2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4g
IFRoZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBh
Y2tldCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2Yg
dGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lk
ZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNl
IHVzZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9
IGxpbmsgdGhlIHRhaWwgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7
aW50fSBpZCBhbiBJRCBmb3IgdGhpcyBwYWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0
eXBlIG9mIHRoaXMgcGFja2V0CisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0
KGxpbmssIGlkLCBraW5kKSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsK
KyAgdGhpcy5raW5kID0ga2luZDsKKyAgdGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJy
YXkoREFUQV9TSVpFKTsKK30KKworLyoqCisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBv
ZiBhIHdvcmtsaXN0LCBhbmQgcmV0dXJuIHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0
fSBxdWV1ZSB0aGUgd29ya2xpc3QgdG8gYWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5w
cm90b3R5cGUuYWRkVG8gPSBmdW5jdGlvbiAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsK
KyAgaWYgKHF1ZXVlID09IG51bGwpIHJldHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1
ZXVlOworICB3aGlsZSAoKHBlZWsgPSBuZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBl
ZWs7CisgIG5leHQubGluayA9IHRoaXM7CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5w
cm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDU2NDk4ZTZjZWVmOTA2
MGI3YThmYjE5MWJiOTU4ODRhM2YxZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDMyMiBAQAorLy8gISQqVVRGOCokIQor
eworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lv
biA9IDUwOworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CisJCTE0MEFBQzM3MjQ5OUJEN0EwMDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzYyNDk5QkQ2QzAwMDFG
MTFFIC8qIHJpY2hhcmRzLmpzICovOyB9OworCQkxNDBBQUM0MDI0OUIwMUQxMDAwMUYxMUUgLyog
UGFja2V0LnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLzsgfTsKKwkJMTQw
QUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzkyNDlCMDFEMTAwMDFGMTFFIC8q
IHJpY2hhcmRzLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0MjI0OUIwMUQxMDAwMUYxMUUgLyogU2No
ZWR1bGVyLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLzsgfTsKKwkJ
MTQwQUFDNDMyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUgLyog
VGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDQyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNr
LnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQw
QUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0
NTI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyog
SGFuZGxlclRhc2suc3dpZnQgKi87IH07CisJCTE0MEFBQzQ2MjQ5QjAxRDEwMDAxRjExRSAvKiBX
b3JrZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi87IH07
CisJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0IGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0YyNDlCMDFEMTAw
MDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgKi87IH07CisJCTE0MTVBRDI2MjQ5OUJDNUMwMDVC
QjJFNCAvKiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQxNUFEMjUyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgKi87IH07Cisv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDIwMjQ5OUJDNUMwMDVCQjJFNCAvKiBDb3B5Rmls
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7
CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUMzNzI0OTlCRDdBMDAwMUYxMUUgLyogcmljaGFyZHMu
anMgaW4gQ29weUZpbGVzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQwQUFDMzYy
NDk5QkQ2QzAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gcmljaGFyZHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLnN3aWZ0OyBwYXRoID0gUGFja2V0LnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gcmljaGFyZHMuc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIu
c3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gU2NoZWR1bGVyLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUg
LyogVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBUYXNrLnN3
aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQzI0OUIwMUQxMDAwMUYx
MUUgLyogSWRsZVRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0g
SWRsZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNEMjQ5
QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
c3dpZnQ7IHBhdGggPSBIYW5kbGVyVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gV29ya2VyVGFzay5zd2lmdDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRh
c2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gRGV2aWNlVGFzay5z
d2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMjIyNDk5QkM1QzAwNUJC
MkU0IC8qIFJpY2hhcmRzTW9zdGx5U3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3
aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKwkJMTQxNUFEMTkyNDk5QkM1QjAwNUJCMkU0ID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJv
ZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQx
NUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyog
UmljaGFyZHNNb3N0bHlTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQg
Ki8sCisJCQkJMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICov
LAorCQkJCTE0MEFBQzNDMjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLywKKwkJ
CQkxNDBBQUMzODI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0ICovLAorCQkJCTE0MEFB
QzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQTI0
OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovLAorCQkJCTE0MEFBQzNCMjQ5QjAx
RDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0ICovLAorCQkJCTE0MEFBQzNFMjQ5QjAxRDEwMDAxRjEx
RSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovLAorCQkJCTE0MEFBQzM2MjQ5OUJENkMwMDAxRjExRSAv
KiByaWNoYXJkcy5qcyAqLywKKwkJCQkxNDE1QUQyNTI0OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5z
d2lmdCAqLywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDE1QUQyMTI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRh
cmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1QkIy
RTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hh
cmRzTW9zdGx5U3dpZnQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQxNUFEMUUyNDk5
QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlG
aWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXByb2R1Y3RO
YW1lID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDE1QUQy
MjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJ
CTE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNo
ZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRy
aWJ1dGVzID0geworCQkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJCQkJCQlDcmVh
dGVkT25Ub29sc1ZlcnNpb24gPSAxMi4wOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5U3dpZnQiICov
OworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50
UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVn
aW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVB
RDE5MjQ5OUJDNUIwMDVCQjJFNDsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJD
NUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlw
cm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJY
UHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUM0NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2Vy
VGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MTVBRDI2MjQ5OUJDNUMwMDVCQjJFNCAv
KiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFF
IC8qIFNjaGVkdWxlci5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQ0MjQ5QjAxRDEw
MDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQzMjQ5
QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDUy
NDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQwQUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8s
CisJCQkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCBpbiBTb3VyY2Vz
ICovLAorCQkJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0IGlu
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisv
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTE0MTVBRDI3MjQ5OUJD
NUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVS
X05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9
ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VO
QUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RP
Q1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5D
TFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9P
UF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
VU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5f
VU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9E
X01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKKwkJCQlFTkFCTEVfVEVTVEFCSUxJVFkgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0Nf
Tk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
KwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJ
CQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJS
T1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RF
QlVHX0lORk8gPSBJTkNMVURFX1NPVVJDRTsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJ
CU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lG
VF9BQ1RJVkVfQ09NUElMQVRJT05fQ09ORElUSU9OUyA9IERFQlVHOworCQkJCVNXSUZUX09QVElN
SVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsK
KwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVT
U0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7CisJCQkJ
Q0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9
IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxF
X09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVB
U0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7
CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxf
TlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRB
SU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNM
QU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJ
Q1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lW
RTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
Tk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJRU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNH
U0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdD
Q19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9S
OworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJV
R19JTkZPID0gTk87CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVNXSUZUX0NPTVBJTEFUSU9OX01PREUgPSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lG
VF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU8iOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9T
SUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJ
CX07CisJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVf
U0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJC
MkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNN
b3N0bHlTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0OTlCQzVDMDA1QkIyRTQgLyogRGVi
dWcgKi8sCisJCQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJk
c01vc3RseVN3aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBE
ZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJF
NCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseVN3
aWZ0Lnhjc2NoZW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NzhiMDBiZTJmY2I4YjlhZjI5ODhiMDAyZTc4MjBj
NDY0MmFiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lCkBAIC0wLDAgKzEsODEg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2NoZW1lCisgICBM
YXN0VXBncmFkZVZlcnNpb24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAiMS43Ij4KKyAgIDxCdWls
ZEFjdGlvbgorICAgICAgcGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllFUyIKKyAgICAgIGJ1aWxk
SW1wbGljaXREZXBlbmRlbmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWlsZEFjdGlvbkVudHJpZXM+
CisgICAgICAgICA8QnVpbGRBY3Rpb25FbnRyeQorICAgICAgICAgICAgYnVpbGRGb3JUZXN0aW5n
ID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAgICAgICAg
ICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFyY2hpdmlu
ZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFuYWx5emluZyA9ICJZRVMiPgorICAgICAg
ICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRp
ZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIx
NDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0g
IlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJp
Y2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0g
ImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICAgICA8
L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgICAgIDwvQnVpbGRBY3Rpb25FbnRyeT4KKyAgICAg
IDwvQnVpbGRBY3Rpb25FbnRyaWVzPgorICAgPC9CdWlsZEFjdGlvbj4KKyAgIDxUZXN0QWN0aW9u
CisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVn
Z2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIK
KyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRh
dGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9
ICJZRVMiPgorICAgICAgPFRlc3RhYmxlcz4KKyAgICAgIDwvVGVzdGFibGVzPgorICAgPC9UZXN0
QWN0aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJl
bGVhc2UiCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dl
ckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlm
aWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1
bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisg
ICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0Rv
Y3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAi
aW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAg
PEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2Rl
ID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRh
YmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmll
ciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1l
ID0gIlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJp
Y2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNv
bnRhaW5lcjpSaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxk
YWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9M
YXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIK
KyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0Rp
cmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+Cisg
ICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2lu
Z01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBC
dWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVu
dGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJs
ZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUg
PSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIg
PSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAgIDwv
QnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+Cisg
ICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1
cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9u
CisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJldmVhbEFyY2hp
dmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAgPEluc3RhbGxB
Y3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFs
bEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvRGV2aWNlVGFzay5zd2lm
dCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJk
c01vc3RseVN3aWZ0L0RldmljZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM2MWFiNDE0YjYyYzgy
NzBkNTZiMTRjNGU3YmFhNGUyZWQ5MDY4MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0Rl
dmljZVRhc2suc3dpZnQKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5k
YXRpb24KKworQG9iamMgZW51bSBEZXZpY2UgOiBJbnQgeworICAgIGNhc2UgQQorICAgIGNhc2Ug
QgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRp
bWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20g
YW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7CisgICAg
bGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/
ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRl
dmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFz
ayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlv
cml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9
CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAg
eworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxldCBwYWNr
ZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNl
bGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYucGVuZGlu
Z1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
c2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQoc2NoZWR1
bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAg
eworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0KHNjaGVk
dWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lm
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNTU5ZDkwZjc0Yzg0ZWU2NTgwMTY5OTEyZWYyZDU1NWE1NjE5ZGY3Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5kYXRpb24KK2ltcG9ydCBKYXZhU2NyaXB0Q29y
ZQorCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhl
biBzdXNwZW5kcyBpdHNlbGYuCisgKi8KK0BvYmpjIHByb3RvY29sIEhhbmRsZXJUYXNrRXhwb3J0
cyA6IEpTRXhwb3J0IHsKK30KKworQG9iamMgcHVibGljIGNsYXNzIEhhbmRsZXJUYXNrIDogVGFz
aywgSGFuZGxlclRhc2tFeHBvcnRzIHsKKyAgICB2YXIgZGV2aWNlOiBEZXZpY2UKKyAgICB2YXIg
d29ya1F1ZXVlIDogV29ya1BhY2tldD8gPSBuaWwKKyAgICB2YXIgZGV2aWNlUXVldWUgOiBEZXZp
Y2VQYWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hl
ZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQ
YWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IEhhbmRsZXJUYXNrKHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBkZXZpY2U6IGRldmljZSwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVl
dWUpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVy
cmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBp
ZiBsZXQgcCA9IHBhY2tldCB7CisgICAgICAgICAgICBpZiBsZXQgd29yayA9IHAgYXM/IFdvcmtQ
YWNrZXQgeworICAgICAgICAgICAgICAgIHNlbGYud29ya1F1ZXVlID0gd29yay5hZGRUbyhxdWV1
ZTogc2VsZi53b3JrUXVldWUpIGFzISBXb3JrUGFja2V0PworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzZWxmLmRldmljZVF1ZXVlID0gKHAgYXMhIERldmljZVBhY2tldCku
YWRkVG8ocXVldWU6IHNlbGYuZGV2aWNlUXVldWUpIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgbGV0IHdvcmtQYWNrZXQgPSBzZWxmLndvcmtR
dWV1ZSB7CisgICAgICAgICAgICBsZXQgcHJvY2Vzc2VkID0gd29ya1BhY2tldC5wcm9jZXNzZWQK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgPCBXb3JrUGFja2V0LlNJWkUpIHsKKyAgICAgICAg
ICAgICAgICBpZiBsZXQgZGV2aWNlUGFja2V0ID0gc2VsZi5kZXZpY2VRdWV1ZSB7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluayBhcyEgRGV2
aWNlUGFja2V0PworICAgICAgICAgICAgICAgICAgICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXgg
PSB3b3JrUGFja2V0LmRhdGFbcHJvY2Vzc2VkXQorICAgICAgICAgICAgICAgICAgICB3b3JrUGFj
a2V0LnByb2Nlc3NlZCA9IHByb2Nlc3NlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogZGV2aWNlUGFja2V0KQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVl
dWUgPSB3b3JrUGFja2V0LmxpbmsgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogd29ya1BhY2tldCkKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQo
KQorICAgIH0KKworICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNl
OiBEZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHN1cGVyLmluaXQoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSWRsZVRh
c2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU4Nzc5MjUyYTE5MTFkZDcxMTk2MTVkZTlhMmVhMDUwYTU0
ODUwZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0CkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55
IHdvcmsgaXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28gZGV2aWNlIHRh
c2tzLgorICovCitjbGFzcyBJZGxlVGFzayA6IFRhc2sgeworICAgIHZhciBoYXNoXyA6IEludCA9
IDEKKyAgICB2YXIgY291bnQgOiBJbnQgPSAxMDAwCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUo
c2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eSkKKyAgICB7CisgICAgICAg
IGxldCB0YXNrID0gSWRsZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlv
cml0eSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAgIH0KKworICAgIG92
ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAgICB7CisgICAgICBz
ZWxmLmNvdW50IC09IDEKKyAgICAgIGlmIHNlbGYuY291bnQgPT0gMCB7CisgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICAgIH0KKyAgICAgIGlmIChzZWxm
Lmhhc2hfICYgMSkgPT0gMCB7CisgICAgICAgIHNlbGYuaGFzaF8gPSBzZWxmLmhhc2hfID4+IDEK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkEpCisgICAg
ICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2hfID0gKHNlbGYuaGFzaF8gPj4gMSkgXiAweEQw
MDgKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkIpCisg
ICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBw
cmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNj
aGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAgICAgc2VsZi5yZXN1bWUoKQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5z
d2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOWE0ZDk1NThlYjQ3M2I2NzdmZGI3OWNlZGVkZjQxOWVmMGJmZWRl
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCisvKioKKyAqIEEgc2ltcGxl
IHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBl
eGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBp
cyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdv
cmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2Fy
cnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQg
Ym90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICovCisKK0BvYmpjIHByb3RvY29sIFBh
Y2tldEV4cG9ydHMgOiBKU0V4cG9ydCB7CisgICAgdmFyIGRldmljZSA6IERldmljZSB7IGdldCBz
ZXQgfQorfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgUGFja2V0IDogTlNPYmplY3QsIFBhY2tldEV4
cG9ydHMgeworICAgIGR5bmFtaWMgdmFyIGRldmljZSA6IERldmljZQorICAgIHZhciBsaW5rIDog
UGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGluayA9IGxpbmsK
KyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEg
d29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAgZnVuYyBhZGRU
byhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGluayA9IG5pbAor
ICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAg
ICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4dC5saW5rID0g
c2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitwdWJsaWMgZmluYWwgY2xh
c3MgRGV2aWNlUGFja2V0IDogUGFja2V0IHsKKyAgICB2YXIgbGV0dGVySW5kZXggOiBJbnQgPSAw
Cit9CisKK0BvYmpjIHByb3RvY29sIFdvcmtQYWNrZXRFeHBvcnRzIDogUGFja2V0RXhwb3J0cywg
SlNFeHBvcnQgeworICAgIHZhciBwcm9jZXNzZWQgOiBJbnQgeyBnZXQgc2V0IH0KKyAgICB2YXIg
ZGF0YSA6IFtJbnRdIHsgZ2V0IHNldCB9Cit9CisKK0BvYmpjIHB1YmxpYyBmaW5hbCBjbGFzcyBX
b3JrUGFja2V0IDogUGFja2V0LCBXb3JrUGFja2V0RXhwb3J0cyB7CisgICAgc3RhdGljIGxldCBT
SVpFIDogSW50ID0gNAorCisgICAgZHluYW1pYyB2YXIgcHJvY2Vzc2VkIDogSW50ID0gMAorICAg
IGR5bmFtaWMgdmFyIGRhdGEgOiBbSW50XSA9IFtJbnRdKHJlcGVhdGluZzogMCwgY291bnQ6IFNJ
WkUpCisKKyAgICBpbml0KGxpbms6IFBhY2tldD8pCisgICAgeworICAgICAgICBzdXBlci5pbml0
KGRldmljZTogLkEsIGxpbms6IGxpbmspCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
U2NoZWR1bGVyLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4
OWZmN2IyZmZmZTIzYjI0ZjY5Njk2OGVhNDgyOTllMzU0ZDE2YzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9TY2hlZHVsZXIuc3dpZnQKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCitAb2JqYyBwcm90b2NvbCBTY2hlZHVsZXJFeHBvcnRz
IDogSlNFeHBvcnQgeworICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIGZ1bmMg
aGFuZGxlKHBhY2tldDogV29ya1BhY2tldCkgLT4gVGFzaz8KK30KKworLyoqCisqIEEgc2NoZWR1
bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWly
IHJlbGF0aXZlCisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5p
bmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2ggaG9sZHMgdGFza3MgYW5k
IHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBjb25zdHJ1Y3RvcgorKi8K
K0BvYmpjIHB1YmxpYyBjbGFzcyBTY2hlZHVsZXIgOiBOU09iamVjdCwgU2NoZWR1bGVyRXhwb3J0
cyB7CisgICAgcHJpdmF0ZShzZXQpIHZhciBxdWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0
KSB2YXIgaG9sZENvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBU
YXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAg
ICAvKioKKyAgICAqIEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIu
CisgICAgKi8KKyAgICBmdW5jIHNjaGVkdWxlKCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVu
dFRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAgd2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRU
YXNrIHsKKyAgICAgICAgICAgIHZhciBwYWNrZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAg
ICBzd2l0Y2ggdGFzay5zdGF0ZSB7CisgICAgICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tl
dDoKKyAgICAgICAgICAgICAgICBwYWNrZXQgPSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAg
ICAgICAgIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0
OgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBh
Y2tldCkKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50
VGFzayA9IHRhc2submV4dAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
LyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAg
ICovCisgICAgZnVuYyBhZGQodGFzazogVGFzaykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9
IHNlbGYubGlzdAorICAgICAgICBzZWxmLmxpc3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisg
ICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4g
dGhlIG5leHQgYmxvY2sgdG8gcnVuLgorICAgICovCisgICAgZnVuYyByZWxlYXNlXyhkZXZpY2U6
IERldmljZSkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIGxldCB0YXNrIDogRGV2aWNl
VGFzayA9IGZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IGRldmljZSB9KSBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiBuaWwKKyAgICAgICAgfQorICAgICAgICB0YXNrLnJlbGVhc2VfKCkKKyAg
ICAgICAgaWYgdGFzay5wcmlvcml0eSA+IHNlbGYuY3VycmVudFRhc2shLnByaW9yaXR5IHsKKyAg
ICAgICAgICAgIHJldHVybiB0YXNrCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuY3Vy
cmVudFRhc2sKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhl
Y3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAgICAq
IHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRp
bCBpdCBpcyBleHBsaWNpdGx5CisgICAgKiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBh
ZGRlZCB0byBpdC4KKyAgICAqLworICAgIGZ1bmMgaG9sZEN1cnJlbnQoKSAtPiBUYXNrPworICAg
IHsKKyAgICAgICAgc2VsZi5ob2xkQ291bnQgKz0gMQorICAgICAgICBzZWxmLmN1cnJlbnRUYXNr
IS5ob2xkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2shLm5leHQKKyAgICB9CisK
KyAgICAvKioKKyAgICAqIFN1c3BlbmQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQg
cmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jaworICAgICogdG8gcnVuLiAgSWYgbmV3
IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5u
YWJsZS4KKyAgICAqLworICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAg
ICAgICAgc2VsZi5jdXJyZW50VGFzayEud2FpdCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJl
bnRUYXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQg
dG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBieSB0aGUgdGFzaworICAgICogYXNzb2Np
YXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMg
Y3VycmVudGx5CisgICAgKiBzdXNwZW5kZWQuCisgICAgKi8KKyAgICBmdW5jIHF1ZXVlKHBhY2tl
dDogRGV2aWNlUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBEZXZp
Y2VUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9
KQorICAgICAgICByZXR1cm4gcXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQor
ICAgIH0KKworICAgIGZ1bmMgcXVldWUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAg
IHsKKyAgICAgICAgbGV0IHRhc2sgOiBXb3JrZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyBf
IGluIHRydWUgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6
IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IFdvcmtQYWNrZXQpIC0+
IFRhc2s/CisgICAgeworICAgICAgICBsZXQgdGFzayA6IEhhbmRsZXJUYXNrPyA9IHNlbGYuZmlu
ZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1cm4g
cXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1bmMg
aGFuZGxlKHBhY2tldDogRGV2aWNlUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0
IHRhc2sgOiBIYW5kbGVyVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBh
Y2tldC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNr
ZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1bmMgcXVldWVJbXBsKHRhc2s6IFRh
c2s/LCBwYWNrZXQ6IFBhY2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIHRhc2sg
IT0gbmlsIGVsc2UgeyByZXR1cm4gbmlsIH0KKyAgICAgICAgc2VsZi5xdWV1ZUNvdW50ICs9IDEK
KyAgICAgICAgcGFja2V0LmxpbmsgPSBuaWwKKyAgICAgICAgcmV0dXJuIHRhc2shLmNoZWNrUHJp
b3JpdHlBZGQodGFzazogc2VsZi5jdXJyZW50VGFzayEsIHBhY2tldDogcGFja2V0KQorICAgIH0K
KworICAgIHByaXZhdGUgZnVuYyBmaW5kPFQ6IFRhc2s+KHdoZXJlIGNvbmRpdGlvbjogKFQpIC0+
IEJvb2wpIC0+IFQ/CisgICAgeworICAgICAgICB2YXIgdGFzayA9IHNlbGYubGlzdAorICAgICAg
ICB3aGlsZSB0YXNrICE9IG5pbCB7CisgICAgICAgICAgICBpZiBsZXQgdCA9IHRhc2sgYXM/IFQg
eworICAgICAgICAgICAgICAgIGlmIGNvbmRpdGlvbih0KSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
dGFzayA9IHRhc2shLm5leHQKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmlsCisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3
aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRmNDUyODhlMDAxMDc2ZTBkMTRjZjJjNjYyYzhkN2EwNzZlMjhiMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQKQEAgLTAsMCArMSwxMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKK2ltcG9ydCBGb3VuZGF0aW9uCitpbXBvcnQgSmF2YVNjcmlwdENvcmUKKworZW51
bSBQcmlvcml0eSA6IEludCB7CisgICAgY2FzZSBJZGxlID0gMAorICAgIGNhc2UgV29ya2VyID0g
MTAwMAorICAgIGNhc2UgSGFuZGxlckEgPSAyMDAwCisgICAgY2FzZSBIYW5kbGVyQiA9IDMwMDAK
KyAgICBjYXNlIERldmljZUEgPSA0MDAwCisgICAgY2FzZSBEZXZpY2VCID0gNTAwMAorCisgICAg
c3RhdGljIGZ1bmMgPihsaHM6U2VsZiwgcmhzOlNlbGYpIC0+IEJvb2wgCisgICAgeworICAgICAg
ICByZXR1cm4gbGhzLnJhd1ZhbHVlID4gcmhzLnJhd1ZhbHVlCisgICAgfQorfQorCitAb2JqYyBw
dWJsaWMgY2xhc3MgVGFzayA6IE5TT2JqZWN0LCBKU0V4cG9ydCB7CisgICAgbGV0IHNjaGVkdWxl
ciA6IFNjaGVkdWxlcgorICAgIGxldCBwcmlvcml0eSA6IFByaW9yaXR5CisgICAgdmFyIG5leHQg
OiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgcXVldWUgOiBQYWNrZXQ/CisgICAg
cHJpdmF0ZShzZXQpIHZhciBzdGF0ZSA6IFN0YXRlID0gLndhaXRpbmcKKworICAgIHN0cnVjdCBT
dGF0ZSA6IE9wdGlvblNldCB7CisgICAgICAgIGxldCByYXdWYWx1ZTogSW50CisKKyAgICAgICAg
c3RhdGljIGxldCBydW4gOiBTdGF0ZSA9IFtdCisgICAgICAgIHN0YXRpYyBsZXQgaGFzUGFja2V0
ID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMCkKKyAgICAgICAgc3RhdGljIGxldCB3YWl0aW5nID0g
U3RhdGUocmF3VmFsdWU6IDEgPDwgMSkKKyAgICAgICAgc3RhdGljIGxldCBoZWxkID0gU3RhdGUo
cmF3VmFsdWU6IDEgPDwgMikKKworICAgICAgICBzdGF0aWMgbGV0IHJ1bldpdGhQYWNrZXQgPSBo
YXNQYWNrZXQudW5pb24ocnVuKQorICAgICAgICBzdGF0aWMgbGV0IHdhaXRpbmdXaXRoUGFja2V0
ID0gaGFzUGFja2V0LnVuaW9uKHdhaXRpbmcpCisKKyAgICAgICAgaW5pdChyYXdWYWx1ZTogSW50
KQorICAgICAgICB7CisgICAgICAgICAgICBzZWxmLnJhd1ZhbHVlID0gcmF3VmFsdWUKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIHByZWNvbmRpdGlvbkZhaWx1cmUoIlRoaXMgbWV0aG9kIG11c3QgYmUgb3Zl
cnJpZGRlbiIpIAorICAgIH0KKworICAgIGZ1bmMgcmVsZWFzZV8oKQorICAgIHsKKyAgICAgICAg
c2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAgfQorCisgICAgZnVuYyBob2xkKCkKKyAgICB7
CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oZWxkKQorICAgIH0KKworICAgIGZ1bmMgd2Fp
dCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLmluc2VydCgud2FpdGluZykKKyAgICB9CisK
KyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLnJlbW92ZSgud2Fp
dGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQYWNrZXQoKSAtPiBQYWNrZXQKKyAgICB7Cisg
ICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVlIQorICAgICAgICBzZWxmLnF1ZXVlID0gcGFj
a2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwgeworICAgICAgICAgICAgc2Vs
Zi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYuc3RhdGUg
PSAucnVuV2l0aFBhY2tldAorICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrZXQKKyAgICB9
CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQodGFzazogVGFzaywgcGFja2V0OiBQYWNrZXQp
IC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNlbGYucXVldWUgPT0gbmlsIHsKKyAgICAgICAg
ICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5o
YXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxmLnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQuYWRkVG8ocXVldWU6IHNlbGYu
cXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhc2sKKyAgICB9CisKKyAgICBpbml0
KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNrZXQ/
ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAgICAg
ICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5CisgICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQor
ICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAgICAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQo
Lmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1dv
cmtlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
NzZiMGU3MjUxMGVhZDcwNTdkMzdkN2RlMGFiMjhiZjY3Njg4MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCitjbGFzcyBXb3JrZXJUYXNrIDogVGFzayB7CisgICAg
cHJpdmF0ZSB2YXIganMgOiBKU1ZhbHVlCisKKyAgICBwcml2YXRlIHN0YXRpYyBsZXQgY29udGV4
dCA6IEpTQ29udGV4dCA9IHsKKyAgICAgICAgbGV0IGNvbnRleHQgPSBKU0NvbnRleHQoKSEKKyAg
ICAgICAgbGV0IHNvdXJjZSA9IHRyeSEgU3RyaW5nKGNvbnRlbnRzT2ZGaWxlOiAicmljaGFyZHMu
anMiKQorICAgICAgICBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJjZSkKKyAgICAgICAgY29u
dGV4dC5leGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0LCBleGNlcHRpb24gaW4KKyAgICAgICAg
ICAgIHByaW50KGV4Y2VwdGlvbiEudG9TdHJpbmcoKSEpCisgICAgICAgICAgICBleGl0KDIpCisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKyAgICB9KCkKKyAgICBwcml2YXRlIHN0
YXRpYyBsZXQgY29uc3RydWN0b3IgOiBKU1ZhbHVlID0geworICAgICAgICByZXR1cm4gY29udGV4
dC5vYmplY3RGb3JLZXllZFN1YnNjcmlwdCgiY3JlYXRlV29ya2VyVGFzayIpLmNhbGwod2l0aEFy
Z3VtZW50czogW0RldmljZS5BLnJhd1ZhbHVlLCBEZXZpY2UuQi5yYXdWYWx1ZSwgV29ya1BhY2tl
dC5TSVpFXSkKKyAgICB9KCkKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hlZHVsZXI6IFNj
aGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAg
ICAgbGV0IHRhc2sgPSBXb3JrZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTog
cHJpb3JpdHksIHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNr
KQorICAgIH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFz
az8KKyAgICB7CisgICAgICAgIHJldHVybiBzZWxmLmpzLmludm9rZU1ldGhvZCgicnVuIiwgd2l0
aEFyZ3VtZW50czogW3BhY2tldF0pLnRvT2JqZWN0KCkgYXMhIFRhc2s/CisgICAgfQorCisgICAg
cHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1
ZXVlOiBQYWNrZXQpCisgICAgeworICAgICAgICBzZWxmLmpzID0gV29ya2VyVGFzay5jb25zdHJ1
Y3Rvci5jb25zdHJ1Y3Qod2l0aEFyZ3VtZW50czogW3NjaGVkdWxlcl0pCisgICAgICAgIHN1cGVy
LmluaXQoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1
ZXVlKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4uc3dpZnQgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lm
dC9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzU4MTU4NDA4NzhhN2FmZjZjYjVjMDRmYWNmNjZi
Nzk4MDEyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3aWZ0CkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBRdWFydHpDb3JlCisKK2xldCBpdGVyYXRpb25z
ID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitmb3IgXyBpbiAxLi4uaXRl
cmF0aW9ucyB7CisgICAgcnVuUmljaGFyZHMoKQorfQorbGV0IGVuZCA9IENBQ3VycmVudE1lZGlh
VGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkgKiAxMDAwKSkKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0NzFl
NWMxOTAyNWE4Y2M0NTY4M2Y4ZmZlNDJlODdhODM5OWRkNQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1bmN0aW9u
IGNyZWF0ZVdvcmtlclRhc2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7CisgICAgcmV0
dXJuIGNsYXNzIHsKKyAgICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7CisgICAgICAgICAg
ICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMuZGV2aWNlID0g
ZGV2aWNlQTsKKyAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAgICAgICB9CisK
KyAgICAgICAgcnVuKHBhY2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9PSBudWxsKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJyZW50KCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy5k
ZXZpY2UgPT09IGRldmljZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAgICAgICAgICBw
YWNrZXQuZGV2aWNlID0gdGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFja2V0LnByb2Nl
c3NlZCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7
IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmxldHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0
LmRhdGFbaV0gPSB0aGlzLmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaGFuZGxlV2l0aFBhY2tldChwYWNrZXQpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L3JpY2hhcmRzLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuc3dpZnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Qw
MzVhOTFjY2I3ZmZhNmU5ZGY5MjdlMzg2YmIwNTFiNWI1YzY0MgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L3JpY2hhcmRzLnN3aWZ0CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2lt
cG9ydCBEYXJ3aW4KKworbGV0IEVYUEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKK2xldCBFWFBF
Q1RFRF9IT0xEX0NPVU5UID0gOTI4OworCitmdW5jIHJ1blJpY2hhcmRzKCkKK3sKKyAgbGV0IHNj
aGVkdWxlciA9IFNjaGVkdWxlcigpCisKKyAgSWRsZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBwcmlvcml0eTogLklkbGUpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IFdvcmtQ
YWNrZXQobGluazogbmlsKQorICAgICAgcXVldWUgPSBXb3JrUGFja2V0KGxpbms6IHF1ZXVlKQor
ICAgICAgV29ya2VyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBQ
cmlvcml0eS5Xb3JrZXIsIHF1ZXVlOiBxdWV1ZSkKKyAgfSkoKQorCisgICh7CisgICAgICB2YXIg
cXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQSwgbGluazogbmlsKQorICAgICAgcXVldWUg
PSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQSwgbGluazogcXVldWUpCisgICAgICBxdWV1ZSA9IERl
dmljZVBhY2tldChkZXZpY2U6IC5BLCBsaW5rOiBxdWV1ZSkKKyAgICAgIEhhbmRsZXJUYXNrLmNy
ZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5
LkhhbmRsZXJBLCBxdWV1ZTogcXVldWUpCisgIH0pKCkKKworICAoeworICAgICAgdmFyIHF1ZXVl
ID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIsIGxpbms6IG5pbCkKKyAgICAgIHF1ZXVlID0gRGV2
aWNlUGFja2V0KGRldmljZTogLkIsIGxpbms6IHF1ZXVlKQorICAgICAgcXVldWUgPSBEZXZpY2VQ
YWNrZXQoZGV2aWNlOiAuQiwgbGluazogcXVldWUpCisgICAgICBIYW5kbGVyVGFzay5jcmVhdGUo
c2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkIsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5k
bGVyQiwgcXVldWU6IHF1ZXVlKQorICB9KSgpCisKKyAgRGV2aWNlVGFzay5jcmVhdGUoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkEsIHByaW9yaXR5OiBQcmlvcml0eS5EZXZpY2VBKQor
ICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQiwgcHJp
b3JpdHk6IFByaW9yaXR5LkRldmljZUIpCisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCkKKworICBp
ZiBzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fCBzY2hlZHVs
ZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQgeworICAgIHByaW50KCJFcnJvciBk
dXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0gXChzY2hlZHVsZXIucXVldWVDb3VudCksIGhv
bGRDb3VudCA9IFwoc2NoZWR1bGVyLmhvbGRDb3VudCkuIikKKyAgICBleGl0KDEpCisgIH0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFmZmNmOTU5MWI4NmU1M2ZlNDIzZTUzYmQwMTcxNjcyNjgxNjc5ODEK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzE4
IEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7
CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tl
dC5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi87IH07CisJCTE0MEFBQzQx
MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNo
YXJkcy5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxl
ci5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgKi87IH07CisJCTE0MEFB
QzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2su
c3dpZnQgKi87IH07CisJCTE0MEFBQzQ0MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lm
dCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzND
MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDUyNDlC
MDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRs
ZXJUYXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2Vy
VGFzay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0MEFBQzNFMjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovOyB9OworCQkx
NDBBQUM0NzI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNGMjQ5QjAxRDEwMDAxRjEx
RSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovOyB9OworCQkxNDE1QUQyNjI0OTlCQzVDMDA1QkIyRTQg
LyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0ICovOyB9OworLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICov
ID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxNDBBQUMzODI0OUIwMUQxMDAw
MUYxMUUgLyogUGFja2V0LnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9
IFBhY2tldC5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDMzkyNDlC
MDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lm
dDsgcGF0aCA9IHJpY2hhcmRzLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5zd2lmdDsgcGF0aCA9IFNjaGVkdWxlci5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IElkbGVUYXNrLnN3aWZ0OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyogSGFu
ZGxlclRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gSGFuZGxl
clRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNFMjQ5QjAx
RDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lm
dDsgcGF0aCA9IFdvcmtlclRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5zd2lmdDsgcGF0aCA9IERldmljZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3aWZ0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJk
c1N3aWZ0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQyNTI0
OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBtYWluLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJ
CTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MTVBRDE5MjQ5OUJDNUIwMDVC
QjJFNCA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFE
MjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8sCisJCQkJMTQxNUFEMjMyNDk5
QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjIyNDk5
QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1
Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFEMjQyNDk5QkM1
QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNr
LnN3aWZ0ICovLAorCQkJCTE0MEFBQzNEMjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5z
d2lmdCAqLywKKwkJCQkxNDBBQUMzQzI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQg
Ki8sCisJCQkJMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLywKKwkJ
CQkxNDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi8sCisJCQkJMTQw
QUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLywKKwkJCQkxNDBBQUMz
QjI0OUIwMUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCAqLywKKwkJCQkxNDBBQUMzRTI0OUIwMUQx
MDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCAqLywKKwkJCQkxNDE1QUQyNTI0OTlCQzVDMDA1
QkIyRTQgLyogbWFpbi5zd2lmdCAqLywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNTd2lmdDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDE1QUQyMTI0
OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1
QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJp
Y2hhcmRzU3dpZnQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQxNUFEMUUyNDk5QkM1
QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0IC8q
IEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxl
cyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNTd2lmdDsKKwkJCXByb2R1Y3ROYW1lID0gUmlj
aGFyZHNTd2lmdDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDE1QUQyMjI0OTlCQzVDMDA1QkIy
RTQgLyogUmljaGFyZHNTd2lmdCAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9k
dWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTE0MTVBRDFBMjQ5OUJDNUIwMDVC
QjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlh
dHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0
VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDE1
QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAx
Mi4wOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIlJpY2hhcmRzU3dpZnQiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNl
LAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNDsKKwkJCXBy
b2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLzsK
KwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0
cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lmdCAqLywK
KwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0
IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUM0NjI0
OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0
MTVBRDI2MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCBpbiBTb3VyY2VzICov
LAorCQkJCTE0MEFBQzQ0MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MEFBQzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNv
dXJjZXMgKi8sCisJCQkJMTQwQUFDNDUyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3
aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hh
cmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8q
IFBhY2tldC5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjEx
RSAvKiBEZXZpY2VUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0
aW9uICovCisJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0g
WUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19B
R0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsK
KwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RV
TEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19F
TkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRP
UkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFU
SU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19F
UlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lU
X1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJ
CQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZF
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dS
RVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwkJCQlFTkFC
TEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlFTkFCTEVfVEVTVEFCSUxJVFkgPSBZ
RVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfRFlOQU1J
Q19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKKwkJCQlHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
ID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JF
U1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAx
MC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBJTkNMVURFX1NPVVJDRTsKKwkJCQlN
VExfRkFTVF9NQVRIID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9BQ1RJVkVfQ09NUElMQVRJT05fQ09ORElUSU9OUyA9
IERFQlVHOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdf
QU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNU
X0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RB
TkRBUkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJ
CQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMg
PSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FU
RURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JK
Q19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NP
TU1FTlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JF
Q1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09C
SkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NM
QVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVX
T1JLX0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJ
TEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NP
REUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFU
ID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJ
CQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTExOworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNU
T1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNT
SVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9V
TlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
MTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87CisJCQkJTVRMX0ZBU1RfTUFUSCA9
IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0NPTVBJTEFUSU9OX01PREUg
PSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU8iOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQg
LyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAv
KiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7CisJ
CQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
KwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiUmljaGFyZHNTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0OTlC
QzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJCQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8q
IFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFE
MjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJSaWNoYXJkc1N3aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJDNUMw
MDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVs
ZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFBMjQ5
OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQueGNzY2hlbWUgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ov
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjM2NhZTUxNTZjYzFhZWFjYzFkZTYwZmYwMWJlNDljNWQzM2YyZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lm
dC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1l
CkBAIC0wLDAgKzEsODEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8U2NoZW1lCisgICBMYXN0VXBncmFkZVZlcnNpb24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAi
MS43Ij4KKyAgIDxCdWlsZEFjdGlvbgorICAgICAgcGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllF
UyIKKyAgICAgIGJ1aWxkSW1wbGljaXREZXBlbmRlbmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWls
ZEFjdGlvbkVudHJpZXM+CisgICAgICAgICA8QnVpbGRBY3Rpb25FbnRyeQorICAgICAgICAgICAg
YnVpbGRGb3JUZXN0aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZ
RVMiCisgICAgICAgICAgICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCisgICAgICAgICAgICBi
dWlsZEZvckFyY2hpdmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFuYWx5emluZyA9
ICJZRVMiPgorICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAg
QnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50
SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICAgICBC
dWlsZGFibGVOYW1lID0gIlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRO
YW1lID0gIlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVy
ID0gImNvbnRhaW5lcjpSaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICAgICA8L0J1
aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgICAgIDwvQnVpbGRBY3Rpb25FbnRyeT4KKyAgICAgIDwv
QnVpbGRBY3Rpb25FbnRyaWVzPgorICAgPC9CdWlsZEFjdGlvbj4KKyAgIDxUZXN0QWN0aW9uCisg
ICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2Vy
SWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAg
ICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlv
bi5MYXVuY2hlci5MTERCIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZ
RVMiPgorICAgICAgPFRlc3RhYmxlcz4KKyAgICAgIDwvVGVzdGFibGVzPgorICAgPC9UZXN0QWN0
aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVh
c2UiCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZv
dW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1bmNo
U3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAg
ICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3Vt
ZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50
ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1
aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0g
IjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxl
SWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9
ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0g
IlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzU3dp
ZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJk
c1N3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAg
IDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJv
ZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBz
aG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50
aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAg
IGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVj
dFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAg
ICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0g
InByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5
OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTd2lm
dCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIKKyAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU3dpZnQueGNvZGVw
cm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQ
cm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgor
ICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4K
KyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
KyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0
aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxl
YXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvRGV2aWNlVGFz
ay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJk
c1N3aWZ0L0RldmljZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkyMGE1YWQ0NDJkZjFlYzZhODc3
Y2EwNDA5ZGM0M2IxMTVkOTU5OAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L0RldmljZVRhc2suc3dpZnQKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworZW51bSBEZXZpY2UgeworICAgIGNhc2UgQQorICAg
IGNhc2UgQgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBl
YWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRh
IGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7
CisgICAgbGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQ
YWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVs
ZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBs
ZXQgdGFzayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNl
LCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykK
KyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/
CisgICAgeworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxl
dCBwYWNrZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2No
ZWR1bGVyLmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYu
cGVuZGluZ1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQo
c2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkp
CisgICAgeworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0
KHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9IYW5kbGVyVGFzay5zd2lmdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2Fm
YjIxYjIyYTc1YmU1MTBkMTJjYjcyMTgzOGMxMTEwNGQwNjc2Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSGFu
ZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoqCisgKiBBIHRh
c2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3VzcGVuZHMgaXRzZWxm
LgorICovCitjbGFzcyBIYW5kbGVyVGFzayA6IFRhc2sgeworICAgIHZhciBkZXZpY2U6IERldmlj
ZQorICAgIHZhciB3b3JrUXVldWUgOiBXb3JrUGFja2V0PyA9IG5pbAorICAgIHZhciBkZXZpY2VR
dWV1ZSA6IERldmljZVBhY2tldD8gPSBuaWwKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hl
ZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNlOiBEZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVl
dWU6IERldmljZVBhY2tldCkKKyAgICB7CisgICAgICAgIGxldCB0YXNrID0gSGFuZGxlclRhc2so
c2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJpb3JpdHks
IHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAgIH0K
KworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAgICB7
CisgICAgICAgIGlmIGxldCBwID0gcGFja2V0IHsKKyAgICAgICAgICAgIGlmIGxldCB3b3JrID0g
cCBhcz8gV29ya1BhY2tldCB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVldWUgPSB3b3Jr
LmFkZFRvKHF1ZXVlOiBzZWxmLndvcmtRdWV1ZSkgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSAocCBhcyEgRGV2
aWNlUGFja2V0KS5hZGRUbyhxdWV1ZTogc2VsZi5kZXZpY2VRdWV1ZSkgYXMhIERldmljZVBhY2tl
dD8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiBsZXQgd29ya1BhY2tldCA9
IHNlbGYud29ya1F1ZXVlIHsKKyAgICAgICAgICAgIGxldCBwcm9jZXNzZWQgPSB3b3JrUGFja2V0
LnByb2Nlc3NlZAorICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCA8IFdvcmtQYWNrZXQuU0laRSkg
eworICAgICAgICAgICAgICAgIGlmIGxldCBkZXZpY2VQYWNrZXQgPSBzZWxmLmRldmljZVF1ZXVl
IHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZXZpY2VRdWV1ZSA9IGRldmljZVBhY2tldC5s
aW5rIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAgICAgICAgICAgICAgIGRldmljZVBhY2tldC5s
ZXR0ZXJJbmRleCA9IHdvcmtQYWNrZXQuZGF0YVtwcm9jZXNzZWRdCisgICAgICAgICAgICAgICAg
ICAgIHdvcmtQYWNrZXQucHJvY2Vzc2VkID0gcHJvY2Vzc2VkICsgMQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0OiBkZXZpY2VQYWNrZXQpCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZWxmLndvcmtRdWV1ZSA9IHdvcmtQYWNrZXQubGluayBhcyEgV29ya1BhY2tldD8KKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0OiB3b3JrUGFja2V0KQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci53
YWl0Q3VycmVudCgpCisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1
bGVyLCBkZXZpY2U6IERldmljZSwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogRGV2aWNlUGFj
a2V0KQorICAgIHsKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBkZXZpY2UKKyAgICAgICAgc3VwZXIu
aW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVl
dWUpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNo
YXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9JZGxlVGFzay5zd2lmdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MWNmMzFhYmNkMDY4ZTA1ODZjODg4NTEwNTM3MWMxZGM1NzgxZmU0Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvSWRsZVRhc2suc3dpZnQKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoq
CisgKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBj
b250cm9sIGJldHdlZW4gdGhlIHR3byBkZXZpY2UgdGFza3MuCisgKi8KK2NsYXNzIElkbGVUYXNr
IDogVGFzayB7CisgICAgdmFyIGhhc2ggOiBJbnQgPSAxCisgICAgdmFyIGNvdW50IDogSW50ID0g
MTAwMAorCisgICAgc3RhdGljIGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlv
cml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IElkbGVUYXNrKHNjaGVk
dWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5h
ZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBh
Y2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgc2VsZi5jb3VudCAtPSAxCisgICAgICBpZiBz
ZWxmLmNvdW50ID09IDAgeworICAgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5ob2xkQ3Vy
cmVudCgpCisgICAgICB9CisgICAgICBpZiAoc2VsZi5oYXNoICYgMSkgPT0gMCB7CisgICAgICAg
IHNlbGYuaGFzaCA9IHNlbGYuaGFzaCA+PiAxCisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxl
ci5yZWxlYXNlKGRldmljZTogLkEpCisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2gg
PSAoc2VsZi5oYXNoID4+IDEpIF4gMHhEMDA4CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxl
ci5yZWxlYXNlKGRldmljZTogLkIpCisgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0
KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAg
c3VwZXIuaW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAg
ICAgc2VsZi5yZXN1bWUoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1BhY2tldC5zd2lmdCBiL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1BhY2tldC5z
d2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MjdlMTBlY2UzMWFmNWQ2MTg1YzRiYmFjZDczMjEyZThlZDAwYmEw
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3
aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQg
YnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0YSBj
YXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUK
KyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3Mu
CisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3Rz
IGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisgKi8K
K2NsYXNzIFBhY2tldCB7CisgICAgdmFyIGRldmljZSA6IERldmljZQorICAgIHZhciBsaW5rIDog
UGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGluayA9IGxpbmsK
KyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEg
d29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAgZnVuYyBhZGRU
byhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGluayA9IG5pbAor
ICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAg
ICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4dC5saW5rID0g
c2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitmaW5hbCBjbGFzcyBEZXZp
Y2VQYWNrZXQgOiBQYWNrZXQgeworICAgIHZhciBsZXR0ZXJJbmRleCA6IEludCA9IDAKK30KKwor
ZmluYWwgY2xhc3MgV29ya1BhY2tldCA6IFBhY2tldCB7CisgICAgc3RhdGljIGxldCBTSVpFIDog
SW50ID0gNAorCisgICAgdmFyIHByb2Nlc3NlZCA6IEludCA9IDAKKyAgICB2YXIgZGF0YSA6IFtJ
bnRdID0gW0ludF0ocmVwZWF0aW5nOiAwLCBjb3VudDogU0laRSkKKworICAgIGluaXQobGluazog
UGFja2V0PykKKyAgICB7CisgICAgICAgIHN1cGVyLmluaXQoZGV2aWNlOiAuQSwgbGluazogbGlu
aykKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWFhMGY1MTkyNTI1MTAwMDgxMDJjOWVlNmQ5ZmFmYTQxNmMzOWFmYwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0L1NjaGVkdWxlci5zd2lmdApAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
LyoqCisqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tz
IGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRv
bmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2gg
aG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBj
b25zdHJ1Y3RvcgorKi8KK2NsYXNzIFNjaGVkdWxlciB7CisgICAgcHJpdmF0ZShzZXQpIHZhciBx
dWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgaG9sZENvdW50ID0gMAorICAgIHBy
aXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0
KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAgICAvKioKKyAgICAqIEV4ZWN1dGUgdGhlIHRh
c2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgICAgKi8KKyAgICBmdW5jIHNjaGVkdWxl
KCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAg
d2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRUYXNrIHsKKyAgICAgICAgICAgIHZhciBwYWNr
ZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAgICBzd2l0Y2ggdGFzay5zdGF0ZSB7CisgICAg
ICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tldDoKKyAgICAgICAgICAgICAgICBwYWNrZXQg
PSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoCisgICAgICAg
ICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0OgorICAgICAgICAgICAgICAgIHNlbGYuY3Vy
cmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFzayA9IHRhc2submV4dAorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmll
ZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAgICovCisgICAgZnVuYyBhZGQodGFzazogVGFz
aykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9IHNlbGYubGlzdAorICAgICAgICBzZWxmLmxp
c3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlz
IGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgorICAg
ICovCisgICAgZnVuYyByZWxlYXNlKGRldmljZTogRGV2aWNlKSAtPiBUYXNrPworICAgIHsKKyAg
ICAgICAgZ3VhcmQgbGV0IHRhc2sgOiBEZXZpY2VUYXNrID0gZmluZCh3aGVyZTogeyAkMC5kZXZp
Y2UgPT0gZGV2aWNlIH0pIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5pbAorICAgICAgICB9
CisgICAgICAgIHRhc2sucmVsZWFzZSgpCisgICAgICAgIGlmIHRhc2sucHJpb3JpdHkgPiBzZWxm
LmN1cnJlbnRUYXNrIS5wcmlvcml0eSB7CisgICAgICAgICAgICByZXR1cm4gdGFzaworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrCisgICAgfQorCisgICAgLyoqCisg
ICAgKiBCbG9jayB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5l
eHQgdGFzayBjb250cm9sIGJsb2NrCisgICAgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdp
bGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICAgICogcmVs
ZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgICAgKi8KKyAgICBmdW5j
IGhvbGRDdXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuaG9sZENvdW50ICs9
IDEKKyAgICAgICAgc2VsZi5jdXJyZW50VGFzayEuaG9sZCgpCisgICAgICAgIHJldHVybiBzZWxm
LmN1cnJlbnRUYXNrIS5uZXh0CisgICAgfQorCisgICAgLyoqCisgICAgKiBTdXNwZW5kIHRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wg
YmxvY2sKKyAgICAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5k
ZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgICAgKi8KKyAgICBmdW5jIHdhaXRD
dXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2shLndhaXQo
KQorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50VGFzaworICAgIH0KKworICAgIC8qKgorICAg
ICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVz
ZWQgYnkgdGhlIHRhc2sKKyAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtl
IHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICAgICogc3VzcGVuZGVkLgor
ICAgICovCisgICAgZnVuYyBxdWV1ZShwYWNrZXQ6IERldmljZVBhY2tldCkgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIGxldCB0YXNrIDogRGV2aWNlVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsg
JDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0
YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIHF1ZXVlKHBhY2tl
dDogV29ya1BhY2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogV29ya2Vy
VGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgXyBpbiB0cnVlIH0pCisgICAgICAgIHJldHVybiBx
dWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgZnVuYyBo
YW5kbGUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRh
c2sgOiBIYW5kbGVyVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tl
dC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6
IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IERldmljZVBhY2tldCkg
LT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogSGFuZGxlclRhc2s/ID0gc2VsZi5m
aW5kKHdoZXJlOiB7ICQwLmRldmljZSA9PSBwYWNrZXQuZGV2aWNlIH0pCisgICAgICAgIHJldHVy
biBxdWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgcHJp
dmF0ZSBmdW5jIHF1ZXVlSW1wbCh0YXNrOiBUYXNrPywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2s/
CisgICAgeworICAgICAgICBndWFyZCB0YXNrICE9IG5pbCBlbHNlIHsgcmV0dXJuIG5pbCB9Cisg
ICAgICAgIHNlbGYucXVldWVDb3VudCArPSAxCisgICAgICAgIHBhY2tldC5saW5rID0gbmlsCisg
ICAgICAgIHJldHVybiB0YXNrIS5jaGVja1ByaW9yaXR5QWRkKHRhc2s6IHNlbGYuY3VycmVudFRh
c2shLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1bmMgZmluZDxUOiBU
YXNrPih3aGVyZSBjb25kaXRpb246IChUKSAtPiBCb29sKSAtPiBUPworICAgIHsKKyAgICAgICAg
dmFyIHRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAgd2hpbGUgdGFzayAhPSBuaWwgeworICAgICAg
ICAgICAgaWYgbGV0IHQgPSB0YXNrIGFzPyBUIHsKKyAgICAgICAgICAgICAgICBpZiBjb25kaXRp
b24odCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhc2sgPSB0YXNrIS5uZXh0CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5pbAorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Rhc2suc3dpZnQgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3
aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjNzJiNzlkZjUzMWU1ODc0NzU0NzEyZWNhMzBjY2UxNzJlZGY4YWUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3aWZ0CkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CitlbnVtIFByaW9yaXR5IDogSW50IHsKKyAgICBjYXNlIElkbGUgPSAwCisgICAgY2FzZSBXb3Jr
ZXIgPSAxMDAwCisgICAgY2FzZSBIYW5kbGVyQSA9IDIwMDAKKyAgICBjYXNlIEhhbmRsZXJCID0g
MzAwMAorICAgIGNhc2UgRGV2aWNlQSA9IDQwMDAKKyAgICBjYXNlIERldmljZUIgPSA1MDAwCisK
KyAgICBzdGF0aWMgZnVuYyA+KGxoczpTZWxmLCByaHM6U2VsZikgLT4gQm9vbCAKKyAgICB7Cisg
ICAgICAgIHJldHVybiBsaHMucmF3VmFsdWUgPiByaHMucmF3VmFsdWUKKyAgICB9Cit9CisKK2Ns
YXNzIFRhc2sgeworICAgIGxldCBzY2hlZHVsZXIgOiBTY2hlZHVsZXIKKyAgICBsZXQgcHJpb3Jp
dHkgOiBQcmlvcml0eQorICAgIHZhciBuZXh0IDogVGFzaz8gPSBuaWwKKyAgICBwcml2YXRlKHNl
dCkgdmFyIHF1ZXVlIDogUGFja2V0PworICAgIHByaXZhdGUoc2V0KSB2YXIgc3RhdGUgOiBTdGF0
ZSA9IC53YWl0aW5nCisKKyAgICBzdHJ1Y3QgU3RhdGUgOiBPcHRpb25TZXQgeworICAgICAgICBs
ZXQgcmF3VmFsdWU6IEludAorCisgICAgICAgIHN0YXRpYyBsZXQgcnVuIDogU3RhdGUgPSBbXQor
ICAgICAgICBzdGF0aWMgbGV0IGhhc1BhY2tldCA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDApCisg
ICAgICAgIHN0YXRpYyBsZXQgd2FpdGluZyA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDEpCisgICAg
ICAgIHN0YXRpYyBsZXQgaGVsZCA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDIpCisKKyAgICAgICAg
c3RhdGljIGxldCBydW5XaXRoUGFja2V0ID0gaGFzUGFja2V0LnVuaW9uKHJ1bikKKyAgICAgICAg
c3RhdGljIGxldCB3YWl0aW5nV2l0aFBhY2tldCA9IGhhc1BhY2tldC51bmlvbih3YWl0aW5nKQor
CisgICAgICAgIGluaXQocmF3VmFsdWU6IEludCkKKyAgICAgICAgeworICAgICAgICAgICAgc2Vs
Zi5yYXdWYWx1ZSA9IHJhd1ZhbHVlCisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jIHJ1bihw
YWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBwcmVjb25kaXRpb25GYWls
dXJlKCJUaGlzIG1ldGhvZCBtdXN0IGJlIG92ZXJyaWRkZW4iKSAKKyAgICB9CisKKyAgICBmdW5j
IHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgc2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAg
fQorCisgICAgZnVuYyBob2xkKCkKKyAgICB7CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5o
ZWxkKQorICAgIH0KKworICAgIGZ1bmMgd2FpdCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRl
Lmluc2VydCgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAg
ICAgICBzZWxmLnN0YXRlLnJlbW92ZSgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQ
YWNrZXQoKSAtPiBQYWNrZXQKKyAgICB7CisgICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVl
IQorICAgICAgICBzZWxmLnF1ZXVlID0gcGFja2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1
ZSA9PSBuaWwgeworICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAucnVuV2l0aFBhY2tldAorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBwYWNrZXQKKyAgICB9CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQo
dGFzazogVGFzaywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNl
bGYucXVldWUgPT0gbmlsIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAg
ICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oYXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxm
LnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUg
PSBwYWNrZXQuYWRkVG8ocXVldWU6IHNlbGYucXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRhc2sKKyAgICB9CisKKyAgICBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0
eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNrZXQ/ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5z
Y2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5Cisg
ICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQorICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAg
ICAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQoLmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9S
aWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRhNTFhMWJhNTVjNmE2NTg3ODE5YTQ4Y2JjZDgxZjRmY2Q4NDQxNzgKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lm
dC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2NsYXNzIFdv
cmtlclRhc2sgOiBUYXNrIHsKKyAgICBwcml2YXRlIHZhciBkZXZpY2UgOiBEZXZpY2UgPSAuQQor
ICAgIHByaXZhdGUgdmFyIGxldHRlckluZGV4IDogSW50ID0gMAorCisgICAgc3RhdGljIGZ1bmMg
Y3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQ
YWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IFdvcmtlclRhc2soc2NoZWR1bGVyOiBz
Y2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgICAgICBzY2hl
ZHVsZXIuYWRkKHRhc2s6IHRhc2spCisgICAgfQorCisgICAgb3ZlcnJpZGUgZnVuYyBydW4ocGFj
a2V0OiBQYWNrZXQ/KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgaWYgcGFja2V0ID09IG5pbCB7
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQoKQorICAgICAg
ICB9CisKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBzZWxmLmRldmljZSA9PSAuQSA/IC5CIDogLkEK
KworICAgICAgICBsZXQgd29yayA9IHBhY2tldCBhcyEgV29ya1BhY2tldAorICAgICAgICB3b3Jr
LmRldmljZSA9IHNlbGYuZGV2aWNlCisgICAgICAgIHdvcmsucHJvY2Vzc2VkID0gMAorICAgICAg
ICBmb3IgaSBpbiAwLi4uKFdvcmtQYWNrZXQuU0laRSAtIDEpIHsKKyAgICAgICAgICAgIHNlbGYu
bGV0dGVySW5kZXggKz0gMQorICAgICAgICAgICAgaWYgc2VsZi5sZXR0ZXJJbmRleCA+IDI2IHsK
KyAgICAgICAgICAgICAgICBzZWxmLmxldHRlckluZGV4ID0gMQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgd29yay5kYXRhW2ldID0gc2VsZi5sZXR0ZXJJbmRleAorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5oYW5kbGUocGFja2V0OiB3b3JrKQorICAgIH0KKwor
ICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5
LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNj
aGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvbWFpbi5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lm
dC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU3NTgxNTg0MDg3OGE3YWZm
NmNiNWMwNGZhY2Y2NmI3OTgwMTJkMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IFF1YXJ0ekNvcmUKKworbGV0IGl0ZXJhdGlv
bnMgPSA1MAorbGV0IHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCkKK2ZvciBfIGluIDEuLi5p
dGVyYXRpb25zIHsKKyAgICBydW5SaWNoYXJkcygpCit9CitsZXQgZW5kID0gQ0FDdXJyZW50TWVk
aWFUaW1lKCkKK3ByaW50KEludCgoZW5kLXN0YXJ0KSAqIDEwMDApKQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFy
ZHMuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9yaWNoYXJkcy5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDAzNWE5MWNjYjdmZmE2ZTlkZjky
N2UzODZiYjA1MWI1YjVjNjQyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFyZHMuc3dpZnQKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IERhcndpbgorCitsZXQgRVhQRUNURURfUVVF
VUVfQ09VTlQgPSAyMzIyOworbGV0IEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKK2Z1bmMg
cnVuUmljaGFyZHMoKQoreworICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyKCkKKworICBJZGxl
VGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiAuSWRsZSkKKworICAo
eworICAgICAgdmFyIHF1ZXVlID0gV29ya1BhY2tldChsaW5rOiBuaWwpCisgICAgICBxdWV1ZSA9
IFdvcmtQYWNrZXQobGluazogcXVldWUpCisgICAgICBXb3JrZXJUYXNrLmNyZWF0ZShzY2hlZHVs
ZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5LldvcmtlciwgcXVldWU6IHF1ZXVlKQor
ICB9KSgpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5B
LCBsaW5rOiBuaWwpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5BLCBsaW5r
OiBxdWV1ZSkKKyAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkEsIGxpbms6IHF1
ZXVlKQorICAgICAgSGFuZGxlclRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBkZXZp
Y2U6IC5BLCBwcmlvcml0eTogUHJpb3JpdHkuSGFuZGxlckEsIHF1ZXVlOiBxdWV1ZSkKKyAgfSko
KQorCisgICh7CisgICAgICB2YXIgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGlu
azogbmlsKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGluazogcXVl
dWUpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5CLCBsaW5rOiBxdWV1ZSkK
KyAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAu
QiwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJCLCBxdWV1ZTogcXVldWUpCisgIH0pKCkKKwor
ICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQSwgcHJp
b3JpdHk6IFByaW9yaXR5LkRldmljZUEpCisgIERldmljZVRhc2suY3JlYXRlKHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBkZXZpY2U6IC5CLCBwcmlvcml0eTogUHJpb3JpdHkuRGV2aWNlQikKKworICBz
Y2hlZHVsZXIuc2NoZWR1bGUoKQorCisgIGlmIHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVD
VEVEX1FVRVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9MRF9D
T1VOVCB7CisgICAgcHJpbnQoIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSBc
KHNjaGVkdWxlci5xdWV1ZUNvdW50KSwgaG9sZENvdW50ID0gXChzY2hlZHVsZXIuaG9sZENvdW50
KS4iKQorICAgIGV4aXQoMSkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9hcGktYmVuY2ggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL2FwaS1iZW5jaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MTUzYTQ5NTE2OTFmOTQxZDA2YzQxNzI3Y2UxNDFlYjI0MWFhMmU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9hcGktYmVuY2gKQEAgLTAs
MCArMSwyMTQgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisj
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCitzZXQgLWVvIHBpcGVmYWlsCisKK0FQSV9CRU5DSF9FWEVDVVRBQkxFPSQoYmFz
ZW5hbWUgIiQwIikKKworcHVzaGQgIiQoZGlybmFtZSAiJDAiKSIgJj4gL2Rldi9udWxsCitBUElf
QkVOQ0hfRElSPSRQV0QKK3BvcGQgJj4gL2Rldi9udWxsCisKK0JFTkNITUFSS1M9KCkKK0JVSUxE
X0RJUkVDVE9SSUVTPSgpCisKK3Nob3VsZEJ1aWxkPXRydWUKK3ZlcmJvc2U9ZmFsc2UKK2l0ZXJh
dGlvbnM9NQorCitsb2coKSB7CisgICAgaWYgWyAiJHZlcmJvc2UiID09IHRydWUgXTsgdGhlbgor
ICAgICAgICBlY2hvICIkKiIKKyAgICBmaQorfQorCitwcmludFVzYWdlKCkgeworICAgIGNhdCA8
PEVPRgordXNhZ2U6ICRBUElfQkVOQ0hfRVhFQ1VUQUJMRSBbLWh8LS1oZWxwXSBbLS1uby1idWls
ZF0gWy0tdmVyYm9zZV0gWy0taXRlcmF0aW9ucyA8bj0kaXRlcmF0aW9ucz5dIDxidWlsZF9kaXJl
Y3RvcnkxPiBbPGJ1aWxkX2RpcmVjdG9yeTI+IC4uLl0KK0VPRgorICAgIGV4aXQgMAorfQorCitj
b2xsZWN0RmxhZ3MoKSB7CisgICAgd2hpbGUgWyAkIyAtZ3QgMCBdOyBkbworICAgICAgICBjYXNl
ICIkMSIgaW4KKyAgICAgICAgICAgIC1ofC0taGVscCkKKyAgICAgICAgICAgICAgICBwcmludFVz
YWdlCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIC0tbm8tYnVpbGQpCisgICAgICAg
ICAgICAgICAgc2hvdWxkQnVpbGQ9ZmFsc2UKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAg
ICAgLS12ZXJib3NlKQorICAgICAgICAgICAgICAgIHZlcmJvc2U9dHJ1ZQorICAgICAgICAgICAg
ICAgIDs7CisgICAgICAgICAgICAtLWl0ZXJhdGlvbnMpCisgICAgICAgICAgICAgICAgc2hpZnQK
KyAgICAgICAgICAgICAgICBpdGVyYXRpb25zPSQxCisgICAgICAgICAgICAgICAgOzsKKyAgICAg
ICAgICAgICopCisgICAgICAgICAgICAgICAgQlVJTERfRElSRUNUT1JJRVM9KCIkQCIpCisgICAg
ICAgICAgICAgICAgYnJlYWsgMgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAg
ICAgICAgc2hpZnQKKyAgZG9uZQorCisgIGlmIFsgJHsjQlVJTERfRElSRUNUT1JJRVNbQF19IC1s
dCAxIF07IHRoZW4KKyAgICAgIHByaW50VXNhZ2UKKyAgICAgIGV4aXQgMQorICBmaQorCisgIGZv
ciBpIGluICIkeyFCVUlMRF9ESVJFQ1RPUklFU1tAXX0iOyBkbworICAgICAgbG9jYWwgYnVpbGRE
aXJlY3RvcnkKKyAgICAgIGJ1aWxkRGlyZWN0b3J5PSR7QlVJTERfRElSRUNUT1JJRVNbJGldfQor
CisgICAgICBpZiAhIFsgLWQgIiRidWlsZERpcmVjdG9yeSIgXTsgdGhlbgorICAgICAgICAgIGVj
aG8gIk5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICRidWlsZERpcmVjdG9yeSIKKyAgICAgICAg
ICBleGl0IDEKKyAgICAgIGZpCisKKyAgICAgIHB1c2hkICIkYnVpbGREaXJlY3RvcnkiICY+IC9k
ZXYvbnVsbAorICAgICAgQlVJTERfRElSRUNUT1JJRVNbJGldPSRQV0QKKyAgICAgIHBvcGQgJj4g
L2Rldi9udWxsCisgIGRvbmUKK30KKworY29sbGVjdEJlbmNobWFya3MoKSB7CisgICAgZm9yIGJl
bmNobWFyayBpbiAiJEFQSV9CRU5DSF9ESVIiLyovOyBkbworICAgICAgICBwdXNoZCAiJGJlbmNo
bWFyayIgJj4gL2Rldi9udWxsCisgICAgICAgIEJFTkNITUFSS1M9KCIke0JFTkNITUFSS1NbQF19
IiAiJFBXRCIpCisgICAgICAgIHBvcGQgJj4gL2Rldi9udWxsCisgICAgZG9uZQorfQorCitmb3JF
YWNoQmVuY2htYXJrKCkgeworICAgIGxvY2FsIGZ1bmN0b3IKKyAgICBmdW5jdG9yPSIkMSIKKyAg
ICBkZWNsYXJlICIkZnVuY3RvciIKKyAgICBmb3IgYmVuY2htYXJrSUQgaW4gIiR7IUJFTkNITUFS
S1NbQF19IjsgZG8KKyAgICAgICAgbG9jYWwgYmVuY2htYXJrCisgICAgICAgIGJlbmNobWFyaz0k
e0JFTkNITUFSS1NbJGJlbmNobWFya0lEXX0KKyAgICAgICAgcHVzaGQgIiRiZW5jaG1hcmsiICY+
IC9kZXYvbnVsbAorICAgICAgICBCRU5DSE1BUktfSUQ9JGJlbmNobWFya0lECisgICAgICAgIEJF
TkNITUFSS19OQU1FPSQoYmFzZW5hbWUgIiRiZW5jaG1hcmsiKQorICAgICAgICAiJGZ1bmN0b3Ii
CisgICAgICAgIHBvcGQgJj4gL2Rldi9udWxsCisgICAgZG9uZQorfQorCitidWlsZEJlbmNobWFy
aygpIHsKKyAgICBwcm9qZWN0PSRCRU5DSE1BUktfTkFNRS54Y29kZXByb2oKKworICAgIGlmICEg
WyAtZSAiJHByb2plY3QiIF07IHRoZW4KKyAgICAgICAgcmV0dXJuCisgICAgZmkKKworICAgIGxv
ZyAiQnVpbGRpbmcgJEJFTkNITUFSS19OQU1FLi4uIgorICAgIHhjb2RlYnVpbGQgLXByb2plY3Qg
IiRwcm9qZWN0IiAtdGFyZ2V0ICIkQkVOQ0hNQVJLX05BTUUiIC1jb25maWd1cmF0aW9uIFJlbGVh
c2UgYnVpbGQKK30KKworYnVpbGQoKSB7CisgICAgZm9yRWFjaEJlbmNobWFyayAiYnVpbGRCZW5j
aG1hcmsiCit9CisKK3J1bkpTQmVuY2htYXJrKCkgeworICAgICIkRFlMRF9GUkFNRVdPUktfUEFU
SC9qc2MiICIkQkVOQ0hNQVJLX05BTUUuanMiCit9CisKK3J1bk5hdGl2ZUJlbmNobWFyaygpIHsK
KyAgICBwdXNoZCAiYnVpbGQvUmVsZWFzZSIgJj4gL2Rldi9udWxsCisgICAgIi4vJEJFTkNITUFS
S19OQU1FIgorICAgIHBvcGQgJj4gL2Rldi9udWxsCit9CisKK3J1bkJlbmNobWFya0l0ZXJhdGlv
bigpIHsKKyAgICBpZiBbIC1lICJidWlsZCIgXTsgdGhlbgorICAgICAgICBydW5OYXRpdmVCZW5j
aG1hcmsKKyAgICBlbHNlCisgICAgICAgIHJ1bkpTQmVuY2htYXJrCisgICAgZmkKK30KKworcnVu
QmVuY2htYXJrKCkgeworICAgIGxvZyAiUnVubmluZyAkQkVOQ0hNQVJLX05BTUUuLi4iCisKKyAg
ICBsb2NhbCByZXN1bHQKKyAgICByZXN1bHQ9JChydW5CZW5jaG1hcmtJdGVyYXRpb24pCisgICAg
UkVTVUxUU1skKChCRU5DSE1BUktfSUQgKiBpdGVyYXRpb25zICsgSVRFUkFUSU9OKSldPSRyZXN1
bHQKKyAgICBsb2cgIkZpbmlzaGVkIGluICR7cmVzdWx0fW1zIgorfQorCitwcmludFJlc3VsdHMo
KSB7CisgICAgbG9jYWwgYnVpbGREaXJlY3RvcnkKKyAgICBidWlsZERpcmVjdG9yeT0kMQorCisg
ICAgZWNobyAiUmVzdWx0cyBmb3IgJGJ1aWxkRGlyZWN0b3J5ICgkaXRlcmF0aW9ucyBpdGVyYXRp
b25zKSIKKyAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKworICAgIHNjb3JlPTEK
KyAgICBmb3IgYmVuY2htYXJrSUQgaW4gIiR7IUJFTkNITUFSS1NbQF19IjsgZG8KKyAgICAgICAg
bG9jYWwgYmVuY2htYXJrIHN1bSBhdmcKKyAgICAgICAgYmVuY2htYXJrPSR7QkVOQ0hNQVJLU1sk
YmVuY2htYXJrSURdfQorICAgICAgICBzdW09MAorICAgICAgICBmb3IgaXRlcmF0aW9uIGluICQo
c2VxIDAgMSAkKChpdGVyYXRpb25zIC0gMSkpKTsgZG8KKyAgICAgICAgICAgIGxvY2FsIHJlc3Vs
dAorICAgICAgICAgICAgcmVzdWx0PSR7UkVTVUxUU1skKChiZW5jaG1hcmtJRCAqIGl0ZXJhdGlv
bnMgKyBpdGVyYXRpb24pKV19CisgICAgICAgICAgICBzdW09JCgoc3VtICsgcmVzdWx0KSkKKyAg
ICAgICAgZG9uZQorICAgICAgICBhdmc9JChlY2hvICIkc3VtLjAgLyAkaXRlcmF0aW9ucy4wIiB8
IGJjKQorICAgICAgICBzY29yZT0kKChzY29yZSAqIGF2ZykpCisgICAgICAgIGVjaG8gIiQoYmFz
ZW5hbWUgIiRiZW5jaG1hcmsiKTogJHthdmd9bXMiCisgICAgZG9uZQorICAgIHNjb3JlPSQoZWNo
byAiJHNjb3JlIiAiJHsjQkVOQ0hNQVJLU1tAXX0iIHwgYXdrICd7IHByaW50KDUwMDAuMCAvICgk
MS4wIF4gKDEuMCAvICQyKSkpIH0nKQorICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0iCisgICAgZWNobyAiU2NvcmU6ICRzY29yZSIKK30KKworcnVuKCkg
eworICAgIGxvY2FsIGJ1aWxkRGlyZWN0b3J5CisgICAgYnVpbGREaXJlY3Rvcnk9JDEKKworICAg
IGV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIPSRidWlsZERpcmVjdG9yeQorICAgIGZvciBpdGVy
YXRpb24gaW4gJChzZXEgMCAxICQoKGl0ZXJhdGlvbnMtMSkpKTsgZG8KKyAgICAgICAgSVRFUkFU
SU9OPSRpdGVyYXRpb24KKyAgICAgICAgZm9yRWFjaEJlbmNobWFyayAicnVuQmVuY2htYXJrIgor
ICAgIGRvbmUKKworICAgIHByaW50UmVzdWx0cyAiJGJ1aWxkRGlyZWN0b3J5IgorfQorCisKK21h
aW4oKSB7CisgICAgY29sbGVjdEZsYWdzICIkQCIKKyAgICBjb2xsZWN0QmVuY2htYXJrcworICAg
IGlmIFsgIiRzaG91bGRCdWlsZCIgPT0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIGJ1aWxkCisgICAg
ZmkKKworICAgIGZvciBidWlsZERpcmVjdG9yeSBpbiAiJHtCVUlMRF9ESVJFQ1RPUklFU1tAXX0i
OyBkbworICAgICAgICBydW4gIiRidWlsZERpcmVjdG9yeSIKKyAgICBkb25lCit9CisKK21haW4g
IiRAIgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZwppbmRleCA0YmRkMWY3MDU5YWNlNzk3M2I2MTlmNTc0YzJmMzMwMzM1
NzY3MzRjLi5lNjg4YzJlZGFjMTJjYmYwY2M0M2VmMTg3YjA2ZGNmYjUwOWIyYzE1IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAyMC0wNi0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6
YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBOZXcgQVBJIGJlbmNobWFyaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzUwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJQmVuY2ggaXMgYSBuZXcg
YmVuY2htYXJrIHN1aXRlIHRvIG1lYXN1cmUgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBKYXZhU2Ny
aXB0Q29yZSBBUEkuIEl0IGhhcyA0IGJlbmNobWFya3M6CisgICAgICAgIC0gUmljaGFyZHNKUzog
VGhpcyBpcyBpbXBvcnRlZCBmcm9tIE9jdGFuZSBhbmQgdXNlZCBhcyBhIHJlZmVyZW5jZSBzbyB3
ZSBrbm93IGhvdyBmYXN0IHRoZSBwdXJlIEpTIGltcGxlbWVudGF0aW9uIHJ1bnMuCisgICAgICAg
IC0gUmljaGFyZHNTd2lmdDogYSBTd2lmdCBwb3J0IG9mIHRoZSBiZW5jaG1hcmssIGFsc28gdXNl
ZCBhcyByZWZlcmVuY2UgZm9yIGhvdyBmYXN0IHRoZSBwdXJlIFN3aWZ0IGltcGxlbWVudGF0aW9u
IGlzLgorICAgICAgICAtIFJpY2hhcmRzTW9zdGx5SlM6IEFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBt
b3N0bHkgdGhlIHNhbWUgdGhlIGFzIHRoZSBKUyBiZW5jaG1hcmssIGJ1dCBoZXJlIHRoZSBXb3Jr
ZXJUYXNrCisgICAgICAgICAgaXMgaW1wbGVtZW50ZWQgaW4gU3dpZnQuIFRoZSBBUEkgaXMgdXNl
ZCB0byB3cml0ZSB0byB0aGUgcGFja2V0IGJlaW5nIHByb2Nlc3NlZCBhbmQgdGFsa2luZyB0byB0
aGUgc2NoZWR1bGVyLgorICAgICAgICAtIFJpY2hhcmRzTW9zdGx5U3dpZnQ6IGludmVyc2Ugb2Yg
dGhlIGFib3ZlLiBNb3N0bHkgdGhlIHNhbWUgY29kZSBmcm9tIHRoZSBTd2lmdCBiZW5jaGFyaywg
YnV0IGhlcmUgdGhlIFdvcmtlclRhc2sgaXMKKyAgICAgICAgICBpbXBsZW1lbnRlZCBpbiBKYXZh
U2NyaXB0LiBUaGUgQVBJIGlzIHVzZWQgdG8gcnVuIHRoZSBKUyB2ZXJzaW9uIG9mIHRoZSB0YXNr
IGFuZCBtYXJzaGFsaW5nIHRoZSBQYWNrZXQgYnkgdXNpbmcgSlNFeHBvcnQuCisKKyAgICAgICAg
VGhlIGJlbmNobWFyayBjYW4gYmUgYnVpbHQgYW5kIHJ1biB1c2luZyB0aGUgYXBpLWJlbmNoIHNj
cmlwdCwgYXMgZm9sbG93aW5nOgorCisgICAgICAgIFBlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gv
YXBpLWJlbmNoIFdlYktpdEJ1aWxkL1JlbGVhc2UKKworICAgICAgICBCeSBkZWZhdWx0LCBpdCB3
aWxsIGJ1aWxkIGVhY2ggb2YgdGhlIGJlbmNobWFya3MgYW5kIHJ1biA1IGl0ZXJhdGlvbnMuIFRo
ZSBzY29yZSBpcyBjYWxjdWxhdGVkIGJ5IHVzaW5nIHRoZSBnZW9tZWFuCisgICAgICAgIG9mIHRo
ZSBhdmVyYWdlIGZvciBlYWNoIGJlbmNobWFyay4gVGhlIHNjcmlwdCBwcmludHMgdGhlIGF2ZXJh
Z2UgZm9yIGVhY2ggYmVuY2htYXJrIGFuZCB0aGUgZmluYWwgc2NvcmU6CisKKyAgICAgICAgUmVz
dWx0cyBmb3IgL1ZvbHVtZXMvRGF0YS93azIvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNl
ICg1IGl0ZXJhdGlvbnMpCisgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAg
IFJpY2hhcmRzSlM6IDE1bXMKKyAgICAgICAgUmljaGFyZHNNb3N0bHlKUzogMjA0bXMKKyAgICAg
ICAgUmljaGFyZHNNb3N0bHlTd2lmdDogMzE1bXMKKyAgICAgICAgUmljaGFyZHNTd2lmdDogMjlt
cworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgIFNjb3JlOiA2OC43NjQyCisKKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc0pTL1JpY2hh
cmRzSlMuanM6IEFkZGVkLgorICAgICAgICAocnVuUmljaGFyZHMpOgorICAgICAgICAoU2NoZWR1
bGVyKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2spOgorICAgICAg
ICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRXb3JrZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxl
ci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlw
ZS5hZGREZXZpY2VUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmlu
Z1Rhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRUYXNrKToKKyAgICAgICAg
KFNjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3Rv
dHlwZS5yZWxlYXNlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1cnJlbnQp
OgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5zdXNwZW5kQ3VycmVudCk6CisgICAgICAg
IChTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sp
OgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuc2V0UnVubmluZyk6CisgICAg
ICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNOb3RIZWxkKToKKyAgICAgICAg
KFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlKToKKyAgICAgICAgKFRhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5jaGVja1ByaW9yaXR5QWRkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBl
LnRvU3RyaW5nKToKKyAgICAgICAgKElkbGVUYXNrKToKKyAgICAgICAgKElkbGVUYXNrLnByb3Rv
dHlwZS5ydW4pOgorICAgICAgICAoSWRsZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAg
ICAgKERldmljZVRhc2spOgorICAgICAgICAoRGV2aWNlVGFzay5wcm90b3R5cGUucnVuKToKKyAg
ICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdvcmtlclRh
c2spOgorICAgICAgICAoV29ya2VyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKFdvcmtl
clRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKEhhbmRsZXJUYXNrKToKKyAgICAg
ICAgKEhhbmRsZXJUYXNrLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoSGFuZGxlclRhc2sucHJv
dG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFBhY2tldCk6CisgICAgICAgIChQYWNrZXQucHJv
dG90eXBlLmFkZFRvKToKKyAgICAgICAgKFBhY2tldC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc01v
c3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMv
UmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZTogQWRkZWQuCisgICAgICAgICogQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTL21haW4uc3dpZnQ6IEFkZGVkLgorICAgICAg
ICAocnVuKF86KSk6CisgICAgICAgICh0b1N0cmluZyk6CisgICAgICAgIChXb3JrZXJUYXNrLnRv
U3RyaW5nKToKKyAgICAgICAgKFdvcmtlclRhc2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVu
Y2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTL3JpY2hhcmRzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKFNjaGVkdWxlcik6CisgICAgICAgIChT
Y2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90
b3R5cGUuYWRkV29ya2VyVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZEhh
bmRsZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNlVGFzayk6
CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNrKToKKyAgICAgICAg
KFNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90
eXBlLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucmVsZWFzZSk6Cisg
ICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50KToKKyAgICAgICAgKFNjaGVk
dWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3Rv
dHlwZS5xdWV1ZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrKToKKyAgICAgICAgKFRhc2tD
b250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcpOgorICAgICAgICAoVGFza0NvbnRyb2xC
bG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2Nr
LnByb3RvdHlwZS5tYXJrQXNIZWxkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLmlzSGVsZE9yU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLm1hcmtBc1N1c3BlbmRlZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5tYXJrQXNSdW5uYWJsZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5y
dW4pOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlvcml0eUFk
ZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAg
ICAgIChJZGxlVGFzayk6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAg
ICAgKElkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChEZXZpY2VUYXNrKToK
KyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChEZXZpY2VUYXNr
LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChIYW5kbGVyVGFzayk6CisgICAgICAgIChI
YW5kbGVyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEhhbmRsZXJUYXNrLnByb3RvdHlw
ZS50b1N0cmluZyk6CisgICAgICAgIChQYWNrZXQpOgorICAgICAgICAoUGFja2V0LnByb3RvdHlw
ZS5hZGRUbyk6CisgICAgICAgIChQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAg
KiBBUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNN
b3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWU6IEFkZGVkLgorICAgICAgICAqIEFQ
SUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZpY2VUYXNr
LnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKERldmljZVRhc2suY3JlYXRlKF86ZGV2aWNlOnByaW9y
aXR5OikpOgorICAgICAgICAoRGV2aWNlVGFzay5ydW4oXzopKToKKyAgICAgICAgKiBBUElCZW5j
aC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dp
ZnQ6IEFkZGVkLgorICAgICAgICAoSGFuZGxlclRhc2suZGV2aWNlKToKKyAgICAgICAgKEhhbmRs
ZXJUYXNrLmNyZWF0ZShfOmRldmljZTpwcmlvcml0eTpxdWV1ZTopKToKKyAgICAgICAgKEhhbmRs
ZXJUYXNrLnJ1bihfOikpOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC9JZGxlVGFzay5zd2lmdDogQWRkZWQuCisgICAgICAgIChJZGxl
VGFzay5jcmVhdGUoXzpwcmlvcml0eTopKToKKyAgICAgICAgKElkbGVUYXNrLnJ1bihfOikpOgor
ICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lm
dC9QYWNrZXQuc3dpZnQ6IEFkZGVkLgorICAgICAgICAoUGFja2V0LmFkZFRvKF86KSk6CisgICAg
ICAgICogQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Nj
aGVkdWxlci5zd2lmdDogQWRkZWQuCisgICAgICAgICh3YWl0Q3VycmVudCk6CisgICAgICAgICho
YW5kbGUoXzopKToKKyAgICAgICAgKFNjaGVkdWxlci5zY2hlZHVsZSk6CisgICAgICAgIChTY2hl
ZHVsZXIuYWRkKF86KSk6CisgICAgICAgIChTY2hlZHVsZXIucmVsZWFzZV8oXzopKToKKyAgICAg
ICAgKGhvbGRDdXJyZW50KToKKyAgICAgICAgKHF1ZXVlKF86KSk6CisgICAgICAgIChxdWV1ZUlt
cGwoXzpwYWNrZXQ6KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9S
aWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQ6IEFkZGVkLgorICAgICAgICAoVGFzay5ydW4o
XzopKToKKyAgICAgICAgKFRhc2sucmVsZWFzZV8pOgorICAgICAgICAoVGFzay5ob2xkKToKKyAg
ICAgICAgKFRhc2sud2FpdCk6CisgICAgICAgIChUYXNrLnJlc3VtZSk6CisgICAgICAgIChUYXNr
LnRha2VQYWNrZXQpOgorICAgICAgICAoVGFzay5jaGVja1ByaW9yaXR5QWRkKF86cGFja2V0Oikp
OgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlT
d2lmdC9Xb3JrZXJUYXNrLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKFdvcmtlclRhc2suY3JlYXRl
KF86cHJpb3JpdHk6cXVldWU6KSk6CisgICAgICAgIChXb3JrZXJUYXNrLnJ1bihfOikpOgorICAg
ICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9t
YWluLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0
L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanM6IEFkZGVkLgorICAgICAgICAocmV0dXJu
LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQv
UmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5zd2lmdDogQWRkZWQuCisgICAgICAgIChydW5S
aWNoYXJkcyk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIEFQSUJlbmNoL1Jp
Y2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lOiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SaWNo
YXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvRGV2aWNlVGFzay5zd2lmdDogQWRkZWQuCisgICAgICAg
IChEZXZpY2VUYXNrLmNyZWF0ZShfOmRldmljZTpwcmlvcml0eTopKToKKyAgICAgICAgKERldmlj
ZVRhc2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJk
c1N3aWZ0L0hhbmRsZXJUYXNrLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKEhhbmRsZXJUYXNrLmRl
dmljZSk6CisgICAgICAgIChIYW5kbGVyVGFzay5jcmVhdGUoXzpkZXZpY2U6cHJpb3JpdHk6cXVl
dWU6KSk6CisgICAgICAgIChIYW5kbGVyVGFzay5ydW4oXzopKToKKyAgICAgICAgKiBBUElCZW5j
aC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQ6IEFkZGVkLgorICAg
ICAgICAoSWRsZVRhc2suY3JlYXRlKF86cHJpb3JpdHk6KSk6CisgICAgICAgIChJZGxlVGFzay5y
dW4oXzopKToKKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQv
UGFja2V0LnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKFBhY2tldC5hZGRUbyhfOikpOgorICAgICAg
ICAqIEFQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQ6
IEFkZGVkLgorICAgICAgICAoU2NoZWR1bGVyLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxl
ci5hZGQoXzopKToKKyAgICAgICAgKFNjaGVkdWxlci5yZWxlYXNlKF86KSk6CisgICAgICAgICho
b2xkQ3VycmVudCk6CisgICAgICAgICh3YWl0Q3VycmVudCk6CisgICAgICAgIChxdWV1ZShfOikp
OgorICAgICAgICAoaGFuZGxlKF86KSk6CisgICAgICAgIChxdWV1ZUltcGwoXzpwYWNrZXQ6KSk6
CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Rhc2suc3dp
ZnQ6IEFkZGVkLgorICAgICAgICAoVGFzay5ydW4oXzopKToKKyAgICAgICAgKFRhc2sucmVsZWFz
ZSk6CisgICAgICAgIChUYXNrLmhvbGQpOgorICAgICAgICAoVGFzay53YWl0KToKKyAgICAgICAg
KFRhc2sucmVzdW1lKToKKyAgICAgICAgKFRhc2sudGFrZVBhY2tldCk6CisgICAgICAgIChUYXNr
LmNoZWNrUHJpb3JpdHlBZGQoXzpwYWNrZXQ6KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFy
ZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQ6IEFkZGVkLgorICAgICAgICAo
V29ya2VyVGFzay5jcmVhdGUoXzpwcmlvcml0eTpxdWV1ZTopKToKKyAgICAgICAgKFdvcmtlclRh
c2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3
aWZ0L21haW4uc3dpZnQ6IEFkZGVkLgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzU3dpZnQv
UmljaGFyZHNTd2lmdC9yaWNoYXJkcy5zd2lmdDogQWRkZWQuCisgICAgICAgIChydW5SaWNoYXJk
cyk6CisgICAgICAgICogQVBJQmVuY2gvYXBpLWJlbmNoOiBBZGRlZC4KKwogMjAyMC0wNS0wOSAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
VXNlIFdFQktJVF9FWEVDVVRBQkxFIGluIE1hbGxvY0JlbmNoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403133</attachid>
            <date>2020-06-29 16:36:32 -0700</date>
            <delta_ts>2020-06-29 18:12:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213750-20200629163628.patch</filename>
            <type>text/plain</type>
            <size>164602</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODgwCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNKUy9SaWNoYXJkc0pTLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZjcxYThiZWUyNjA1
MjJlM2EyMDViMzUxZTA4YzJjOGE1YTE2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzSlMvUmljaGFyZHNKUy5qcwpAQCAtMCwwICsxLDU0MSBA
QAorLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vICAgICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisv
LyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
ICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGhpcyBpcyBhIEphdmFT
Y3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRzCisvLyBiZW5jaG1hcmsgZnJvbToK
Ky8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bXIxMC9CZW5jaC5odG1sCisvLwor
Ly8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBpbiBCQ1BMIGJ5Cisv
LyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUgUmljaGFyZHMgYmVuY2htYXJrIHNp
bXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisgKiBvcGVyYXRpbmcgc3lzdGVtLgor
ICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZhciBzY2hlZHVsZXIgPSBuZXcgU2No
ZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJRF9JRExFLCAwLCBudWxsLCBDT1VO
VCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9XT1JLRVIsIEtJTkRfV09S
Syk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX1dPUktFUiwgS0lORF9XT1JLKTsK
KyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VSLCAxMDAwLCBxdWV1ZSk7CisKKyAg
cXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1
ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHF1
ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RFVklDRSk7CisgIHNj
aGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0EsIDIwMDAsIHF1ZXVlKTsKKworICBx
dWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgcXVl
dWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVWSUNFKTsKKyAgc2No
ZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwgMzAwMCwgcXVldWUpOworCisgIHNj
aGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0MDAwLCBudWxsKTsKKworICBzY2hl
ZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAwMCwgbnVsbCk7CisKKyAgc2NoZWR1
bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVDVEVE
X1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hP
TERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAgIkVycm9yIGR1cmluZyBleGVjdXRp
b246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVlQ291bnQgKworICAgICAgICAiLCBo
b2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCArICIuIjsKKyAgICB0aHJvdyBuZXcg
RXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAxMDAwOworCisvKioKKyAqIFRoZXNl
IHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIHBhY2tldCBpcyBxdWV1ZWQg
YW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0IG9uIGhvbGQgaW4gYSBjb3JyZWN0
IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2ZSBhbnkgbWVhbmluZyBhIHN1Y2gg
YnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3JyZWN0IHJ1biBzbyBpZiB0aGUgYWN0
dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50IGZyb20KKyAqIHRoZSBleHBlY3Rl
ZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAqKi8KK3ZhciBF
WFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQRUNURURfSE9MRF9DT1VOVCA9IDky
ODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0
IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisgKiBwcmlvcml0aWVzLiAgU2NoZWR1
bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNrIGNvbnRyb2wgYmxvY2tz
CisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEgcXVldWUgdGhleSBhcmUgcHJvY2Vz
c2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTY2hlZHVsZXIoKSB7CisgIHRo
aXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50ID0gMDsKKyAgdGhpcy5ibG9ja3Mg
PSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMubGlzdCA9IG51bGw7CisgIHRoaXMu
Y3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElkID0gbnVsbDsKK30KKwordmFyIElE
X0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAgPSAxOwordmFyIElEX0hBTkRMRVJf
QSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFyIElEX0RFVklDRV9BICAgPSA0Owor
dmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9PRl9JRFMgPSA2OworCit2YXIgS0lO
RF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9IDE7CisKKy8qKgorICogQWRkIGFu
IGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRl
bnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHBy
aW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBv
ZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFk
ZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIGNvdW50KSB7CisgIHRo
aXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IElkbGVUYXNrKHRoaXMs
IDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdvcmsgdGFzayB0byB0aGlzIHNjaGVk
dWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBw
YXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tl
dH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisg
Ki8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJp
b3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcg
V29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsKK307CisKKy8qKgorICogQWRkIGEg
aGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBp
ZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3Mg
cHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBi
ZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRIYW5k
bGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFz
ayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRhc2sodGhpcykpOworfTsKKworLyoq
CisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2lu
dH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkg
dGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBv
ZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hlZHVsZXIucHJvdG90
eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSkgeworICB0
aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IERldmljZVRhc2sodGhpcykpCit9
OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgYW5kIG1hcmsgaXQgYXMgcnVubmlu
Zy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0g
cXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBA
cGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykg
eworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMuY3Vy
cmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRh
c2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9m
IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQor
ICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3Nl
ZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrIHRvIGFkZAorICov
CitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBuZXcgVGFza0NvbnRyb2xCbG9jayh0
aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlzLmxpc3QgPSB0aGlz
LmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRoaXMuY3VycmVudFRjYjsKK307CisK
Ky8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNjaGVkdWxlci4KKyAq
LworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5j
dXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhpcy5jdXJyZW50VGNiICE9IG51bGwp
IHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9yU3VzcGVuZGVkKCkpIHsKKyAgICAg
IHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5saW5rOworICAgIH0gZWxzZSB7Cisg
ICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRjYi5pZDsKKyAgICAgIHRoaXMuY3Vy
cmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAgICB9CisgIH0KK307CisKKy8qKgor
ICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBhbmQgcmV0dXJuIHRo
ZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhlIHRh
c2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVhc2UgPSBmdW5jdGlv
biAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lkXTsKKyAgaWYgKHRjYiA9PSBudWxs
KSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgpOworICBpZiAodGNiLnByaW9yaXR5
ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAgcmV0dXJuIHRjYjsKKyAgfSBlbHNl
IHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9Cit9OworCisvKioKKyAqIEJsb2Nr
IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNv
bnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFk
ZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgKiByZWxlYXNlZCwgZXZlbiBpZiBu
ZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5ob2xkQ3Vy
cmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291bnQrKzsKKyAgdGhpcy5jdXJyZW50
VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRjYi5saW5rOworfTsKKwor
LyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFk
ZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQgPSBmdW5jdGlvbiAoKSB7CisgIHRo
aXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRj
YjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2Yg
dGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFj
a2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICogc3Vz
cGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0aGUgcGFja2V0IHRvIGFkZAorICov
CitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rpb24gKHBhY2tldCkgeworICB2YXIg
dCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0ID09IG51bGwpIHJldHVybiB0Owor
ICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0LmxpbmsgPSBudWxsOworICBwYWNrZXQuaWQg
PSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQcmlvcml0eUFkZCh0aGlzLmN1cnJl
bnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFzayBjb250cm9sIGJsb2NrIG1hbmFn
ZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNrYWdlcyBhc3NvY2lhdGVkCisgKiB3
aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2NrfSBsaW5rIHRoZSBwcmVjZWRpbmcg
YmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlk
IG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgb2Yg
dGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiBwYWNrYWdl
cyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0aGUg
dGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFRhc2tDb250cm9sQmxvY2sobGlu
aywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmxpbmsgPSBsaW5rOworICB0
aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTsKKyAgdGhpcy5xdWV1ZSA9
IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAocXVldWUgPT0gbnVsbCkgeworICAg
IHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0gZWxzZSB7CisgICAgdGhpcy5zdGF0
ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQorfQorCisvKioKKyAqIFRoZSB0YXNr
IGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuCisgKi8KK3ZhciBTVEFURV9S
VU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMgcGFja2V0cyBsZWZ0IHRvIHByb2Nl
c3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisKKy8qKgorICogVGhlIHRhc2sgaXMg
bm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMgbm90IGJsb2NrZWQgYXMgc3VjaCBh
bmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAqLwordmFyIFNUQVRFX1NV
U1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMgYmxvY2tlZCBhbmQgY2Fubm90IGJl
IHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2VkLgorICovCit2YXIgU1RBVEVfSEVM
RCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUgPSBTVEFURV9TVVNQRU5ERUQg
fCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVMRCA9IH5TVEFURV9IRUxEOworCitU
YXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5nID0gZnVuY3Rpb24gKCkgeworICB0
aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90
eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0
YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5t
YXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNU
QVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5pc0hlbGRPclN1c3Bl
bmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLnN0YXRlICYgU1RBVEVfSEVMRCkg
IT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERUQpOworfTsKKworVGFza0NvbnRy
b2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkgeworICB0aGlz
LnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRFRDsKK307CisKK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0
YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOworfTsKKworLyoqCisgKiBSdW5zIHRo
aXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBhbmQgcmV0dXJucyB0aGUgbmV4dCB0
YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUucnVuID0gZnVuY3Rp
b24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5E
RURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1ZXVlOworICAgIHRoaXMucXVldWUg
PSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAgICB0aGlz
LnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5zdGF0ZSA9
IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBwYWNrZXQgPSBudWxsOwor
ICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7Cit9OworCisvKioKKyAqIEFkZHMg
YSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxvY2sncyB0YXNrLCBtYXJrcyB0aGlz
IGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCByZXR1cm5zIHRoZSBuZXh0IHJ1bm5h
YmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkp
LgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5jaGVja1ByaW9yaXR5QWRkID0gZnVu
Y3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7CisgICAg
dGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtBc1J1bm5hYmxlKCk7CisgICAgaWYg
KHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1cm4gdGhpczsKKyAgfSBlbHNlIHsK
KyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMucXVldWUpOworICB9CisgIHJldHVy
biB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5j
dGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMudGFzayArICJAIiArIHRoaXMuc3Rh
dGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29y
ayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3bworICogZGV2aWNlIHRh
c2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2NoZWR1bGVyIHRoYXQg
bWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2MSBhIHNlZWQgdmFsdWUgdGhhdCBj
b250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2NoZWR1bGVkCisgKiBAcGFyYW0ge2lu
dH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRhc2sgc2hvdWxkIGJlIHNjaGVkdWxl
ZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElkbGVUYXNrKHNjaGVkdWxlciwgdjEs
IGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0gdjE7
CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRhc2sucHJvdG90eXBlLnJ1biA9IGZ1
bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOworICBpZiAodGhpcy5jb3VudCA9PSAw
KSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKKyAgaWYgKCh0aGlzLnYxICYg
MSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+IDE7CisgICAgcmV0dXJuIHRoaXMu
c2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9IGVsc2UgeworICAgIHRoaXMudjEg
PSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVs
ZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVUYXNrLnByb3RvdHlwZS50b1N0cmlu
ZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFzayIKK307CisKKy8qKgorICogQSB0
YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBpdCBoYXMgYmVlbiBydW4g
dG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBleHRlcm5hbCBkZXZpY2Uu
CisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5h
Z2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIERldmljZVRhc2so
c2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0aGlzLnYxID0g
bnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkg
eworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAodGhpcy52MSA9PSBudWxsKSByZXR1
cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKKyAgICB2YXIgdiA9IHRoaXMudjE7
CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYp
OworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7CisgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0RldmljZVRhc2sucHJvdG90eXBlLnRv
U3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRldmljZVRhc2siOworfTsKKworLyoq
CisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMuCisgKiBAcGFyYW0ge1Nj
aGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawor
ICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB1c2VkIHRvIHNwZWNpZnkgaG93IHdvcmsgcGFja2V0
cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBwYXJhbSB7aW50fSB2MiBhbm90aGVyIHNlZWQgdXNlZCB0
byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlwdWxhdGVkCisgKiBAY29uc3RydWN0
b3IKKyAqLworZnVuY3Rpb24gV29ya2VyVGFzayhzY2hlZHVsZXIsIHYxLCB2MikgeworICB0aGlz
LnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0aGlzLnYyID0gdjI7
Cit9CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAg
aWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnN1c3BlbmRD
dXJyZW50KCk7CisgIH0gZWxzZSB7CisgICAgaWYgKHRoaXMudjEgPT0gSURfSEFORExFUl9BKSB7
CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9COworICAgIH0gZWxzZSB7CisgICAgICB0aGlz
LnYxID0gSURfSEFORExFUl9BOworICAgIH0KKyAgICBwYWNrZXQuaWQgPSB0aGlzLnYxOworICAg
IHBhY2tldC5hMSA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7IGkrKykg
eworICAgICAgdGhpcy52MisrOworICAgICAgaWYgKHRoaXMudjIgPiAyNikgdGhpcy52MiA9IDE7
CisgICAgICBwYWNrZXQuYTJbaV0gPSB0aGlzLnYyOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIucXVldWUocGFja2V0KTsKKyAgfQorfTsKKworV29ya2VyVGFzay5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiV29ya2VyVGFzayI7Cit9OworCisv
KioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNw
ZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVs
ZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9u
IEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsK
KyAgdGhpcy52MSA9IG51bGw7CisgIHRoaXMudjIgPSBudWxsOworfQorCitIYW5kbGVyVGFzay5w
cm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ICE9IG51bGwp
IHsKKyAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JLKSB7CisgICAgICB0aGlzLnYxID0g
cGFja2V0LmFkZFRvKHRoaXMudjEpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYyID0gcGFj
a2V0LmFkZFRvKHRoaXMudjIpOworICAgIH0KKyAgfQorICBpZiAodGhpcy52MSAhPSBudWxsKSB7
CisgICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKKyAgICB2YXIgdjsKKyAgICBpZiAoY291bnQg
PCBEQVRBX1NJWkUpIHsKKyAgICAgIGlmICh0aGlzLnYyICE9IG51bGwpIHsKKyAgICAgICAgdiA9
IHRoaXMudjI7CisgICAgICAgIHRoaXMudjIgPSB0aGlzLnYyLmxpbms7CisgICAgICAgIHYuYTEg
PSB0aGlzLnYxLmEyW2NvdW50XTsKKyAgICAgICAgdGhpcy52MS5hMSA9IGNvdW50ICsgMTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICB2ID0gdGhpcy52MTsKKyAgICAgIHRoaXMudjEgPSB0aGlzLnYxLmxpbms7Cisg
ICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAgfQorICB9CisgIHJldHVy
biB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOworfTsKKworSGFuZGxlclRhc2sucHJv
dG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkhhbmRsZXJUYXNrIjsK
K307CisKKy8qIC0tLSAqCisgKiBQIGEgYyBrIGUgdAorICogLS0tICovCisKK3ZhciBEQVRBX1NJ
WkUgPSA0OworCisvKioKKyAqIEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlw
dWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2Fk
IGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIg
aXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhl
IHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtl
ZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3Rz
LgorICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwgb2YgdGhlIGxpbmtlZCBsaXN0IG9m
IHBhY2tldHMKKyAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBmb3IgdGhpcyBwYWNrZXQKKyAqIEBw
YXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFja2V0CisgKiBAY29uc3RydWN0b3IK
KyAqLworZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5kKSB7CisgIHRoaXMubGluayA9IGxp
bms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhpcy5raW5kID0ga2luZDsKKyAgdGhpcy5hMSA9IDA7
CisgIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsKK30KKworLyoqCisgKiBBZGQgdGhp
cyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBhbmQgcmV0dXJuIHRoZSB3b3JrbGlz
dC4KKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29ya2xpc3QgdG8gYWRkIHRoaXMgcGFj
a2V0IHRvCisgKi8KK1BhY2tldC5wcm90b3R5cGUuYWRkVG8gPSBmdW5jdGlvbiAocXVldWUpIHsK
KyAgdGhpcy5saW5rID0gbnVsbDsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHJldHVybiB0aGlzOwor
ICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOworICB3aGlsZSAoKHBlZWsgPSBuZXh0LmxpbmspICE9
IG51bGwpCisgICAgbmV4dCA9IHBlZWs7CisgIG5leHQubGluayA9IHRoaXM7CisgIHJldHVybiBx
dWV1ZTsKK307CisKK1BhY2tldC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiAiUGFja2V0IjsKK307CisKKworY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpCitmb3Ig
KGxldCBpID0gMDsgaSA8IDUwOyArK2kpCisgICAgcnVuUmljaGFyZHMoKTsKK2NvbnN0IGVuZCA9
IERhdGUubm93KCkKK3ByaW50KGVuZCAtIHN0YXJ0KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9z
dGx5SlMvUmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlZjliYmYyMjBjYTdhZDMyMzE4ZjkwZjQwNmJjNmVkNzBhNjIwM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFy
ZHNNb3N0bHlKUy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjkwIEBACisv
LyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsK
KwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MUMyNDk5ODUxNzAwMzk4N0E5IC8qIG1haW4uc3dpZnQg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAxMTgxQjI0
OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCAqLzsgfTsKKwkJMTQxNUFEMTgyNDk5QTQxNDAw
NUJCMkU0IC8qIHJpY2hhcmRzLmpzIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDE1QUQxNjI0OTk4NjA1MDA1QkIyRTQgLyogcmljaGFyZHMuanMgKi87
IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0MDExODE2MjQ5OTg1MTcwMDM5ODdBOSAvKiBD
b3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDE1QUQxODI0OTlBNDE0MDA1QkIyRTQgLyogcmlj
aGFyZHMuanMgaW4gQ29weUZpbGVzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQw
MTE4MTgyNDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0
YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFJpY2hhcmRzTW9zdGx5SlM7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0MDExODFCMjQ5OTg1MTcwMDM5ODdB
OSAvKiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MTVBRDE2MjQ5OTg2MDUwMDVCQjJFNCAvKiByaWNoYXJkcy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHJpY2hhcmRzLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTE0
MDExODE1MjQ5OTg1MTcwMDM5ODdBOSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MDExODBGMjQ5OTg1MTcwMDM5ODdB
OSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MUEy
NDk5ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8sCisJCQkJMTQwMTE4MTkyNDk5
ODUxNzAwMzk4N0E5IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQwMTE4MTgyNDk5
ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8sCisJCQkpOworCQkJbmFtZSA9IFBy
b2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQwMTE4MUEyNDk5
ODUxNzAwMzk4N0E5IC8qIFJpY2hhcmRzTW9zdGx5SlMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0MDExODFCMjQ5OTg1MTcwMDM5ODdBOSAvKiBtYWlu
LnN3aWZ0ICovLAorCQkJCTE0MTVBRDE2MjQ5OTg2MDUwMDVCQjJFNCAvKiByaWNoYXJkcy5qcyAq
LywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNNb3N0bHlKUzsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyog
UmljaGFyZHNNb3N0bHlKUyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDAxMTgxRjI0OTk4NTE3MDAzOTg3QTkgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hhcmRzTW9zdGx5SlMi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQwMTE4MTQyNDk5ODUxNzAwMzk4N0E5IC8q
IFNvdXJjZXMgKi8sCisJCQkJMTQwMTE4MTUyNDk5ODUxNzAwMzk4N0E5IC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJMTQwMTE4MTYyNDk5ODUxNzAwMzk4N0E5IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7
CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gUmljaGFyZHNNb3N0bHlKUzsKKwkJCXByb2R1Y3ROYW1lID0gUmljaGFyZHNNb3N0
bHlKUzsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDAxMTgxODI0OTk4NTE3MDAzOTg3QTkgLyog
UmljaGFyZHNNb3N0bHlKUyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTE0MDExODEwMjQ5OTg1MTcwMDM5ODdB
OSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRy
aWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBn
cmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDAxMTgx
NzI0OTk4NTE3MDAzOTg3QTkgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMi4w
OworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
MDExODEzMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIlJpY2hhcmRzTW9zdGx5SlMiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNl
LAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MDExODBGMjQ5OTg1MTcwMDM5ODdBOTsKKwkJCXBy
b2R1Y3RSZWZHcm91cCA9IDE0MDExODE5MjQ5OTg1MTcwMDM5ODdBOSAvKiBQcm9kdWN0cyAqLzsK
KwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0
cyA9ICgKKwkJCQkxNDAxMTgxNzI0OTk4NTE3MDAzOTg3QTkgLyogUmljaGFyZHNNb3N0bHlKUyAq
LywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQwMTE4MTQyNDk5ODUxNzAwMzk4
N0E5IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDAxMTgx
QzI0OTk4NTE3MDAzOTg3QTkgLyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkxNDAxMTgxRDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQU5BTFlaRVJf
Tk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJ
T04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAi
Z251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19F
TkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJ
CQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JMT0NLX0NB
UFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09O
U1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURfT0JKQ19J
TVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNB
R0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1FTlRTID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VO
VU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JK
Q19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfTElURVJB
TF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVT
X0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JLX0hFQURF
UiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJ
Q0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkg
PSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmY7
CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJRU5BQkxFX1RFU1RB
QklMSVRZID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251MTE7CisJCQkJ
R0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7
CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJ
CQkpOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVD
TEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9
IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gSU5DTFVERV9TT1VS
Q0U7CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVT
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJU1dJRlRfQUNUSVZFX0NPTVBJTEFUSU9OX0NP
TkRJVElPTlMgPSBERUJVRzsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU9ub25l
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MDExODFFMjQ5OTg1MTcwMDM5
ODdBOSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUNMQU5HX0FOQUxZWkVSX05PTk5VTEwgPSBZRVM7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTlVN
QkVSX09CSkVDVF9DT05WRVJTSU9OID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gImdudSsrMTQiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxp
YmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxF
X09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT01NQSA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9ERVBSRUNBVEVEX09CSkNfSU1QTEVNRU5UQVRJT05TID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRE9DVU1F
TlRBVElPTl9DT01NRU5UUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9J
TkZJTklURV9SRUNVUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9IFlFUzsK
KwkJCQlDTEFOR19XQVJOX09CSkNfSU1QTElDSVRfUkVUQUlOX1NFTEYgPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9PQkpDX0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09C
SkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX1FVT1RFRF9JTkNMVURF
X0lOX0ZSQU1FV09SS19IRUFERVIgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FO
QUxZU0lTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9VTkdV
QVJERURfQVZBSUxBQklMSVRZID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJQ0xBTkdfV0FSTl9VTlJF
QUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFU
Q0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFU
SU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NFUlRJT05T
ID0gTk87CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xB
UkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZ
RVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjE2OworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POworCQkJCU1UTF9G
QVNUX01BVEggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9DT01QSUxB
VElPTl9NT0RFID0gd2hvbGVtb2R1bGU7CisJCQkJU1dJRlRfT1BUSU1JWkFUSU9OX0xFVkVMID0g
Ii1PIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQwMTE4MjAyNDk5ODUx
NzAwMzk4N0E5IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX1ZFUlNJT04g
PSA1LjA7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDAxMTgyMTI0OTk4NTE3
MDAzOTg3QTkgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTV0lGVF9WRVJTSU9O
ID0gNS4wOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJCTE0MDExODEzMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5SlMiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MTQwMTE4MUQyNDk5ODUxNzAwMzk4N0E5IC8qIERlYnVnICovLAorCQkJCTE0MDExODFFMjQ5OTg1
MTcwMDM5ODdBOSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTE0MDExODFGMjQ5OTg1MTcwMDM5ODdBOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUmljaGFyZHNNb3N0bHlKUyIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkx
NDAxMTgyMDI0OTk4NTE3MDAzOTg3QTkgLyogRGVidWcgKi8sCisJCQkJMTQwMTE4MjEyNDk5ODUx
NzAwMzk4N0E5IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmpl
Y3QgPSAxNDAxMTgxMDI0OTk4NTE3MDAzOTg3QTkgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmlj
aGFyZHNNb3N0bHlKUy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01v
c3RseUpTLnhjc2NoZW1lIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvUmlj
aGFyZHNNb3N0bHlKUy54Y3NjaGVtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjM4NGM0ODI5ZThmZjU1YWE3ZTI1
NTk4ZWVmNTUwYmJmODc4Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZQpAQCAtMCwwICsxLDgx
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNjaGVtZQorICAg
TGFzdFVwZ3JhZGVWZXJzaW9uID0gIjEyMDAiCisgICB2ZXJzaW9uID0gIjEuNyI+CisgICA8QnVp
bGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRhYmxlcyA9ICJZRVMiCisgICAgICBidWls
ZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+CisgICAgICA8QnVpbGRBY3Rpb25FbnRyaWVz
PgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGlu
ZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAg
ICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZp
bmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KKyAgICAg
ICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAi
MTQwMTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9
ICJSaWNoYXJkc01vc3RseUpTIgorICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNo
YXJkc01vc3RseUpTIgorICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250
YWluZXI6UmljaGFyZHNNb3N0bHlKUy54Y29kZXByb2oiPgorICAgICAgICAgICAgPC9CdWlsZGFi
bGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CisgICAgICA8L0J1aWxk
QWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rpb24+CisgICA8VGVzdEFjdGlvbgorICAgICAg
YnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50
aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBz
ZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1
bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIj4K
KyAgICAgIDxUZXN0YWJsZXM+CisgICAgICA8L1Rlc3RhYmxlcz4KKyAgIDwvVGVzdEFjdGlvbj4K
KyAgIDxMYXVuY2hBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgor
ICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0
aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJY
Y29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIGxhdW5jaFN0eWxl
ID0gIjAiCisgICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgaWdu
b3Jlc1BlcnNpc3RlbnRTdGF0ZU9uTGF1bmNoID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZl
cnNpb25pbmcgPSAiWUVTIgorICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFs
IgorICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFi
bGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4K
KyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50
aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiMTQw
MTE4MTcyNDk5ODUxNzAwMzk4N0E5IgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJSaWNo
YXJkc01vc3RseUpTIgorICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJSaWNoYXJkc01vc3Rs
eUpTIgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6UmljaGFy
ZHNNb3N0bHlKUy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Cisg
ICAgICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgIDwvTGF1bmNoQWN0aW9uPgorICAg
PFByb2ZpbGVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAg
ICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZRVMiCisgICAgICBzYXZlZFRvb2xJ
ZGVudGlmaWVyID0gIiIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisg
ICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiPgorICAgICAgPEJ1aWxkYWJsZVBy
b2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAg
ICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmll
ciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxNDAxMTgx
NzI0OTk4NTE3MDAzOTg3QTkiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIlJpY2hhcmRz
TW9zdGx5SlMiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzTW9zdGx5SlMi
CisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJkc01v
c3RseUpTLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAg
IDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9Qcm9maWxlQWN0aW9uPgorICAgPEFu
YWx5emVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CisgICA8L0Fu
YWx5emVBY3Rpb24+CisgICA8QXJjaGl2ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCisgICAgICByZXZlYWxBcmNoaXZlSW5Pcmdhbml6ZXIgPSAiWUVTIj4KKyAg
IDwvQXJjaGl2ZUFjdGlvbj4KKyAgIDxJbnN0YWxsQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3Vy
YXRpb24gPSAiUmVsZWFzZSI+CisgICA8L0luc3RhbGxBY3Rpb24+Cis8L1NjaGVtZT4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJk
c01vc3RseUpTL21haW4uc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRz
TW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YWViOTIx
YjA5OWE1ZGE5ZWQ1ZDk1ZTJhNDcyMjYwOTBjZGRkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy9t
YWluLnN3aWZ0CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitpbXBvcnQgRm91bmRhdGlv
bgoraW1wb3J0IEphdmFTY3JpcHRDb3JlCitpbXBvcnQgUXVhcnR6Q29yZQorCitsZXQgSURfSEFO
RExFUl9BID0gMgorbGV0IElEX0hBTkRMRVJfQiA9IDMKK2xldCBEQVRBX1NJWkUgPSA0CisKK0Bv
YmpjIHByb3RvY29sIFdvcmtlclRhc2tFeHBvcnRzIDogSlNFeHBvcnQgeworICAgIHZhciBzY2hl
ZHVsZXIgOiBKU1ZhbHVlIHsgZ2V0IH0KKyAgICB2YXIgdjEgOiBJbnQgeyBnZXQgfQorICAgIHZh
ciB2MiA6IEludCB7IGdldCB9CisKKyAgICBpbml0KHNjaGVkdWxlcjogSlNWYWx1ZSwgdjE6IElu
dCwgdjI6IEludCkKKworICAgIGZ1bmMgcnVuKF86IEpTVmFsdWUpLT4gTlNPYmplY3QKKyAgICBm
dW5jIHRvU3RyaW5nKCkgLT4gU3RyaW5nCit9CisKK0BvYmpjIHB1YmxpYyBjbGFzcyBXb3JrZXJU
YXNrIDogTlNPYmplY3QsIFdvcmtlclRhc2tFeHBvcnRzIHsKKyAgICBkeW5hbWljIHZhciBzY2hl
ZHVsZXIgOiBKU1ZhbHVlCisgICAgZHluYW1pYyB2YXIgdjEgOiBJbnQKKyAgICBkeW5hbWljIHZh
ciB2MiA6IEludAorCisgICAgcmVxdWlyZWQgaW5pdChzY2hlZHVsZXI6IEpTVmFsdWUsIHYxOiBJ
bnQsIHYyOiBJbnQpCisgICAgeworICAgICAgICBzZWxmLnNjaGVkdWxlciA9IHNjaGVkdWxlcgor
ICAgICAgICBzZWxmLnYxID0gdjEKKyAgICAgICAgc2VsZi52MiA9IHYyCisgICAgfQorCisgICAg
ZnVuYyB0b1N0cmluZygpIC0+IFN0cmluZworICAgIHsKKyAgICAgICAgcmV0dXJuICJXb3JrZXJU
YXNrIgorICAgIH0KKworICAgIGZ1bmMgcnVuKF8gcGFja2V0OiBKU1ZhbHVlKSAtPiBOU09iamVj
dAorICAgIHsKKyAgICAgICAgaWYgcGFja2V0LmlzTnVsbCB8fCBwYWNrZXQuaXNVbmRlZmluZWQg
eworICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLmludm9rZU1ldGhvZCgic3VzcGVu
ZEN1cnJlbnQiLCB3aXRoQXJndW1lbnRzOiBbXSkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYu
djEgPSBJRF9IQU5ETEVSX0EgKyBJRF9IQU5ETEVSX0IgLSBzZWxmLnYxCisgICAgICAgIHBhY2tl
dC5zZXRWYWx1ZShzZWxmLnYxLCBmb3JQcm9wZXJ0eTogImlkIikKKyAgICAgICAgcGFja2V0LnNl
dFZhbHVlKDAsIGZvclByb3BlcnR5OiAiYTEiKQorICAgICAgICBmb3IgaSBpbiAwLi4uREFUQV9T
SVpFIHsKKyAgICAgICAgICAgIHNlbGYudjIgKz0gMQorICAgICAgICAgICAgaWYgc2VsZi52MiA+
IDI2IHsKKyAgICAgICAgICAgICAgICBzZWxmLnYyID0gMQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcGFja2V0LmZvclByb3BlcnR5KCJhMiIpLnNldFZhbHVlKHNlbGYudjIsIGZvclByb3Bl
cnR5OiBpKQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5pbnZva2VN
ZXRob2QoInF1ZXVlIiwgd2l0aEFyZ3VtZW50czogW3BhY2tldF0pCisgICAgfQorfQorCitndWFy
ZCBsZXQgY29udGV4dCA9IEpTQ29udGV4dCgpIGVsc2UgeworICAgIGV4aXQoMSkKK30KKworY29u
dGV4dC5zZXRPYmplY3QoV29ya2VyVGFzay5zZWxmLCBmb3JLZXllZFN1YnNjcmlwdDogIldvcmtl
clRhc2siIGFzIE5TU3RyaW5nKQorY29udGV4dC5leGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0
LCBleGNlcHRpb24gaW4KKyAgICBwcmludChleGNlcHRpb24/LnRvU3RyaW5nKCkgYXMgQW55KQor
ICAgIGV4aXQoMSkKK30KKworbGV0IHNvdXJjZSA9IHRyeSBTdHJpbmcoY29udGVudHNPZkZpbGU6
ICJyaWNoYXJkcy5qcyIpCitsZXQgcmVzdWx0ID0gY29udGV4dC5ldmFsdWF0ZVNjcmlwdChzb3Vy
Y2UpCisKK2xldCBpdGVyYXRpb25zID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGlt
ZSgpCitmb3IgXyBpbiAxLi4uaXRlcmF0aW9ucyB7CisgICAgY29udGV4dC5vYmplY3RGb3JLZXll
ZFN1YnNjcmlwdCgicnVuUmljaGFyZHMiKS5jYWxsKHdpdGhBcmd1bWVudHM6IFtdKQorfQorbGV0
IGVuZCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkgKiAxMDAw
KSkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlK
Uy9SaWNoYXJkc01vc3RseUpTL3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMvcmljaGFyZHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzk1NzNkOWFmNDQwZmRhM2M5ZTZhNjZhOWU3MWE1ZDhmMzlkM2Y4NAotLS0gL2Rldi9udWxs
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJk
c01vc3RseUpTL3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNDk3IEBACisvLyBDb3B5cmlnaHQgMjAw
Ni0yMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8g
ICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAg
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisvLyBUaGlzIGlzIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUmljaGFyZHMKKy8vIGJlbmNobWFyayBmcm9tOgorLy8KKy8vICAgIGh0dHA6Ly93
d3cuY2wuY2FtLmFjLnVrL35tcjEwL0JlbmNoLmh0bWwKKy8vCisvLyBUaGUgYmVuY2htYXJrIHdh
cyBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGluIEJDUEwgYnkKKy8vIE1hcnRpbiBSaWNoYXJkcy4K
KworCisvKioKKyAqIFRoZSBSaWNoYXJkcyBiZW5jaG1hcmsgc2ltdWxhdGVzIHRoZSB0YXNrIGRp
c3BhdGNoZXIgb2YgYW4KKyAqIG9wZXJhdGluZyBzeXN0ZW0uCisgKiovCitmdW5jdGlvbiBydW5S
aWNoYXJkcygpIHsKKyAgdmFyIHNjaGVkdWxlciA9IG5ldyBTY2hlZHVsZXIoKTsKKyAgc2NoZWR1
bGVyLmFkZElkbGVUYXNrKElEX0lETEUsIDAsIG51bGwsIENPVU5UKTsKKworICB2YXIgcXVldWUg
PSBuZXcgUGFja2V0KG51bGwsIElEX1dPUktFUiwgS0lORF9XT1JLKTsKKyAgcXVldWUgPSBuZXcg
UGFja2V0KHF1ZXVlLCAgSURfV09SS0VSLCBLSU5EX1dPUkspOworICBzY2hlZHVsZXIuYWRkV29y
a2VyVGFzayhJRF9XT1JLRVIsIDEwMDAsIHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQo
bnVsbCwgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1
ZXVlLCAgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1
ZXVlLCAgSURfREVWSUNFX0EsIEtJTkRfREVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJU
YXNrKElEX0hBTkRMRVJfQSwgMjAwMCwgcXVldWUpOworCisgIHF1ZXVlID0gbmV3IFBhY2tldChu
dWxsLCBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVl
dWUsICBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBxdWV1ZSA9IG5ldyBQYWNrZXQocXVl
dWUsICBJRF9ERVZJQ0VfQiwgS0lORF9ERVZJQ0UpOworICBzY2hlZHVsZXIuYWRkSGFuZGxlclRh
c2soSURfSEFORExFUl9CLCAzMDAwLCBxdWV1ZSk7CisKKyAgc2NoZWR1bGVyLmFkZERldmljZVRh
c2soSURfREVWSUNFX0EsIDQwMDAsIG51bGwpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNr
KElEX0RFVklDRV9CLCA1MDAwLCBudWxsKTsKKworICBzY2hlZHVsZXIuc2NoZWR1bGUoKTsKKwor
ICBpZiAoc2NoZWR1bGVyLnF1ZXVlQ291bnQgIT0gRVhQRUNURURfUVVFVUVfQ09VTlQgfHwKKyAg
ICAgIHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9MRF9DT1VOVCkgeworICAgIHZh
ciBtc2cgPQorICAgICAgICAiRXJyb3IgZHVyaW5nIGV4ZWN1dGlvbjogcXVldWVDb3VudCA9ICIg
KyBzY2hlZHVsZXIucXVldWVDb3VudCArCisgICAgICAgICIsIGhvbGRDb3VudCA9ICIgKyBzY2hl
ZHVsZXIuaG9sZENvdW50ICsgIi4iOworICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworICB9Cit9
CisKK3ZhciBDT1VOVCA9IDEwMDA7CisKKy8qKgorICogVGhlc2UgdHdvIGNvbnN0YW50cyBzcGVj
aWZ5IGhvdyBtYW55IHRpbWVzIGEgcGFja2V0IGlzIHF1ZXVlZCBhbmQKKyAqIGhvdyBtYW55IHRp
bWVzIGEgdGFzayBpcyBwdXQgb24gaG9sZCBpbiBhIGNvcnJlY3QgcnVuIG9mIHJpY2hhcmRzLgor
ICogVGhleSBkb24ndCBoYXZlIGFueSBtZWFuaW5nIGEgc3VjaCBidXQgYXJlIGNoYXJhY3Rlcmlz
dGljIG9mIGEKKyAqIGNvcnJlY3QgcnVuIHNvIGlmIHRoZSBhY3R1YWwgcXVldWUgb3IgaG9sZCBj
b3VudCBpcyBkaWZmZXJlbnQgZnJvbQorICogdGhlIGV4cGVjdGVkIHRoZXJlIG11c3QgYmUgYSBi
dWcgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorICoqLwordmFyIEVYUEVDVEVEX1FVRVVFX0NPVU5U
ID0gMjMyMjsKK3ZhciBFWFBFQ1RFRF9IT0xEX0NPVU5UID0gOTI4OworCisKKy8qKgorICogQSBz
Y2hlZHVsZXIgY2FuIGJlIHVzZWQgdG8gc2NoZWR1bGUgYSBzZXQgb2YgdGFza3MgYmFzZWQgb24g
dGhlaXIgcmVsYXRpdmUKKyAqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFp
bnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyAqIHdoaWNoIGhvbGRzIHRh
c2tzIGFuZCB0aGUgZGF0YSBxdWV1ZSB0aGV5IGFyZSBwcm9jZXNzaW5nLgorICogQGNvbnN0cnVj
dG9yCisgKi8KK2Z1bmN0aW9uIFNjaGVkdWxlcigpIHsKKyAgdGhpcy5xdWV1ZUNvdW50ID0gMDsK
KyAgdGhpcy5ob2xkQ291bnQgPSAwOworICB0aGlzLmJsb2NrcyA9IG5ldyBBcnJheShOVU1CRVJf
T0ZfSURTKTsKKyAgdGhpcy5saXN0ID0gbnVsbDsKKyAgdGhpcy5jdXJyZW50VGNiID0gbnVsbDsK
KyAgdGhpcy5jdXJyZW50SWQgPSBudWxsOworfQorCit2YXIgSURfSURMRSAgICAgICA9IDA7Cit2
YXIgSURfV09SS0VSICAgICA9IDE7Cit2YXIgSURfSEFORExFUl9BICA9IDI7Cit2YXIgSURfSEFO
RExFUl9CICA9IDM7Cit2YXIgSURfREVWSUNFX0EgICA9IDQ7Cit2YXIgSURfREVWSUNFX0IgICA9
IDU7Cit2YXIgTlVNQkVSX09GX0lEUyA9IDY7CisKK3ZhciBLSU5EX0RFVklDRSAgID0gMDsKK3Zh
ciBLSU5EX1dPUksgICAgID0gMTsKKworLyoqCisgKiBBZGQgYW4gaWRsZSB0YXNrIHRvIHRoaXMg
c2NoZWR1bGVyLgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzawor
ICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7
UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRh
c2sKKyAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHNjaGVkdWxl
IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2sgPSBmdW5jdGlv
biAoaWQsIHByaW9yaXR5LCBxdWV1ZSwgY291bnQpIHsKKyAgdGhpcy5hZGRSdW5uaW5nVGFzayhp
ZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSWRsZVRhc2sodGhpcywgMSwgY291bnQpKTsKK307CisK
Ky8qKgorICogQWRkIGEgd29yayB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtp
bnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5
IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUg
b2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5hZGRXb3JrZXJUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAg
dGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVldWUsIG5ldyBXb3JrZXJUYXNrKHRoaXMsIElE
X0hBTkRMRVJfQSwgMCkpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhp
cyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNr
CisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFt
IHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUg
dGFzaworICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZEhhbmRsZXJUYXNrID0gZnVuY3Rpb24g
KGlkLCBwcmlvcml0eSwgcXVldWUpIHsKKyAgdGhpcy5hZGRUYXNrKGlkLCBwcmlvcml0eSwgcXVl
dWUsIG5ldyBIYW5kbGVyVGFzayh0aGlzKSk7Cit9OworCisvKioKKyAqIEFkZCBhIGhhbmRsZXIg
dGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkg
b2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5
CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vz
c2VkIGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNlVGFzayA9
IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJp
b3JpdHksIHF1ZXVlLCBuZXcgRGV2aWNlVGFzayh0aGlzKSkKK307CisKKy8qKgorICogQWRkIHRo
ZSBzcGVjaWZpZWQgdGFzayBhbmQgbWFyayBpdCBhcyBydW5uaW5nLgorICogQHBhcmFtIHtpbnR9
IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5IHRo
ZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUgb2Yg
d29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFza30gdGFzayB0
aGUgdGFzayB0byBhZGQKKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRSdW5uaW5nVGFzayA9
IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7CisgIHRoaXMuYWRkVGFzayhp
ZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKTsKKyAgdGhpcy5jdXJyZW50VGNiLnNldFJ1bm5pbmco
KTsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgdGFzayB0byB0aGlzIHNjaGVkdWxl
ci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJh
bSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0g
cXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBA
cGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUuYWRkVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlLCB0YXNrKSB7CisgIHRo
aXMuY3VycmVudFRjYiA9IG5ldyBUYXNrQ29udHJvbEJsb2NrKHRoaXMubGlzdCwgaWQsIHByaW9y
aXR5LCBxdWV1ZSwgdGFzayk7CisgIHRoaXMubGlzdCA9IHRoaXMuY3VycmVudFRjYjsKKyAgdGhp
cy5ibG9ja3NbaWRdID0gdGhpcy5jdXJyZW50VGNiOworfTsKKworLyoqCisgKiBFeGVjdXRlIHRo
ZSB0YXNrcyBtYW5hZ2VkIGJ5IHRoaXMgc2NoZWR1bGVyLgorICovCitTY2hlZHVsZXIucHJvdG90
eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmN1cnJlbnRUY2IgPSB0aGlzLmxp
c3Q7CisgIHdoaWxlICh0aGlzLmN1cnJlbnRUY2IgIT0gbnVsbCkgeworICAgIGlmICh0aGlzLmN1
cnJlbnRUY2IuaXNIZWxkT3JTdXNwZW5kZWQoKSkgeworICAgICAgdGhpcy5jdXJyZW50VGNiID0g
dGhpcy5jdXJyZW50VGNiLmxpbms7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMuY3VycmVudElk
ID0gdGhpcy5jdXJyZW50VGNiLmlkOworICAgICAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5jdXJy
ZW50VGNiLnJ1bigpOworICAgIH0KKyAgfQorfTsKKworLyoqCisgKiBSZWxlYXNlIGEgdGFzayB0
aGF0IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVu
LgorICogQHBhcmFtIHtpbnR9IGlkIHRoZSBpZCBvZiB0aGUgdGFzayB0byBzdXNwZW5kCisgKi8K
K1NjaGVkdWxlci5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChpZCkgeworICB2YXIgdGNi
ID0gdGhpcy5ibG9ja3NbaWRdOworICBpZiAodGNiID09IG51bGwpIHJldHVybiB0Y2I7CisgIHRj
Yi5tYXJrQXNOb3RIZWxkKCk7CisgIGlmICh0Y2IucHJpb3JpdHkgPiB0aGlzLmN1cnJlbnRUY2Iu
cHJpb3JpdHkpIHsKKyAgICByZXR1cm4gdGNiOworICB9IGVsc2UgeworICAgIHJldHVybiB0aGlz
LmN1cnJlbnRUY2I7CisgIH0KK307CisKKy8qKgorICogQmxvY2sgdGhlIGN1cnJlbnRseSBleGVj
dXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jaworICogdG8g
cnVuLiAgVGhlIGJsb2NrZWQgdGFzayB3aWxsIG5vdCBiZSBtYWRlIHJ1bm5hYmxlIHVudGlsIGl0
IGlzIGV4cGxpY2l0bHkKKyAqIHJlbGVhc2VkLCBldmVuIGlmIG5ldyB3b3JrIGlzIGFkZGVkIHRv
IGl0LgorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50ID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLmhvbGRDb3VudCsrOworICB0aGlzLmN1cnJlbnRUY2IubWFya0FzSGVsZCgpOwor
ICByZXR1cm4gdGhpcy5jdXJyZW50VGNiLmxpbms7Cit9OworCisvKioKKyAqIFN1c3BlbmQgdGhl
IGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQgcmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJv
bCBibG9jaworICogdG8gcnVuLiAgSWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRl
ZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5uYWJsZS4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlw
ZS5zdXNwZW5kQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiLm1hcmtB
c1N1c3BlbmRlZCgpOworICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworfTsKKworLyoqCisgKiBB
ZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBi
eSB0aGUgdGFzaworICogYXNzb2NpYXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRh
c2sgcnVubmFibGUgaWYgaXQgaXMgY3VycmVudGx5CisgKiBzdXNwZW5kZWQuCisgKiBAcGFyYW0g
e1BhY2tldH0gcGFja2V0IHRoZSBwYWNrZXQgdG8gYWRkCisgKi8KK1NjaGVkdWxlci5wcm90b3R5
cGUucXVldWUgPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIHZhciB0ID0gdGhpcy5ibG9ja3NbcGFj
a2V0LmlkXTsKKyAgaWYgKHQgPT0gbnVsbCkgcmV0dXJuIHQ7CisgIHRoaXMucXVldWVDb3VudCsr
OworICBwYWNrZXQubGluayA9IG51bGw7CisgIHBhY2tldC5pZCA9IHRoaXMuY3VycmVudElkOwor
ICByZXR1cm4gdC5jaGVja1ByaW9yaXR5QWRkKHRoaXMuY3VycmVudFRjYiwgcGFja2V0KTsKK307
CisKKy8qKgorICogQSB0YXNrIGNvbnRyb2wgYmxvY2sgbWFuYWdlcyBhIHRhc2sgYW5kIHRoZSBx
dWV1ZSBvZiB3b3JrIHBhY2thZ2VzIGFzc29jaWF0ZWQKKyAqIHdpdGggaXQuCisgKiBAcGFyYW0g
e1Rhc2tDb250cm9sQmxvY2t9IGxpbmsgdGhlIHByZWNlZGluZyBibG9jayBpbiB0aGUgbGlua2Vk
IGJsb2NrIGxpc3QKKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWQgb2YgdGhpcyBibG9jaworICog
QHBhcmFtIHtpbnR9IHByaW9yaXR5IHRoZSBwcmlvcml0eSBvZiB0aGlzIGJsb2NrCisgKiBAcGFy
YW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHBhY2thZ2VzIHRvIGJlIHByb2Nlc3NlZCBi
eSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNrCisgKiBAY29uc3RydWN0
b3IKKyAqLworZnVuY3Rpb24gVGFza0NvbnRyb2xCbG9jayhsaW5rLCBpZCwgcHJpb3JpdHksIHF1
ZXVlLCB0YXNrKSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhp
cy5wcmlvcml0eSA9IHByaW9yaXR5OworICB0aGlzLnF1ZXVlID0gcXVldWU7CisgIHRoaXMudGFz
ayA9IHRhc2s7CisgIGlmIChxdWV1ZSA9PSBudWxsKSB7CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRF
X1NVU1BFTkRFRDsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnN0YXRlID0gU1RBVEVfU1VTUEVOREVE
X1JVTk5BQkxFOworICB9Cit9CisKKy8qKgorICogVGhlIHRhc2sgaXMgcnVubmluZyBhbmQgaXMg
Y3VycmVudGx5IHNjaGVkdWxlZC4KKyAqLwordmFyIFNUQVRFX1JVTk5JTkcgPSAwOworCisvKioK
KyAqIFRoZSB0YXNrIGhhcyBwYWNrZXRzIGxlZnQgdG8gcHJvY2Vzcy4KKyAqLwordmFyIFNUQVRF
X1JVTk5BQkxFID0gMTsKKworLyoqCisgKiBUaGUgdGFzayBpcyBub3QgY3VycmVudGx5IHJ1bm5p
bmcuICBUaGUgdGFzayBpcyBub3QgYmxvY2tlZCBhcyBzdWNoIGFuZCBtYXkKKyogYmUgc3RhcnRl
ZCBieSB0aGUgc2NoZWR1bGVyLgorICovCit2YXIgU1RBVEVfU1VTUEVOREVEID0gMjsKKworLyoq
CisgKiBUaGUgdGFzayBpcyBibG9ja2VkIGFuZCBjYW5ub3QgYmUgcnVuIHVudGlsIGl0IGlzIGV4
cGxpY2l0bHkgcmVsZWFzZWQuCisgKi8KK3ZhciBTVEFURV9IRUxEID0gNDsKKwordmFyIFNUQVRF
X1NVU1BFTkRFRF9SVU5OQUJMRSA9IFNUQVRFX1NVU1BFTkRFRCB8IFNUQVRFX1JVTk5BQkxFOwor
dmFyIFNUQVRFX05PVF9IRUxEID0gflNUQVRFX0hFTEQ7CisKK1Rhc2tDb250cm9sQmxvY2sucHJv
dG90eXBlLnNldFJ1bm5pbmcgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSBTVEFURV9S
VU5OSU5HOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCA9
IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgJiBTVEFURV9OT1RfSEVM
RDsKK307CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQgPSBmdW5jdGlv
biAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwgU1RBVEVfSEVMRDsKK307CisKK1Rh
c2tDb250cm9sQmxvY2sucHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkID0gZnVuY3Rpb24gKCkg
eworICByZXR1cm4gKHRoaXMuc3RhdGUgJiBTVEFURV9IRUxEKSAhPSAwIHx8ICh0aGlzLnN0YXRl
ID09IFNUQVRFX1NVU1BFTkRFRCk7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5t
YXJrQXNTdXNwZW5kZWQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRl
IHwgU1RBVEVfU1VTUEVOREVEOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFy
a0FzUnVubmFibGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlIHwg
U1RBVEVfUlVOTkFCTEU7Cit9OworCisvKioKKyAqIFJ1bnMgdGhpcyB0YXNrLCBpZiBpdCBpcyBy
ZWFkeSB0byBiZSBydW4sIGFuZCByZXR1cm5zIHRoZSBuZXh0IHRhc2sgdG8gcnVuLgorICovCitU
YXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7CisgIHZhciBwYWNr
ZXQ7CisgIGlmICh0aGlzLnN0YXRlID09IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRSkgeworICAg
IHBhY2tldCA9IHRoaXMucXVldWU7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldC5saW5rOworICAg
IGlmICh0aGlzLnF1ZXVlID09IG51bGwpIHsKKyAgICAgIHRoaXMuc3RhdGUgPSBTVEFURV9SVU5O
SU5HOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTkFCTEU7Cisg
ICAgfQorICB9IGVsc2UgeworICAgIHBhY2tldCA9IG51bGw7CisgIH0KKyAgcmV0dXJuIHRoaXMu
dGFzay5ydW4ocGFja2V0KTsKK307CisKKy8qKgorICogQWRkcyBhIHBhY2tldCB0byB0aGUgd29y
a2xpc3Qgb2YgdGhpcyBibG9jaydzIHRhc2ssIG1hcmtzIHRoaXMgYXMgcnVubmFibGUgaWYKKyAq
IG5lY2Vzc2FyeSwgYW5kIHJldHVybnMgdGhlIG5leHQgcnVubmFibGUgb2JqZWN0IHRvIHJ1biAo
dGhlIG9uZQorICogd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSkuCisgKi8KK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLmNoZWNrUHJpb3JpdHlBZGQgPSBmdW5jdGlvbiAodGFzaywgcGFja2V0
KSB7CisgIGlmICh0aGlzLnF1ZXVlID09IG51bGwpIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0
OworICAgIHRoaXMubWFya0FzUnVubmFibGUoKTsKKyAgICBpZiAodGhpcy5wcmlvcml0eSA+IHRh
c2sucHJpb3JpdHkpIHJldHVybiB0aGlzOworICB9IGVsc2UgeworICAgIHRoaXMucXVldWUgPSBw
YWNrZXQuYWRkVG8odGhpcy5xdWV1ZSk7CisgIH0KKyAgcmV0dXJuIHRhc2s7Cit9OworCitUYXNr
Q29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
ICJ0Y2IgeyAiICsgdGhpcy50YXNrICsgIkAiICsgdGhpcy5zdGF0ZSArICIgfSI7Cit9OworCisv
KioKKyAqIEFuIGlkbGUgdGFzayBkb2Vzbid0IGRvIGFueSB3b3JrIGl0c2VsZiBidXQgY3ljbGVz
IGNvbnRyb2wgYmV0d2VlbiB0aGUgdHdvCisgKiBkZXZpY2UgdGFza3MuCisgKiBAcGFyYW0ge1Nj
aGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzawor
ICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB2YWx1ZSB0aGF0IGNvbnRyb2xzIGhvdyB0aGUgZGV2
aWNlIHRhc2tzIGFyZSBzY2hlZHVsZWQKKyAqIEBwYXJhbSB7aW50fSBjb3VudCB0aGUgbnVtYmVy
IG9mIHRpbWVzIHRoaXMgdGFzayBzaG91bGQgYmUgc2NoZWR1bGVkCisgKiBAY29uc3RydWN0b3IK
KyAqLworZnVuY3Rpb24gSWRsZVRhc2soc2NoZWR1bGVyLCB2MSwgY291bnQpIHsKKyAgdGhpcy5z
Y2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSB2MTsKKyAgdGhpcy5jb3VudCA9IGNv
dW50OworfQorCitJZGxlVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgewor
ICB0aGlzLmNvdW50LS07CisgIGlmICh0aGlzLmNvdW50ID09IDApIHJldHVybiB0aGlzLnNjaGVk
dWxlci5ob2xkQ3VycmVudCgpOworICBpZiAoKHRoaXMudjEgJiAxKSA9PSAwKSB7CisgICAgdGhp
cy52MSA9IHRoaXMudjEgPj4gMTsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucmVsZWFzZShJ
RF9ERVZJQ0VfQSk7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MSA9ICh0aGlzLnYxID4+IDEpIF4g
MHhEMDA4OworICAgIHJldHVybiB0aGlzLnNjaGVkdWxlci5yZWxlYXNlKElEX0RFVklDRV9CKTsK
KyAgfQorfTsKKworSWRsZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewor
ICByZXR1cm4gIklkbGVUYXNrIgorfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBzdXNwZW5kcyBp
dHNlbGYgYWZ0ZXIgZWFjaCB0aW1lIGl0IGhhcyBiZWVuIHJ1biB0byBzaW11bGF0ZQorICogd2Fp
dGluZyBmb3IgZGF0YSBmcm9tIGFuIGV4dGVybmFsIGRldmljZS4KKyAqIEBwYXJhbSB7U2NoZWR1
bGVyfSBzY2hlZHVsZXIgdGhlIHNjaGVkdWxlciB0aGF0IG1hbmFnZXMgdGhpcyB0YXNrCisgKiBA
Y29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gRGV2aWNlVGFzayhzY2hlZHVsZXIpIHsKKyAgdGhp
cy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7CisgIHRoaXMudjEgPSBudWxsOworfQorCitEZXZpY2VU
YXNrLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocGFja2V0KSB7CisgIGlmIChwYWNrZXQgPT0g
bnVsbCkgeworICAgIGlmICh0aGlzLnYxID09IG51bGwpIHJldHVybiB0aGlzLnNjaGVkdWxlci5z
dXNwZW5kQ3VycmVudCgpOworICAgIHZhciB2ID0gdGhpcy52MTsKKyAgICB0aGlzLnYxID0gbnVs
bDsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgIH0gZWxzZSB7CisgICAg
dGhpcy52MSA9IHBhY2tldDsKKyAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQo
KTsKKyAgfQorfTsKKworRGV2aWNlVGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAo
KSB7CisgIHJldHVybiAiRGV2aWNlVGFzayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1h
bmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFy
YW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMg
dGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxl
cikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7Cisg
IHRoaXMudjIgPSBudWxsOworfQorCitIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rp
b24gKHBhY2tldCkgeworICBpZiAocGFja2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0Lmtp
bmQgPT0gS0lORF9XT1JLKSB7CisgICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEp
OworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOwor
ICAgIH0KKyAgfQorICBpZiAodGhpcy52MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhp
cy52MS5hMTsKKyAgICB2YXIgdjsKKyAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAg
IGlmICh0aGlzLnYyICE9IG51bGwpIHsKKyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRo
aXMudjIgPSB0aGlzLnYyLmxpbms7CisgICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsK
KyAgICAgICAgdGhpcy52MS5hMSA9IGNvdW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLnF1ZXVlKHYpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52
MTsKKyAgICAgIHRoaXMudjEgPSB0aGlzLnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hl
ZHVsZXIucXVldWUodik7CisgICAgfQorICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNw
ZW5kQ3VycmVudCgpOworfTsKKworSGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVu
Y3Rpb24gKCkgeworICByZXR1cm4gIkhhbmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQ
IGEgYyBrIGUgdAorICogLS0tICovCisKK3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEg
c2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4g
IFRoZSBleGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBh
Y2tldCBpcyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2Yg
dGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lk
ZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNl
IHVzZWQgYm90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9
IGxpbmsgdGhlIHRhaWwgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7
aW50fSBpZCBhbiBJRCBmb3IgdGhpcyBwYWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0
eXBlIG9mIHRoaXMgcGFja2V0CisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0
KGxpbmssIGlkLCBraW5kKSB7CisgIHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsK
KyAgdGhpcy5raW5kID0ga2luZDsKKyAgdGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJy
YXkoREFUQV9TSVpFKTsKK30KKworLyoqCisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBv
ZiBhIHdvcmtsaXN0LCBhbmQgcmV0dXJuIHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0
fSBxdWV1ZSB0aGUgd29ya2xpc3QgdG8gYWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5w
cm90b3R5cGUuYWRkVG8gPSBmdW5jdGlvbiAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsK
KyAgaWYgKHF1ZXVlID09IG51bGwpIHJldHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1
ZXVlOworICB3aGlsZSAoKHBlZWsgPSBuZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBl
ZWs7CisgIG5leHQubGluayA9IHRoaXM7CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5w
cm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dp
ZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dp
ZnQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTYwYTVkYWEyYTVjOGJi
ODRkZWI1OTMzOWZlMjE5N2M1NmEwMzdlCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDMyMiBAQAorLy8gISQqVVRGOCokIQor
eworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lv
biA9IDUwOworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CisJCTE0MEFBQzM3MjQ5OUJEN0EwMDAxRjExRSAvKiByaWNoYXJkcy5qcyBpbiBDb3B5RmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzYyNDk5QkQ2QzAwMDFG
MTFFIC8qIHJpY2hhcmRzLmpzICovOyB9OworCQkxNDBBQUM0MDI0OUIwMUQxMDAwMUYxMUUgLyog
UGFja2V0LnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLzsgfTsKKwkJMTQw
QUFDNDEyNDlCMDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDMzkyNDlCMDFEMTAwMDFGMTFFIC8q
IHJpY2hhcmRzLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0MjI0OUIwMUQxMDAwMUYxMUUgLyogU2No
ZWR1bGVyLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLzsgfTsKKwkJ
MTQwQUFDNDMyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUgLyog
VGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDQyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNr
LnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQw
QUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0
NTI0OUIwMUQxMDAwMUYxMUUgLyogSGFuZGxlclRhc2suc3dpZnQgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyog
SGFuZGxlclRhc2suc3dpZnQgKi87IH07CisJCTE0MEFBQzQ2MjQ5QjAxRDEwMDAxRjExRSAvKiBX
b3JrZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi87IH07
CisJCTE0MEFBQzQ3MjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0IGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0YyNDlCMDFEMTAw
MDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQgKi87IH07CisJCTE0MTVBRDI2MjQ5OUJDNUMwMDVC
QjJFNCAvKiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQxNUFEMjUyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgKi87IH07Cisv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTE0MTVBRDIwMjQ5OUJDNUMwMDVCQjJFNCAvKiBDb3B5Rmls
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7
CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUMzNzI0OTlCRDdBMDAwMUYxMUUgLyogcmljaGFyZHMu
anMgaW4gQ29weUZpbGVzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMTQwQUFDMzYy
NDk5QkQ2QzAwMDFGMTFFIC8qIHJpY2hhcmRzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gcmljaGFyZHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLnN3aWZ0OyBwYXRoID0gUGFja2V0LnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDBBQUMzOTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gcmljaGFyZHMuc3dpZnQ7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIu
c3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gU2NoZWR1bGVyLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUg
LyogVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBUYXNrLnN3
aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzQzI0OUIwMUQxMDAwMUYx
MUUgLyogSWRsZVRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0g
SWRsZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNEMjQ5
QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
c3dpZnQ7IHBhdGggPSBIYW5kbGVyVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQwQUFDM0UyNDlCMDFEMTAwMDFGMTFFIC8qIFdvcmtlclRhc2suc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gV29ya2VyVGFzay5zd2lmdDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRh
c2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gRGV2aWNlVGFzay5z
d2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNUFEMjIyNDk5QkM1QzAwNUJC
MkU0IC8qIFJpY2hhcmRzTW9zdGx5U3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IFJpY2hhcmRzTW9zdGx5U3dpZnQ7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3
aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKwkJMTQxNUFEMTkyNDk5QkM1QjAwNUJCMkU0ID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCQkxNDE1QUQyMzI0OTlCQzVDMDA1QkIyRTQgLyogUHJv
ZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQx
NUFEMjMyNDk5QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxNDE1QUQyMjI0OTlCQzVDMDA1QkIyRTQgLyogUmlj
aGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDE1QUQyNDI0OTlCQzVDMDA1QkIyRTQgLyog
UmljaGFyZHNNb3N0bHlTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMTQwQUFDM0YyNDlCMDFEMTAwMDFGMTFFIC8qIERldmljZVRhc2suc3dpZnQg
Ki8sCisJCQkJMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0ICov
LAorCQkJCTE0MEFBQzNDMjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLywKKwkJ
CQkxNDE1QUQyNTI0OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLywKKwkJCQkxNDBBQUMz
ODI0OUIwMUQxMDAwMUYxMUUgLyogUGFja2V0LnN3aWZ0ICovLAorCQkJCTE0MEFBQzM2MjQ5OUJE
NkMwMDAxRjExRSAvKiByaWNoYXJkcy5qcyAqLywKKwkJCQkxNDBBQUMzOTI0OUIwMUQxMDAwMUYx
MUUgLyogcmljaGFyZHMuc3dpZnQgKi8sCisJCQkJMTQwQUFDM0EyNDlCMDFEMTAwMDFGMTFFIC8q
IFNjaGVkdWxlci5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQjI0OUIwMUQxMDAwMUYxMUUgLyogVGFz
ay5zd2lmdCAqLywKKwkJCQkxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2VyVGFzay5z
d2lmdCAqLywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDE1QUQyMTI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRh
cmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1QkIy
RTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJpY2hh
cmRzTW9zdGx5U3dpZnQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQxNUFEMUUyNDk5
QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlG
aWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXByb2R1Y3RO
YW1lID0gUmljaGFyZHNNb3N0bHlTd2lmdDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDE1QUQy
MjI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJ
CTE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNo
ZWNrID0gMTIwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRy
aWJ1dGVzID0geworCQkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJCQkJCQlDcmVh
dGVkT25Ub29sc1ZlcnNpb24gPSAxMi4wOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlJpY2hhcmRzTW9zdGx5U3dpZnQiICov
OworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50
UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVn
aW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVB
RDE5MjQ5OUJDNUIwMDVCQjJFNDsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJD
NUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlw
cm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1
QkIyRTQgLyogUmljaGFyZHNNb3N0bHlTd2lmdCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJY
UHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUM0NzI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNl
VGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQ1MjQ5QjAxRDEwMDAxRjExRSAv
KiBIYW5kbGVyVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQ0MjQ5QjAxRDEw
MDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MTVBRDI2MjQ5
OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkJMTQwQUFDNDAy
NDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFB
QzQxMjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJ
CTE0MEFBQzQyMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgaW4gU291cmNlcyAq
LywKKwkJCQkxNDBBQUM0MzI0OUIwMUQxMDAwMUYxMUUgLyogVGFzay5zd2lmdCBpbiBTb3VyY2Vz
ICovLAorCQkJCTE0MEFBQzQ2MjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0IGlu
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisv
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTE0MTVBRDI3MjQ5OUJD
NUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0gWUVTOworCQkJCUNMQU5HX0FOQUxZWkVS
X05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9
ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VO
QUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19XRUFLID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFUSU9OUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0RP
Q1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lUX1JFVEFJTl9TRUxGID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9RVU9URURfSU5D
TFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOworCQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9P
UF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZUEVTID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
VU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dSRVNTSVZFOworCQkJCUNMQU5HX1dBUk5f
VU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9E
X01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKKwkJCQlFTkFCTEVfVEVTVEFCSUxJVFkgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0Nf
Tk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
KwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJ
CQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJS
T1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xNjsKKwkJCQlNVExfRU5BQkxFX0RF
QlVHX0lORk8gPSBJTkNMVURFX1NPVVJDRTsKKwkJCQlNVExfRkFTVF9NQVRIID0gWUVTOworCQkJ
CU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlTV0lG
VF9BQ1RJVkVfQ09NUElMQVRJT05fQ09ORElUSU9OUyA9IERFQlVHOworCQkJCVNXSUZUX09QVElN
SVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsK
KwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNUX0NPTlZFUlNJT04gPSBZRVNfQUdHUkVT
U0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysxNCI7CisJCQkJ
Q0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9
IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxF
X09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVB
U0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FURURfT0JKQ19JTVBMRU1FTlRBVElPTlMg
PSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7
CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NPTU1FTlRTID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxf
TlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRB
SU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNM
QU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVXT1JLX0hFQURFUiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJ
Q1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJTEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lW
RTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
Tk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJRU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNH
U0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTExOworCQkJCUdD
Q19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9S
OworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTY7CisJCQkJTVRMX0VOQUJMRV9ERUJV
R19JTkZPID0gTk87CisJCQkJTVRMX0ZBU1RfTUFUSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVNXSUZUX0NPTVBJTEFUSU9OX01PREUgPSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lG
VF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU8iOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9T
SUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJ
CX07CisJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAvKiBSZWxlYXNlICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVf
U0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJC
MkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUmljaGFyZHNN
b3N0bHlTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0OTlCQzVDMDA1QkIyRTQgLyogRGVi
dWcgKi8sCisJCQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJlbGVhc2UgKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFEMjkyNDk5QkM1QzAwNUJCMkU0
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJSaWNoYXJk
c01vc3RseVN3aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJDNUMwMDVCQjJFNCAvKiBE
ZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVsZWFzZSAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFBMjQ5OUJDNUIwMDVCQjJF
NCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWUgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseVN3
aWZ0Lnhjc2NoZW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NzhiMDBiZTJmY2I4YjlhZjI5ODhiMDAyZTc4MjBj
NDY0MmFiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC54Y29kZXByb2oveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjc2NoZW1lCkBAIC0wLDAgKzEsODEg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2NoZW1lCisgICBM
YXN0VXBncmFkZVZlcnNpb24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAiMS43Ij4KKyAgIDxCdWls
ZEFjdGlvbgorICAgICAgcGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllFUyIKKyAgICAgIGJ1aWxk
SW1wbGljaXREZXBlbmRlbmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWlsZEFjdGlvbkVudHJpZXM+
CisgICAgICAgICA8QnVpbGRBY3Rpb25FbnRyeQorICAgICAgICAgICAgYnVpbGRGb3JUZXN0aW5n
ID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAgICAgICAg
ICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFyY2hpdmlu
ZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFuYWx5emluZyA9ICJZRVMiPgorICAgICAg
ICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRp
ZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIx
NDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0g
IlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJp
Y2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0g
ImNvbnRhaW5lcjpSaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICAgICA8
L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgICAgIDwvQnVpbGRBY3Rpb25FbnRyeT4KKyAgICAg
IDwvQnVpbGRBY3Rpb25FbnRyaWVzPgorICAgPC9CdWlsZEFjdGlvbj4KKyAgIDxUZXN0QWN0aW9u
CisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVn
Z2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIK
KyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRh
dGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9
ICJZRVMiPgorICAgICAgPFRlc3RhYmxlcz4KKyAgICAgIDwvVGVzdGFibGVzPgorICAgPC9UZXN0
QWN0aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJl
bGVhc2UiCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dl
ckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlm
aWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1
bmNoU3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisg
ICAgICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0Rv
Y3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAi
aW50ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAg
PEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2Rl
ID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRh
YmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmll
ciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1l
ID0gIlJpY2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJp
Y2hhcmRzTW9zdGx5U3dpZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNv
bnRhaW5lcjpSaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxk
YWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9M
YXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9u
ID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIK
KyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0Rp
cmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+Cisg
ICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2lu
Z01vZGUgPSAiMCI+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBC
dWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVu
dGlmaWVyID0gIjE0MTVBRDIxMjQ5OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJs
ZU5hbWUgPSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUg
PSAiUmljaGFyZHNNb3N0bHlTd2lmdCIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIg
PSAiY29udGFpbmVyOlJpY2hhcmRzTW9zdGx5U3dpZnQueGNvZGVwcm9qIj4KKyAgICAgICAgIDwv
QnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+Cisg
ICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1
cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4KKyAgIDxBcmNoaXZlQWN0aW9u
CisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIHJldmVhbEFyY2hp
dmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0aW9uPgorICAgPEluc3RhbGxB
Y3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIj4KKyAgIDwvSW5zdGFs
bEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5j
aC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvRGV2aWNlVGFzay5zd2lm
dCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJk
c01vc3RseVN3aWZ0L0RldmljZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM2MWFiNDE0YjYyYzgy
NzBkNTZiMTRjNGU3YmFhNGUyZWQ5MDY4MQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0Rl
dmljZVRhc2suc3dpZnQKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5k
YXRpb24KKworQG9iamMgZW51bSBEZXZpY2UgOiBJbnQgeworICAgIGNhc2UgQQorICAgIGNhc2Ug
QgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBlYWNoIHRp
bWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRhIGZyb20g
YW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7CisgICAg
bGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQYWNrZXQ/
ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRl
dmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFz
ayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlv
cml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9
CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAg
eworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxldCBwYWNr
ZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNl
bGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVy
LmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYucGVuZGlu
Z1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
c2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQoc2NoZWR1
bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAg
eworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0KHNjaGVk
dWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRz
TW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9IYW5kbGVyVGFzay5zd2lm
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNTU5ZDkwZjc0Yzg0ZWU2NTgwMTY5OTEyZWYyZDU1NWE1NjE5ZGY3Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworaW1wb3J0IEZvdW5kYXRpb24KK2ltcG9ydCBKYXZhU2NyaXB0Q29y
ZQorCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBhbmQgdGhl
biBzdXNwZW5kcyBpdHNlbGYuCisgKi8KK0BvYmpjIHByb3RvY29sIEhhbmRsZXJUYXNrRXhwb3J0
cyA6IEpTRXhwb3J0IHsKK30KKworQG9iamMgcHVibGljIGNsYXNzIEhhbmRsZXJUYXNrIDogVGFz
aywgSGFuZGxlclRhc2tFeHBvcnRzIHsKKyAgICB2YXIgZGV2aWNlOiBEZXZpY2UKKyAgICB2YXIg
d29ya1F1ZXVlIDogV29ya1BhY2tldD8gPSBuaWwKKyAgICB2YXIgZGV2aWNlUXVldWUgOiBEZXZp
Y2VQYWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hl
ZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBEZXZpY2VQ
YWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IEhhbmRsZXJUYXNrKHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBkZXZpY2U6IGRldmljZSwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVl
dWUpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVy
cmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBp
ZiBsZXQgcCA9IHBhY2tldCB7CisgICAgICAgICAgICBpZiBsZXQgd29yayA9IHAgYXM/IFdvcmtQ
YWNrZXQgeworICAgICAgICAgICAgICAgIHNlbGYud29ya1F1ZXVlID0gd29yay5hZGRUbyhxdWV1
ZTogc2VsZi53b3JrUXVldWUpIGFzISBXb3JrUGFja2V0PworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzZWxmLmRldmljZVF1ZXVlID0gKHAgYXMhIERldmljZVBhY2tldCku
YWRkVG8ocXVldWU6IHNlbGYuZGV2aWNlUXVldWUpIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgbGV0IHdvcmtQYWNrZXQgPSBzZWxmLndvcmtR
dWV1ZSB7CisgICAgICAgICAgICBsZXQgcHJvY2Vzc2VkID0gd29ya1BhY2tldC5wcm9jZXNzZWQK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgPCBXb3JrUGFja2V0LlNJWkUpIHsKKyAgICAgICAg
ICAgICAgICBpZiBsZXQgZGV2aWNlUGFja2V0ID0gc2VsZi5kZXZpY2VRdWV1ZSB7CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSBkZXZpY2VQYWNrZXQubGluayBhcyEgRGV2
aWNlUGFja2V0PworICAgICAgICAgICAgICAgICAgICBkZXZpY2VQYWNrZXQubGV0dGVySW5kZXgg
PSB3b3JrUGFja2V0LmRhdGFbcHJvY2Vzc2VkXQorICAgICAgICAgICAgICAgICAgICB3b3JrUGFj
a2V0LnByb2Nlc3NlZCA9IHByb2Nlc3NlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogZGV2aWNlUGFja2V0KQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVl
dWUgPSB3b3JrUGFja2V0LmxpbmsgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLnF1ZXVlKHBhY2tldDogd29ya1BhY2tldCkKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQo
KQorICAgIH0KKworICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNl
OiBEZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVldWU6IERldmljZVBhY2tldCkKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHN1cGVyLmluaXQoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0
cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSWRsZVRh
c2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU4Nzc5MjUyYTE5MTFkZDcxMTk2MTVkZTlhMmVhMDUwYTU0
ODUwZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFy
ZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L0lkbGVUYXNrLnN3aWZ0CkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKy8qKgorICogQW4gaWRsZSB0YXNrIGRvZXNuJ3QgZG8gYW55
IHdvcmsgaXRzZWxmIGJ1dCBjeWNsZXMgY29udHJvbCBiZXR3ZWVuIHRoZSB0d28gZGV2aWNlIHRh
c2tzLgorICovCitjbGFzcyBJZGxlVGFzayA6IFRhc2sgeworICAgIHZhciBoYXNoXyA6IEludCA9
IDEKKyAgICB2YXIgY291bnQgOiBJbnQgPSAxMDAwCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUo
c2NoZWR1bGVyOiBTY2hlZHVsZXIsIHByaW9yaXR5OiBQcmlvcml0eSkKKyAgICB7CisgICAgICAg
IGxldCB0YXNrID0gSWRsZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlv
cml0eSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAgIH0KKworICAgIG92
ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAgICB7CisgICAgICBz
ZWxmLmNvdW50IC09IDEKKyAgICAgIGlmIHNlbGYuY291bnQgPT0gMCB7CisgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICAgIH0KKyAgICAgIGlmIChzZWxm
Lmhhc2hfICYgMSkgPT0gMCB7CisgICAgICAgIHNlbGYuaGFzaF8gPSBzZWxmLmhhc2hfID4+IDEK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkEpCisgICAg
ICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2hfID0gKHNlbGYuaGFzaF8gPj4gMSkgXiAweEQw
MDgKKyAgICAgICAgcmV0dXJuIHNlbGYuc2NoZWR1bGVyLnJlbGVhc2VfKGRldmljZTogLkIpCisg
ICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBw
cmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNj
aGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAgICAgc2VsZi5yZXN1bWUoKQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1BhY2tldC5z
d2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOWE0ZDk1NThlYjQ3M2I2NzdmZGI3OWNlZGVkZjQxOWVmMGJmZWRl
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01v
c3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKK2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCisvKioKKyAqIEEgc2ltcGxl
IHBhY2thZ2Ugb2YgZGF0YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBl
eGFjdCBsYXlvdXQKKyAqIG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBp
cyBub3QgaW1wb3J0YWludCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdv
cmsgcGVyZm9ybWVkIG9uIHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2Fy
cnlpbmcgZGF0YSwgcGFja2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQg
Ym90aCBhcworICogZGF0YSBhbmQgd29ya2xpc3RzLgorICovCisKK0BvYmpjIHByb3RvY29sIFBh
Y2tldEV4cG9ydHMgOiBKU0V4cG9ydCB7CisgICAgdmFyIGRldmljZSA6IERldmljZSB7IGdldCBz
ZXQgfQorfQorCitAb2JqYyBwdWJsaWMgY2xhc3MgUGFja2V0IDogTlNPYmplY3QsIFBhY2tldEV4
cG9ydHMgeworICAgIGR5bmFtaWMgdmFyIGRldmljZSA6IERldmljZQorICAgIHZhciBsaW5rIDog
UGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGluayA9IGxpbmsK
KyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEg
d29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAgZnVuYyBhZGRU
byhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGluayA9IG5pbAor
ICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAg
ICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4dC5saW5rID0g
c2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitwdWJsaWMgZmluYWwgY2xh
c3MgRGV2aWNlUGFja2V0IDogUGFja2V0IHsKKyAgICB2YXIgbGV0dGVySW5kZXggOiBJbnQgPSAw
Cit9CisKK0BvYmpjIHByb3RvY29sIFdvcmtQYWNrZXRFeHBvcnRzIDogUGFja2V0RXhwb3J0cywg
SlNFeHBvcnQgeworICAgIHZhciBwcm9jZXNzZWQgOiBJbnQgeyBnZXQgc2V0IH0KKyAgICB2YXIg
ZGF0YSA6IFtJbnRdIHsgZ2V0IHNldCB9Cit9CisKK0BvYmpjIHB1YmxpYyBmaW5hbCBjbGFzcyBX
b3JrUGFja2V0IDogUGFja2V0LCBXb3JrUGFja2V0RXhwb3J0cyB7CisgICAgc3RhdGljIGxldCBT
SVpFIDogSW50ID0gNAorCisgICAgZHluYW1pYyB2YXIgcHJvY2Vzc2VkIDogSW50ID0gMAorICAg
IGR5bmFtaWMgdmFyIGRhdGEgOiBbSW50XSA9IFtJbnRdKHJlcGVhdGluZzogMCwgY291bnQ6IFNJ
WkUpCisKKyAgICBpbml0KGxpbms6IFBhY2tldD8pCisgICAgeworICAgICAgICBzdXBlci5pbml0
KGRldmljZTogLkEsIGxpbms6IGxpbmspCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQv
U2NoZWR1bGVyLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvU2NoZWR1bGVyLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4
OWZmN2IyZmZmZTIzYjI0ZjY5Njk2OGVhNDgyOTllMzU0ZDE2YzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9TY2hlZHVsZXIuc3dpZnQKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCitAb2JqYyBwcm90b2NvbCBTY2hlZHVsZXJFeHBvcnRz
IDogSlNFeHBvcnQgeworICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIGZ1bmMg
aGFuZGxlKHBhY2tldDogV29ya1BhY2tldCkgLT4gVGFzaz8KK30KKworLyoqCisqIEEgc2NoZWR1
bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWly
IHJlbGF0aXZlCisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRvbmUgYnkgbWFpbnRhaW5p
bmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2ggaG9sZHMgdGFza3MgYW5k
IHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBjb25zdHJ1Y3RvcgorKi8K
K0BvYmpjIHB1YmxpYyBjbGFzcyBTY2hlZHVsZXIgOiBOU09iamVjdCwgU2NoZWR1bGVyRXhwb3J0
cyB7CisgICAgcHJpdmF0ZShzZXQpIHZhciBxdWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0
KSB2YXIgaG9sZENvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBU
YXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAg
ICAvKioKKyAgICAqIEV4ZWN1dGUgdGhlIHRhc2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIu
CisgICAgKi8KKyAgICBmdW5jIHNjaGVkdWxlKCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVu
dFRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAgd2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRU
YXNrIHsKKyAgICAgICAgICAgIHZhciBwYWNrZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAg
ICBzd2l0Y2ggdGFzay5zdGF0ZSB7CisgICAgICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tl
dDoKKyAgICAgICAgICAgICAgICBwYWNrZXQgPSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAg
ICAgICAgIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0
OgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBh
Y2tldCkKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50
VGFzayA9IHRhc2submV4dAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
LyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAg
ICovCisgICAgZnVuYyBhZGQodGFzazogVGFzaykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9
IHNlbGYubGlzdAorICAgICAgICBzZWxmLmxpc3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisg
ICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlzIGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4g
dGhlIG5leHQgYmxvY2sgdG8gcnVuLgorICAgICovCisgICAgZnVuYyByZWxlYXNlXyhkZXZpY2U6
IERldmljZSkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIGxldCB0YXNrIDogRGV2aWNl
VGFzayA9IGZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IGRldmljZSB9KSBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiBuaWwKKyAgICAgICAgfQorICAgICAgICB0YXNrLnJlbGVhc2VfKCkKKyAg
ICAgICAgaWYgdGFzay5wcmlvcml0eSA+IHNlbGYuY3VycmVudFRhc2shLnByaW9yaXR5IHsKKyAg
ICAgICAgICAgIHJldHVybiB0YXNrCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlbGYuY3Vy
cmVudFRhc2sKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhl
Y3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAgICAq
IHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sgd2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRp
bCBpdCBpcyBleHBsaWNpdGx5CisgICAgKiByZWxlYXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBh
ZGRlZCB0byBpdC4KKyAgICAqLworICAgIGZ1bmMgaG9sZEN1cnJlbnQoKSAtPiBUYXNrPworICAg
IHsKKyAgICAgICAgc2VsZi5ob2xkQ291bnQgKz0gMQorICAgICAgICBzZWxmLmN1cnJlbnRUYXNr
IS5ob2xkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudFRhc2shLm5leHQKKyAgICB9CisK
KyAgICAvKioKKyAgICAqIFN1c3BlbmQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayBhbmQg
cmV0dXJuIHRoZSBuZXh0IHRhc2sgY29udHJvbCBibG9jaworICAgICogdG8gcnVuLiAgSWYgbmV3
IHdvcmsgaXMgYWRkZWQgdG8gdGhlIHN1c3BlbmRlZCB0YXNrIGl0IHdpbGwgYmUgbWFkZSBydW5u
YWJsZS4KKyAgICAqLworICAgIGZ1bmMgd2FpdEN1cnJlbnQoKSAtPiBUYXNrPworICAgIHsKKyAg
ICAgICAgc2VsZi5jdXJyZW50VGFzayEud2FpdCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJl
bnRUYXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmllZCBwYWNrZXQg
dG8gdGhlIGVuZCBvZiB0aGUgd29ya2xpc3QgdXNlZCBieSB0aGUgdGFzaworICAgICogYXNzb2Np
YXRlZCB3aXRoIHRoZSBwYWNrZXQgYW5kIG1ha2UgdGhlIHRhc2sgcnVubmFibGUgaWYgaXQgaXMg
Y3VycmVudGx5CisgICAgKiBzdXNwZW5kZWQuCisgICAgKi8KKyAgICBmdW5jIHF1ZXVlKHBhY2tl
dDogRGV2aWNlUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRhc2sgOiBEZXZp
Y2VUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9
KQorICAgICAgICByZXR1cm4gcXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQor
ICAgIH0KKworICAgIGZ1bmMgcXVldWUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAg
IHsKKyAgICAgICAgbGV0IHRhc2sgOiBXb3JrZXJUYXNrPyA9IHNlbGYuZmluZCh3aGVyZTogeyBf
IGluIHRydWUgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6
IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IFdvcmtQYWNrZXQpIC0+
IFRhc2s/CisgICAgeworICAgICAgICBsZXQgdGFzayA6IEhhbmRsZXJUYXNrPyA9IHNlbGYuZmlu
ZCh3aGVyZTogeyAkMC5kZXZpY2UgPT0gcGFja2V0LmRldmljZSB9KQorICAgICAgICByZXR1cm4g
cXVldWVJbXBsKHRhc2s6IHRhc2ssIHBhY2tldDogcGFja2V0KQorICAgIH0KKworICAgIGZ1bmMg
aGFuZGxlKHBhY2tldDogRGV2aWNlUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0
IHRhc2sgOiBIYW5kbGVyVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBh
Y2tldC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNr
ZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1bmMgcXVldWVJbXBsKHRhc2s6IFRh
c2s/LCBwYWNrZXQ6IFBhY2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGd1YXJkIHRhc2sg
IT0gbmlsIGVsc2UgeyByZXR1cm4gbmlsIH0KKyAgICAgICAgc2VsZi5xdWV1ZUNvdW50ICs9IDEK
KyAgICAgICAgcGFja2V0LmxpbmsgPSBuaWwKKyAgICAgICAgcmV0dXJuIHRhc2shLmNoZWNrUHJp
b3JpdHlBZGQodGFzazogc2VsZi5jdXJyZW50VGFzayEsIHBhY2tldDogcGFja2V0KQorICAgIH0K
KworICAgIHByaXZhdGUgZnVuYyBmaW5kPFQ6IFRhc2s+KHdoZXJlIGNvbmRpdGlvbjogKFQpIC0+
IEJvb2wpIC0+IFQ/CisgICAgeworICAgICAgICB2YXIgdGFzayA9IHNlbGYubGlzdAorICAgICAg
ICB3aGlsZSB0YXNrICE9IG5pbCB7CisgICAgICAgICAgICBpZiBsZXQgdCA9IHRhc2sgYXM/IFQg
eworICAgICAgICAgICAgICAgIGlmIGNvbmRpdGlvbih0KSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
dGFzayA9IHRhc2shLm5leHQKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmlsCisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3RseVN3
aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvVGFzay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJ
QmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRmNDUyODhlMDAxMDc2ZTBkMTRjZjJjNjYyYzhkN2EwNzZlMjhiMgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQKQEAgLTAsMCArMSwxMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKK2ltcG9ydCBGb3VuZGF0aW9uCitpbXBvcnQgSmF2YVNjcmlwdENvcmUKKworZW51
bSBQcmlvcml0eSA6IEludCB7CisgICAgY2FzZSBJZGxlID0gMAorICAgIGNhc2UgV29ya2VyID0g
MTAwMAorICAgIGNhc2UgSGFuZGxlckEgPSAyMDAwCisgICAgY2FzZSBIYW5kbGVyQiA9IDMwMDAK
KyAgICBjYXNlIERldmljZUEgPSA0MDAwCisgICAgY2FzZSBEZXZpY2VCID0gNTAwMAorCisgICAg
c3RhdGljIGZ1bmMgPihsaHM6U2VsZiwgcmhzOlNlbGYpIC0+IEJvb2wgCisgICAgeworICAgICAg
ICByZXR1cm4gbGhzLnJhd1ZhbHVlID4gcmhzLnJhd1ZhbHVlCisgICAgfQorfQorCitAb2JqYyBw
dWJsaWMgY2xhc3MgVGFzayA6IE5TT2JqZWN0LCBKU0V4cG9ydCB7CisgICAgbGV0IHNjaGVkdWxl
ciA6IFNjaGVkdWxlcgorICAgIGxldCBwcmlvcml0eSA6IFByaW9yaXR5CisgICAgdmFyIG5leHQg
OiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0KSB2YXIgcXVldWUgOiBQYWNrZXQ/CisgICAg
cHJpdmF0ZShzZXQpIHZhciBzdGF0ZSA6IFN0YXRlID0gLndhaXRpbmcKKworICAgIHN0cnVjdCBT
dGF0ZSA6IE9wdGlvblNldCB7CisgICAgICAgIGxldCByYXdWYWx1ZTogSW50CisKKyAgICAgICAg
c3RhdGljIGxldCBydW4gOiBTdGF0ZSA9IFtdCisgICAgICAgIHN0YXRpYyBsZXQgaGFzUGFja2V0
ID0gU3RhdGUocmF3VmFsdWU6IDEgPDwgMCkKKyAgICAgICAgc3RhdGljIGxldCB3YWl0aW5nID0g
U3RhdGUocmF3VmFsdWU6IDEgPDwgMSkKKyAgICAgICAgc3RhdGljIGxldCBoZWxkID0gU3RhdGUo
cmF3VmFsdWU6IDEgPDwgMikKKworICAgICAgICBzdGF0aWMgbGV0IHJ1bldpdGhQYWNrZXQgPSBo
YXNQYWNrZXQudW5pb24ocnVuKQorICAgICAgICBzdGF0aWMgbGV0IHdhaXRpbmdXaXRoUGFja2V0
ID0gaGFzUGFja2V0LnVuaW9uKHdhaXRpbmcpCisKKyAgICAgICAgaW5pdChyYXdWYWx1ZTogSW50
KQorICAgICAgICB7CisgICAgICAgICAgICBzZWxmLnJhd1ZhbHVlID0gcmF3VmFsdWUKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIHByZWNvbmRpdGlvbkZhaWx1cmUoIlRoaXMgbWV0aG9kIG11c3QgYmUgb3Zl
cnJpZGRlbiIpIAorICAgIH0KKworICAgIGZ1bmMgcmVsZWFzZV8oKQorICAgIHsKKyAgICAgICAg
c2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAgfQorCisgICAgZnVuYyBob2xkKCkKKyAgICB7
CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oZWxkKQorICAgIH0KKworICAgIGZ1bmMgd2Fp
dCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLmluc2VydCgud2FpdGluZykKKyAgICB9CisK
KyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRlLnJlbW92ZSgud2Fp
dGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQYWNrZXQoKSAtPiBQYWNrZXQKKyAgICB7Cisg
ICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVlIQorICAgICAgICBzZWxmLnF1ZXVlID0gcGFj
a2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1ZSA9PSBuaWwgeworICAgICAgICAgICAgc2Vs
Zi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYuc3RhdGUg
PSAucnVuV2l0aFBhY2tldAorICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrZXQKKyAgICB9
CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQodGFzazogVGFzaywgcGFja2V0OiBQYWNrZXQp
IC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNlbGYucXVldWUgPT0gbmlsIHsKKyAgICAgICAg
ICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5o
YXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxmLnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQuYWRkVG8ocXVldWU6IHNlbGYu
cXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhc2sKKyAgICB9CisKKyAgICBpbml0
KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNrZXQ/
ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5zY2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAgICAg
ICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5CisgICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQor
ICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAgICAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQo
Lmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1dv
cmtlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
NzZiMGU3MjUxMGVhZDcwNTdkMzdkN2RlMGFiMjhiZjY3Njg4MjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
K2ltcG9ydCBKYXZhU2NyaXB0Q29yZQorCitjbGFzcyBXb3JrZXJUYXNrIDogVGFzayB7CisgICAg
cHJpdmF0ZSB2YXIganMgOiBKU1ZhbHVlCisKKyAgICBwcml2YXRlIHN0YXRpYyBsZXQgY29udGV4
dCA6IEpTQ29udGV4dCA9IHsKKyAgICAgICAgbGV0IGNvbnRleHQgPSBKU0NvbnRleHQoKSEKKyAg
ICAgICAgbGV0IHNvdXJjZSA9IHRyeSEgU3RyaW5nKGNvbnRlbnRzT2ZGaWxlOiAicmljaGFyZHMu
anMiKQorICAgICAgICBjb250ZXh0LmV2YWx1YXRlU2NyaXB0KHNvdXJjZSkKKyAgICAgICAgY29u
dGV4dC5leGNlcHRpb25IYW5kbGVyID0geyBjb250ZXh0LCBleGNlcHRpb24gaW4KKyAgICAgICAg
ICAgIHByaW50KGV4Y2VwdGlvbiEudG9TdHJpbmcoKSEpCisgICAgICAgICAgICBleGl0KDIpCisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKyAgICB9KCkKKyAgICBwcml2YXRlIHN0
YXRpYyBsZXQgY29uc3RydWN0b3IgOiBKU1ZhbHVlID0geworICAgICAgICByZXR1cm4gY29udGV4
dC5vYmplY3RGb3JLZXllZFN1YnNjcmlwdCgiY3JlYXRlV29ya2VyVGFzayIpLmNhbGwod2l0aEFy
Z3VtZW50czogW0RldmljZS5BLnJhd1ZhbHVlLCBEZXZpY2UuQi5yYXdWYWx1ZSwgV29ya1BhY2tl
dC5TSVpFXSkKKyAgICB9KCkKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hlZHVsZXI6IFNj
aGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAg
ICAgbGV0IHRhc2sgPSBXb3JrZXJUYXNrKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTog
cHJpb3JpdHksIHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNr
KQorICAgIH0KKworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFz
az8KKyAgICB7CisgICAgICAgIHJldHVybiBzZWxmLmpzLmludm9rZU1ldGhvZCgicnVuIiwgd2l0
aEFyZ3VtZW50czogW3BhY2tldF0pLnRvT2JqZWN0KCkgYXMhIFRhc2s/CisgICAgfQorCisgICAg
cHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1
ZXVlOiBQYWNrZXQpCisgICAgeworICAgICAgICBzZWxmLmpzID0gV29ya2VyVGFzay5jb25zdHJ1
Y3Rvci5jb25zdHJ1Y3Qod2l0aEFyZ3VtZW50czogW3NjaGVkdWxlcl0pCisgICAgICAgIHN1cGVy
LmluaXQoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1
ZXVlKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L21haW4uc3dpZnQgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lm
dC9tYWluLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzU4MTU4NDA4NzhhN2FmZjZjYjVjMDRmYWNmNjZi
Nzk4MDEyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1Jp
Y2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9tYWluLnN3aWZ0CkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKK2ltcG9ydCBRdWFydHpDb3JlCisKK2xldCBpdGVyYXRpb25z
ID0gNTAKK2xldCBzdGFydCA9IENBQ3VycmVudE1lZGlhVGltZSgpCitmb3IgXyBpbiAxLi4uaXRl
cmF0aW9ucyB7CisgICAgcnVuUmljaGFyZHMoKQorfQorbGV0IGVuZCA9IENBQ3VycmVudE1lZGlh
VGltZSgpCitwcmludChJbnQoKGVuZC1zdGFydCkgKiAxMDAwKSkKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L3JpY2hhcmRzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI0NzFl
NWMxOTAyNWE4Y2M0NTY4M2Y4ZmZlNDJlODdhODM5OWRkNQotLS0gL2Rldi9udWxsCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L3JpY2hhcmRzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2Z1bmN0aW9u
IGNyZWF0ZVdvcmtlclRhc2soZGV2aWNlQSwgZGV2aWNlQiwgREFUQV9TSVpFKSB7CisgICAgcmV0
dXJuIGNsYXNzIHsKKyAgICAgICAgY29uc3RydWN0b3Ioc2NoZWR1bGVyKSB7CisgICAgICAgICAg
ICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgICAgICAgICAgIHRoaXMuZGV2aWNlID0g
ZGV2aWNlQTsKKyAgICAgICAgICAgIHRoaXMubGV0dGVySW5kZXggPSAwOworICAgICAgICB9CisK
KyAgICAgICAgcnVuKHBhY2tldCkgeworICAgICAgICAgICAgaWYgKHBhY2tldCA9PSBudWxsKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLndhaXRDdXJyZW50KCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy5k
ZXZpY2UgPT09IGRldmljZUEgPyBkZXZpY2VCIDogZGV2aWNlQTsKKyAgICAgICAgICAgICAgICBw
YWNrZXQuZGV2aWNlID0gdGhpcy5kZXZpY2U7CisgICAgICAgICAgICAgICAgcGFja2V0LnByb2Nl
c3NlZCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRBX1NJWkU7
IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmxldHRlckluZGV4Kys7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLmxldHRlckluZGV4ID4gMjYpCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmxldHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0
LmRhdGFbaV0gPSB0aGlzLmxldHRlckluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaGFuZGxlV2l0aFBhY2tldChwYWNrZXQpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0
L3JpY2hhcmRzLnN3aWZ0IGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuc3dpZnQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Qw
MzVhOTFjY2I3ZmZhNmU5ZGY5MjdlMzg2YmIwNTFiNWI1YzY0MgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01v
c3RseVN3aWZ0L3JpY2hhcmRzLnN3aWZ0CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2lt
cG9ydCBEYXJ3aW4KKworbGV0IEVYUEVDVEVEX1FVRVVFX0NPVU5UID0gMjMyMjsKK2xldCBFWFBF
Q1RFRF9IT0xEX0NPVU5UID0gOTI4OworCitmdW5jIHJ1blJpY2hhcmRzKCkKK3sKKyAgbGV0IHNj
aGVkdWxlciA9IFNjaGVkdWxlcigpCisKKyAgSWRsZVRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2No
ZWR1bGVyLCBwcmlvcml0eTogLklkbGUpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IFdvcmtQ
YWNrZXQobGluazogbmlsKQorICAgICAgcXVldWUgPSBXb3JrUGFja2V0KGxpbms6IHF1ZXVlKQor
ICAgICAgV29ya2VyVGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiBQ
cmlvcml0eS5Xb3JrZXIsIHF1ZXVlOiBxdWV1ZSkKKyAgfSkoKQorCisgICh7CisgICAgICB2YXIg
cXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQSwgbGluazogbmlsKQorICAgICAgcXVldWUg
PSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQSwgbGluazogcXVldWUpCisgICAgICBxdWV1ZSA9IERl
dmljZVBhY2tldChkZXZpY2U6IC5BLCBsaW5rOiBxdWV1ZSkKKyAgICAgIEhhbmRsZXJUYXNrLmNy
ZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQSwgcHJpb3JpdHk6IFByaW9yaXR5
LkhhbmRsZXJBLCBxdWV1ZTogcXVldWUpCisgIH0pKCkKKworICAoeworICAgICAgdmFyIHF1ZXVl
ID0gRGV2aWNlUGFja2V0KGRldmljZTogLkIsIGxpbms6IG5pbCkKKyAgICAgIHF1ZXVlID0gRGV2
aWNlUGFja2V0KGRldmljZTogLkIsIGxpbms6IHF1ZXVlKQorICAgICAgcXVldWUgPSBEZXZpY2VQ
YWNrZXQoZGV2aWNlOiAuQiwgbGluazogcXVldWUpCisgICAgICBIYW5kbGVyVGFzay5jcmVhdGUo
c2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkIsIHByaW9yaXR5OiBQcmlvcml0eS5IYW5k
bGVyQiwgcXVldWU6IHF1ZXVlKQorICB9KSgpCisKKyAgRGV2aWNlVGFzay5jcmVhdGUoc2NoZWR1
bGVyOiBzY2hlZHVsZXIsIGRldmljZTogLkEsIHByaW9yaXR5OiBQcmlvcml0eS5EZXZpY2VBKQor
ICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQiwgcHJp
b3JpdHk6IFByaW9yaXR5LkRldmljZUIpCisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCkKKworICBp
ZiBzY2hlZHVsZXIucXVldWVDb3VudCAhPSBFWFBFQ1RFRF9RVUVVRV9DT1VOVCB8fCBzY2hlZHVs
ZXIuaG9sZENvdW50ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQgeworICAgIHByaW50KCJFcnJvciBk
dXJpbmcgZXhlY3V0aW9uOiBxdWV1ZUNvdW50ID0gXChzY2hlZHVsZXIucXVldWVDb3VudCksIGhv
bGRDb3VudCA9IFwoc2NoZWR1bGVyLmhvbGRDb3VudCkuIikKKyAgICBleGl0KDEpCisgIH0KK30K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9QZXJmb3JtYW5jZVRlc3RzL0FQ
SUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjljNzUyM2I5OGFmMDM3NDg0M2QwNzMyNzUxYmM4Yjc3YmRkYmVkMzUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzE4
IEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7
CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNTA7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tl
dC5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzM4MjQ5QjAxRDEwMDAxRjExRSAvKiBQYWNrZXQuc3dpZnQgKi87IH07CisJCTE0MEFBQzQx
MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzM5MjQ5QjAxRDEwMDAxRjExRSAvKiByaWNo
YXJkcy5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDIyNDlCMDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxl
ci5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MEFBQzNBMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hlZHVsZXIuc3dpZnQgKi87IH07CisJCTE0MEFB
QzQzMjQ5QjAxRDEwMDAxRjExRSAvKiBUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2su
c3dpZnQgKi87IH07CisJCTE0MEFBQzQ0MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lm
dCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzND
MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCAqLzsgfTsKKwkJMTQwQUFDNDUyNDlC
MDFEMTAwMDFGMTFFIC8qIEhhbmRsZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwQUFDM0QyNDlCMDFEMTAwMDFGMTFFIC8qIEhhbmRs
ZXJUYXNrLnN3aWZ0ICovOyB9OworCQkxNDBBQUM0NjI0OUIwMUQxMDAwMUYxMUUgLyogV29ya2Vy
VGFzay5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0MEFBQzNFMjQ5QjAxRDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovOyB9OworCQkx
NDBBQUM0NzI0OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEFBQzNGMjQ5QjAxRDEwMDAxRjEx
RSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovOyB9OworCQkxNDE1QUQyNjI0OTlCQzVDMDA1QkIyRTQg
LyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MTVBRDI1MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0ICovOyB9OworLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkxNDE1QUQyMDI0OTlCQzVDMDA1QkIyRTQgLyogQ29weUZpbGVzICov
ID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDEyOworCQkJZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxNDBBQUMzODI0OUIwMUQxMDAw
MUYxMUUgLyogUGFja2V0LnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9
IFBhY2tldC5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwQUFDMzkyNDlC
MDFEMTAwMDFGMTFFIC8qIHJpY2hhcmRzLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lm
dDsgcGF0aCA9IHJpY2hhcmRzLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDBBQUMzQTI0OUIwMUQxMDAwMUYxMUUgLyogU2NoZWR1bGVyLnN3aWZ0ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5zd2lmdDsgcGF0aCA9IFNjaGVkdWxlci5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQwQUFDM0IyNDlCMDFEMTAwMDFGMTFFIC8qIFRhc2suc3dpZnQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gVGFzay5zd2lmdDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQwQUFDM0MyNDlCMDFEMTAwMDFGMTFFIC8qIElkbGVUYXNrLnN3aWZ0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IElkbGVUYXNrLnN3aWZ0OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDBBQUMzRDI0OUIwMUQxMDAwMUYxMUUgLyogSGFu
ZGxlclRhc2suc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gSGFuZGxl
clRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEFBQzNFMjQ5QjAx
RDEwMDAxRjExRSAvKiBXb3JrZXJUYXNrLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lm
dDsgcGF0aCA9IFdvcmtlclRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNrLnN3aWZ0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5zd2lmdDsgcGF0aCA9IERldmljZVRhc2suc3dpZnQ7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0MTVBRDIyMjQ5OUJDNUMwMDVCQjJFNCAvKiBSaWNoYXJkc1N3aWZ0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBSaWNoYXJk
c1N3aWZ0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNDE1QUQyNTI0
OTlCQzVDMDA1QkIyRTQgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBtYWluLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJ
CTE0MTVBRDFGMjQ5OUJDNUMwMDVCQjJFNCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTE0MTVBRDE5MjQ5OUJDNUIwMDVC
QjJFNCA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFE
MjQyNDk5QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8sCisJCQkJMTQxNUFEMjMyNDk5
QkM1QzAwNUJCMkU0IC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTQxNUFEMjIyNDk5
QkM1QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1
Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQxNUFEMjQyNDk5QkM1
QzAwNUJCMkU0IC8qIFJpY2hhcmRzU3dpZnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTE0MEFBQzNGMjQ5QjAxRDEwMDAxRjExRSAvKiBEZXZpY2VUYXNr
LnN3aWZ0ICovLAorCQkJCTE0MEFBQzNEMjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5z
d2lmdCAqLywKKwkJCQkxNDBBQUMzQzI0OUIwMUQxMDAwMUYxMUUgLyogSWRsZVRhc2suc3dpZnQg
Ki8sCisJCQkJMTQxNUFEMjUyNDk5QkM1QzAwNUJCMkU0IC8qIG1haW4uc3dpZnQgKi8sCisJCQkJ
MTQwQUFDMzgyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCAqLywKKwkJCQkxNDBBQUMz
OTI0OUIwMUQxMDAwMUYxMUUgLyogcmljaGFyZHMuc3dpZnQgKi8sCisJCQkJMTQwQUFDM0EyNDlC
MDFEMTAwMDFGMTFFIC8qIFNjaGVkdWxlci5zd2lmdCAqLywKKwkJCQkxNDBBQUMzQjI0OUIwMUQx
MDAwMUYxMUUgLyogVGFzay5zd2lmdCAqLywKKwkJCQkxNDBBQUMzRTI0OUIwMUQxMDAwMUYxMUUg
LyogV29ya2VyVGFzay5zd2lmdCAqLywKKwkJCSk7CisJCQlwYXRoID0gUmljaGFyZHNTd2lmdDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxNDE1QUQyMTI0
OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lmdCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDE1QUQyOTI0OTlCQzVDMDA1
QkIyRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlJp
Y2hhcmRzU3dpZnQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMTQxNUFEMUUyNDk5QkM1
QzAwNUJCMkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJMTQxNUFEMUYyNDk5QkM1QzAwNUJCMkU0IC8q
IEZyYW1ld29ya3MgKi8sCisJCQkJMTQxNUFEMjAyNDk5QkM1QzAwNUJCMkU0IC8qIENvcHlGaWxl
cyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCSk7CisJCQluYW1lID0gUmljaGFyZHNTd2lmdDsKKwkJCXByb2R1Y3ROYW1lID0gUmlj
aGFyZHNTd2lmdDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDE1QUQyMjI0OTlCQzVDMDA1QkIy
RTQgLyogUmljaGFyZHNTd2lmdCAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9k
dWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTE0MTVBRDFBMjQ5OUJDNUIwMDVC
QjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlh
dHRyaWJ1dGVzID0geworCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMTIwMDsKKwkJCQlMYXN0
VXBncmFkZUNoZWNrID0gMTIwMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxNDE1
QUQyMTI0OTlCQzVDMDA1QkIyRTQgPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAx
Mi4wOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDE0MTVBRDFEMjQ5OUJDNUIwMDVCQjJFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIlJpY2hhcmRzU3dpZnQiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgOS4zIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gZW47CisJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCQlCYXNl
LAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDE0MTVBRDE5MjQ5OUJDNUIwMDVCQjJFNDsKKwkJCXBy
b2R1Y3RSZWZHcm91cCA9IDE0MTVBRDIzMjQ5OUJDNUMwMDVCQjJFNCAvKiBQcm9kdWN0cyAqLzsK
KwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0
cyA9ICgKKwkJCQkxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQgLyogUmljaGFyZHNTd2lmdCAqLywK
KwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMTQxNUFEMUUyNDk5QkM1QzAwNUJCMkU0
IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDBBQUM0NzI0
OUIwMUQxMDAwMUYxMUUgLyogRGV2aWNlVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0
MEFBQzQ1MjQ5QjAxRDEwMDAxRjExRSAvKiBIYW5kbGVyVGFzay5zd2lmdCBpbiBTb3VyY2VzICov
LAorCQkJCTE0MEFBQzQ0MjQ5QjAxRDEwMDAxRjExRSAvKiBJZGxlVGFzay5zd2lmdCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MTVBRDI2MjQ5OUJDNUMwMDVCQjJFNCAvKiBtYWluLnN3aWZ0IGluIFNv
dXJjZXMgKi8sCisJCQkJMTQwQUFDNDAyNDlCMDFEMTAwMDFGMTFFIC8qIFBhY2tldC5zd2lmdCBp
biBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQxMjQ5QjAxRDEwMDAxRjExRSAvKiByaWNoYXJkcy5z
d2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQyMjQ5QjAxRDEwMDAxRjExRSAvKiBTY2hl
ZHVsZXIuc3dpZnQgaW4gU291cmNlcyAqLywKKwkJCQkxNDBBQUM0MzI0OUIwMUQxMDAwMUYxMUUg
LyogVGFzay5zd2lmdCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEFBQzQ2MjQ5QjAxRDEwMDAxRjEx
RSAvKiBXb3JrZXJUYXNrLnN3aWZ0IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0
aW9uICovCisJCTE0MTVBRDI3MjQ5OUJDNUMwMDVCQjJFNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OT05OVUxMID0g
WUVTOworCQkJCUNMQU5HX0FOQUxZWkVSX05VTUJFUl9PQkpFQ1RfQ09OVkVSU0lPTiA9IFlFU19B
R0dSRVNTSVZFOworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzE0IjsK
KwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RV
TEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19F
TkFCTEVfT0JKQ19XRUFLID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRP
UkVMRUFTSU5HID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fQ09NTUEgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fREVQUkVDQVRFRF9PQkpDX0lNUExFTUVOVEFU
SU9OUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19F
UlJPUjsKKwkJCQlDTEFOR19XQVJOX0RPQ1VNRU5UQVRJT05fQ09NTUVOVFMgPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJT
SU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX0lNUExJQ0lU
X1JFVEFJTl9TRUxGID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJ
CQkJQ0xBTkdfV0FSTl9RVU9URURfSU5DTFVERV9JTl9GUkFNRVdPUktfSEVBREVSID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X1NUUklDVF9QUk9UT1RZUEVTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZF
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fVU5HVUFSREVEX0FWQUlMQUJJTElUWSA9IFlFU19BR0dS
RVNTSVZFOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwkJCQlFTkFC
TEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlFTkFCTEVfVEVTVEFCSUxJVFkgPSBZ
RVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUxMTsKKwkJCQlHQ0NfRFlOQU1J
Q19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKKwkJCQlHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
ID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JF
U1NJVkU7CisJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAx
MC4xNjsKKwkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBJTkNMVURFX1NPVVJDRTsKKwkJCQlN
VExfRkFTVF9NQVRIID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlTV0lGVF9BQ1RJVkVfQ09NUElMQVRJT05fQ09ORElUSU9OUyA9
IERFQlVHOworCQkJCVNXSUZUX09QVElNSVpBVElPTl9MRVZFTCA9ICItT25vbmUiOworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdf
QU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQlDTEFOR19BTkFMWVpFUl9OVU1CRVJfT0JKRUNU
X0NPTlZFUlNJT04gPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RB
TkRBUkQgPSAiZ251KysxNCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJ
CQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMg
PSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X0JMT0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTU1BID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RFUFJFQ0FU
RURfT0JKQ19JTVBMRU1FTlRBVElPTlMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JK
Q19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9ET0NVTUVOVEFUSU9OX0NP
TU1FTlRTID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFO
R19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lORklOSVRFX1JF
Q1VSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fT0JKQ19JTVBMSUNJVF9SRVRBSU5fU0VMRiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09C
SkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NM
QVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fUVVPVEVEX0lOQ0xVREVfSU5fRlJBTUVX
T1JLX0hFQURFUiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX1VOR1VBUkRFRF9BVkFJ
TEFCSUxJVFkgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NP
REUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFU
ID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJ
CQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTExOworCQkJCUdDQ19OT19DT01NT05fQkxPQ0tTID0gWUVTOworCQkJCUdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNU
T1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNT
SVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9V
TlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
MTY7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87CisJCQkJTVRMX0ZBU1RfTUFUSCA9
IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVNXSUZUX0NPTVBJTEFUSU9OX01PREUg
PSB3aG9sZW1vZHVsZTsKKwkJCQlTV0lGVF9PUFRJTUlaQVRJT05fTEVWRUwgPSAiLU8iOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDE1QUQyQTI0OTlCQzVDMDA1QkIyRTQg
LyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU1dJRlRfVkVSU0lPTiA9IDUuMDsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTE0MTVBRDJCMjQ5OUJDNUMwMDVCQjJFNCAv
KiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUNPREVfU0lHTl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNXSUZUX1ZFUlNJT04gPSA1LjA7CisJ
CQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
KwkJMTQxNUFEMUQyNDk5QkM1QjAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiUmljaGFyZHNTd2lmdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDE1QUQyNzI0OTlC
QzVDMDA1QkIyRTQgLyogRGVidWcgKi8sCisJCQkJMTQxNUFEMjgyNDk5QkM1QzAwNUJCMkU0IC8q
IFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQxNUFE
MjkyNDk5QkM1QzAwNUJCMkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJSaWNoYXJkc1N3aWZ0IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0MTVBRDJBMjQ5OUJDNUMw
MDVCQjJFNCAvKiBEZWJ1ZyAqLywKKwkJCQkxNDE1QUQyQjI0OTlCQzVDMDA1QkIyRTQgLyogUmVs
ZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDE0MTVBRDFBMjQ5
OUJDNUIwMDVCQjJFNCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1JpY2hhcmRzU3dpZnQueGNzY2hlbWUgYi9QZXJmb3Jt
YW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2ov
eGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjM2NhZTUxNTZjYzFhZWFjYzFkZTYwZmYwMWJlNDljNWQzM2YyZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lm
dC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1l
CkBAIC0wLDAgKzEsODEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8U2NoZW1lCisgICBMYXN0VXBncmFkZVZlcnNpb24gPSAiMTIwMCIKKyAgIHZlcnNpb24gPSAi
MS43Ij4KKyAgIDxCdWlsZEFjdGlvbgorICAgICAgcGFyYWxsZWxpemVCdWlsZGFibGVzID0gIllF
UyIKKyAgICAgIGJ1aWxkSW1wbGljaXREZXBlbmRlbmNpZXMgPSAiWUVTIj4KKyAgICAgIDxCdWls
ZEFjdGlvbkVudHJpZXM+CisgICAgICAgICA8QnVpbGRBY3Rpb25FbnRyeQorICAgICAgICAgICAg
YnVpbGRGb3JUZXN0aW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZ
RVMiCisgICAgICAgICAgICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCisgICAgICAgICAgICBi
dWlsZEZvckFyY2hpdmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvckFuYWx5emluZyA9
ICJZRVMiPgorICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAg
QnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50
SWRlbnRpZmllciA9ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICAgICBC
dWlsZGFibGVOYW1lID0gIlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRO
YW1lID0gIlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVy
ID0gImNvbnRhaW5lcjpSaWNoYXJkc1N3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICAgICA8L0J1
aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgICAgIDwvQnVpbGRBY3Rpb25FbnRyeT4KKyAgICAgIDwv
QnVpbGRBY3Rpb25FbnRyaWVzPgorICAgPC9CdWlsZEFjdGlvbj4KKyAgIDxUZXN0QWN0aW9uCisg
ICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBzZWxlY3RlZERlYnVnZ2Vy
SWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAg
ICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlv
bi5MYXVuY2hlci5MTERCIgorICAgICAgc2hvdWxkVXNlTGF1bmNoU2NoZW1lQXJnc0VudiA9ICJZ
RVMiPgorICAgICAgPFRlc3RhYmxlcz4KKyAgICAgIDwvVGVzdGFibGVzPgorICAgPC9UZXN0QWN0
aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVh
c2UiCisgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZv
dW5kYXRpb24uRGVidWdnZXIuTExEQiIKKyAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVy
ID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgorICAgICAgbGF1bmNo
U3R5bGUgPSAiMCIKKyAgICAgIHVzZUN1c3RvbVdvcmtpbmdEaXJlY3RvcnkgPSAiTk8iCisgICAg
ICBpZ25vcmVzUGVyc2lzdGVudFN0YXRlT25MYXVuY2ggPSAiTk8iCisgICAgICBkZWJ1Z0RvY3Vt
ZW50VmVyc2lvbmluZyA9ICJZRVMiCisgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50
ZXJuYWwiCisgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPEJ1
aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0g
IjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxl
SWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9
ICIxNDE1QUQyMTI0OTlCQzVDMDA1QkIyRTQiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0g
IlJpY2hhcmRzU3dpZnQiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIlJpY2hhcmRzU3dp
ZnQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpSaWNoYXJk
c1N3aWZ0Lnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAg
IDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJv
ZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBz
aG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50
aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAg
IGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8QnVpbGRhYmxlUHJvZHVj
dFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CisgICAgICAg
ICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0g
InByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjE0MTVBRDIxMjQ5
OUJDNUMwMDVCQjJFNCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiUmljaGFyZHNTd2lm
dCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiUmljaGFyZHNTd2lmdCIKKyAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlJpY2hhcmRzU3dpZnQueGNvZGVw
cm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgPC9CdWlsZGFibGVQ
cm9kdWN0UnVubmFibGU+CisgICA8L1Byb2ZpbGVBY3Rpb24+CisgICA8QW5hbHl6ZUFjdGlvbgor
ICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIj4KKyAgIDwvQW5hbHl6ZUFjdGlvbj4K
KyAgIDxBcmNoaXZlQWN0aW9uCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
KyAgICAgIHJldmVhbEFyY2hpdmVJbk9yZ2FuaXplciA9ICJZRVMiPgorICAgPC9BcmNoaXZlQWN0
aW9uPgorICAgPEluc3RhbGxBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxl
YXNlIj4KKyAgIDwvSW5zdGFsbEFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvRGV2aWNlVGFz
ay5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJk
c1N3aWZ0L0RldmljZVRhc2suc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkyMGE1YWQ0NDJkZjFlYzZhODc3
Y2EwNDA5ZGM0M2IxMTVkOTU5OAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L0RldmljZVRhc2suc3dpZnQKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworZW51bSBEZXZpY2UgeworICAgIGNhc2UgQQorICAg
IGNhc2UgQgorfQorCisvKioKKyAqIEEgdGFzayB0aGF0IHN1c3BlbmRzIGl0c2VsZiBhZnRlciBl
YWNoIHRpbWUgaXQgaGFzIGJlZW4gcnVuIHRvIHNpbXVsYXRlCisgKiB3YWl0aW5nIGZvciBkYXRh
IGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlLgorICovCitjbGFzcyBEZXZpY2VUYXNrIDogVGFzayB7
CisgICAgbGV0IGRldmljZTogRGV2aWNlCisgICAgdmFyIHBlbmRpbmdQYWNrZXQgOiBEZXZpY2VQ
YWNrZXQ/ID0gbmlsCisKKyAgICBzdGF0aWMgZnVuYyBjcmVhdGUoc2NoZWR1bGVyOiBTY2hlZHVs
ZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBs
ZXQgdGFzayA9IERldmljZVRhc2soc2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNl
LCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5hZGQodGFzazogdGFzaykK
KyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/
CisgICAgeworICAgICAgICBpZiBwYWNrZXQgPT0gbmlsIHsKKyAgICAgICAgICAgIGd1YXJkIGxl
dCBwYWNrZXQgPSBzZWxmLnBlbmRpbmdQYWNrZXQgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc2NoZWR1bGVyLndhaXRDdXJyZW50KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHNlbGYucGVuZGluZ1BhY2tldCA9IG5pbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2No
ZWR1bGVyLmhhbmRsZShwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYu
cGVuZGluZ1BhY2tldCA9IChwYWNrZXQgYXMhIERldmljZVBhY2tldCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCkKKyAgICB9CisKKyAgICBwcml2YXRlIGluaXQo
c2NoZWR1bGVyOiBTY2hlZHVsZXIsIGRldmljZTogRGV2aWNlLCBwcmlvcml0eTogUHJpb3JpdHkp
CisgICAgeworICAgICAgICBzZWxmLmRldmljZSA9IGRldmljZQorICAgICAgICBzdXBlci5pbml0
KHNjaGVkdWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvSGFuZGxlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9IYW5kbGVyVGFzay5zd2lmdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2Fm
YjIxYjIyYTc1YmU1MTBkMTJjYjcyMTgzOGMxMTEwNGQwNjc2Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSGFu
ZGxlclRhc2suc3dpZnQKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoqCisgKiBBIHRh
c2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMgYW5kIHRoZW4gc3VzcGVuZHMgaXRzZWxm
LgorICovCitjbGFzcyBIYW5kbGVyVGFzayA6IFRhc2sgeworICAgIHZhciBkZXZpY2U6IERldmlj
ZQorICAgIHZhciB3b3JrUXVldWUgOiBXb3JrUGFja2V0PyA9IG5pbAorICAgIHZhciBkZXZpY2VR
dWV1ZSA6IERldmljZVBhY2tldD8gPSBuaWwKKworICAgIHN0YXRpYyBmdW5jIGNyZWF0ZShzY2hl
ZHVsZXI6IFNjaGVkdWxlciwgZGV2aWNlOiBEZXZpY2UsIHByaW9yaXR5OiBQcmlvcml0eSwgcXVl
dWU6IERldmljZVBhY2tldCkKKyAgICB7CisgICAgICAgIGxldCB0YXNrID0gSGFuZGxlclRhc2so
c2NoZWR1bGVyOiBzY2hlZHVsZXIsIGRldmljZTogZGV2aWNlLCBwcmlvcml0eTogcHJpb3JpdHks
IHF1ZXVlOiBxdWV1ZSkKKyAgICAgICAgc2NoZWR1bGVyLmFkZCh0YXNrOiB0YXNrKQorICAgIH0K
KworICAgIG92ZXJyaWRlIGZ1bmMgcnVuKHBhY2tldDogUGFja2V0PykgLT4gVGFzaz8KKyAgICB7
CisgICAgICAgIGlmIGxldCBwID0gcGFja2V0IHsKKyAgICAgICAgICAgIGlmIGxldCB3b3JrID0g
cCBhcz8gV29ya1BhY2tldCB7CisgICAgICAgICAgICAgICAgc2VsZi53b3JrUXVldWUgPSB3b3Jr
LmFkZFRvKHF1ZXVlOiBzZWxmLndvcmtRdWV1ZSkgYXMhIFdvcmtQYWNrZXQ/CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbGYuZGV2aWNlUXVldWUgPSAocCBhcyEgRGV2
aWNlUGFja2V0KS5hZGRUbyhxdWV1ZTogc2VsZi5kZXZpY2VRdWV1ZSkgYXMhIERldmljZVBhY2tl
dD8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiBsZXQgd29ya1BhY2tldCA9
IHNlbGYud29ya1F1ZXVlIHsKKyAgICAgICAgICAgIGxldCBwcm9jZXNzZWQgPSB3b3JrUGFja2V0
LnByb2Nlc3NlZAorICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCA8IFdvcmtQYWNrZXQuU0laRSkg
eworICAgICAgICAgICAgICAgIGlmIGxldCBkZXZpY2VQYWNrZXQgPSBzZWxmLmRldmljZVF1ZXVl
IHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZXZpY2VRdWV1ZSA9IGRldmljZVBhY2tldC5s
aW5rIGFzISBEZXZpY2VQYWNrZXQ/CisgICAgICAgICAgICAgICAgICAgIGRldmljZVBhY2tldC5s
ZXR0ZXJJbmRleCA9IHdvcmtQYWNrZXQuZGF0YVtwcm9jZXNzZWRdCisgICAgICAgICAgICAgICAg
ICAgIHdvcmtQYWNrZXQucHJvY2Vzc2VkID0gcHJvY2Vzc2VkICsgMQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0OiBkZXZpY2VQYWNrZXQpCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZWxmLndvcmtRdWV1ZSA9IHdvcmtQYWNrZXQubGluayBhcyEgV29ya1BhY2tldD8KKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIucXVldWUocGFja2V0OiB3b3JrUGFja2V0KQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci53
YWl0Q3VycmVudCgpCisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0KHNjaGVkdWxlcjogU2NoZWR1
bGVyLCBkZXZpY2U6IERldmljZSwgcHJpb3JpdHk6IFByaW9yaXR5LCBxdWV1ZTogRGV2aWNlUGFj
a2V0KQorICAgIHsKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBkZXZpY2UKKyAgICAgICAgc3VwZXIu
aW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVl
dWUpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNo
YXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9JZGxlVGFzay5zd2lmdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MWNmMzFhYmNkMDY4ZTA1ODZjODg4NTEwNTM3MWMxZGM1NzgxZmU0Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hh
cmRzU3dpZnQvSWRsZVRhc2suc3dpZnQKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLyoq
CisgKiBBbiBpZGxlIHRhc2sgZG9lc24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBj
b250cm9sIGJldHdlZW4gdGhlIHR3byBkZXZpY2UgdGFza3MuCisgKi8KK2NsYXNzIElkbGVUYXNr
IDogVGFzayB7CisgICAgdmFyIGhhc2ggOiBJbnQgPSAxCisgICAgdmFyIGNvdW50IDogSW50ID0g
MTAwMAorCisgICAgc3RhdGljIGZ1bmMgY3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlv
cml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IElkbGVUYXNrKHNjaGVk
dWxlcjogc2NoZWR1bGVyLCBwcmlvcml0eTogcHJpb3JpdHkpCisgICAgICAgIHNjaGVkdWxlci5h
ZGQodGFzazogdGFzaykKKyAgICB9CisKKyAgICBvdmVycmlkZSBmdW5jIHJ1bihwYWNrZXQ6IFBh
Y2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgc2VsZi5jb3VudCAtPSAxCisgICAgICBpZiBz
ZWxmLmNvdW50ID09IDAgeworICAgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5ob2xkQ3Vy
cmVudCgpCisgICAgICB9CisgICAgICBpZiAoc2VsZi5oYXNoICYgMSkgPT0gMCB7CisgICAgICAg
IHNlbGYuaGFzaCA9IHNlbGYuaGFzaCA+PiAxCisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxl
ci5yZWxlYXNlKGRldmljZTogLkEpCisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxmLmhhc2gg
PSAoc2VsZi5oYXNoID4+IDEpIF4gMHhEMDA4CisgICAgICAgIHJldHVybiBzZWxmLnNjaGVkdWxl
ci5yZWxlYXNlKGRldmljZTogLkIpCisgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbml0
KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHkpCisgICAgeworICAgICAg
c3VwZXIuaW5pdChzY2hlZHVsZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5KQorICAg
ICAgc2VsZi5yZXN1bWUoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1BhY2tldC5zd2lmdCBiL1BlcmZv
cm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1BhY2tldC5z
d2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MjdlMTBlY2UzMWFmNWQ2MTg1YzRiYmFjZDczMjEyZThlZDAwYmEw
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3
aWZ0L1JpY2hhcmRzU3dpZnQvUGFja2V0LnN3aWZ0CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKy8qKgorICogQSBzaW1wbGUgcGFja2FnZSBvZiBkYXRhIHRoYXQgaXMgbWFuaXB1bGF0ZWQg
YnkgdGhlIHRhc2tzLiAgVGhlIGV4YWN0IGxheW91dAorICogb2YgdGhlIHBheWxvYWQgZGF0YSBj
YXJyaWVkIGJ5IGEgcGFja2V0IGlzIG5vdCBpbXBvcnRhaW50LCBhbmQgbmVpdGhlciBpcyB0aGUK
KyAqIG5hdHVyZSBvZiB0aGUgd29yayBwZXJmb3JtZWQgb24gcGFja2V0cyBieSB0aGUgdGFza3Mu
CisgKgorICogQmVzaWRlcyBjYXJyeWluZyBkYXRhLCBwYWNrZXRzIGZvcm0gbGlua2VkIGxpc3Rz
IGFuZCBhcmUgaGVuY2UgdXNlZCBib3RoIGFzCisgKiBkYXRhIGFuZCB3b3JrbGlzdHMuCisgKi8K
K2NsYXNzIFBhY2tldCB7CisgICAgdmFyIGRldmljZSA6IERldmljZQorICAgIHZhciBsaW5rIDog
UGFja2V0PworCisgICAgaW5pdChkZXZpY2U6IERldmljZSwgbGluazogUGFja2V0PykKKyAgICB7
CisgICAgICAgIHNlbGYuZGV2aWNlID0gZGV2aWNlCisgICAgICAgIHNlbGYubGluayA9IGxpbmsK
KyAgICB9CisKKyAgICAvKioKKyAgICAqIEFkZCB0aGlzIHBhY2tldCB0byB0aGUgZW5kIG9mIGEg
d29ya2xpc3QsIGFuZCByZXR1cm4gdGhlIHdvcmtsaXN0LgorICAgICovCisgICAgZnVuYyBhZGRU
byhxdWV1ZTogUGFja2V0PykgLT4gUGFja2V0PyB7CisgICAgICAgIHNlbGYubGluayA9IG5pbAor
ICAgICAgICBndWFyZCB2YXIgbmV4dCA9IHF1ZXVlIGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IHNlbGYKKyAgICAgICAgfQorICAgICAgICB3aGlsZSBuZXh0LmxpbmsgIT0gbmlsIHsKKyAgICAg
ICAgICAgIG5leHQgPSBuZXh0LmxpbmshCisgICAgICAgIH0KKyAgICAgICAgbmV4dC5saW5rID0g
c2VsZgorICAgICAgICByZXR1cm4gcXVldWU7CisgICAgfQorfQorCitmaW5hbCBjbGFzcyBEZXZp
Y2VQYWNrZXQgOiBQYWNrZXQgeworICAgIHZhciBsZXR0ZXJJbmRleCA6IEludCA9IDAKK30KKwor
ZmluYWwgY2xhc3MgV29ya1BhY2tldCA6IFBhY2tldCB7CisgICAgc3RhdGljIGxldCBTSVpFIDog
SW50ID0gNAorCisgICAgdmFyIHByb2Nlc3NlZCA6IEludCA9IDAKKyAgICB2YXIgZGF0YSA6IFtJ
bnRdID0gW0ludF0ocmVwZWF0aW5nOiAwLCBjb3VudDogU0laRSkKKworICAgIGluaXQobGluazog
UGFja2V0PykKKyAgICB7CisgICAgICAgIHN1cGVyLmluaXQoZGV2aWNlOiAuQSwgbGluazogbGlu
aykKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hh
cmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIuc3dpZnQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWFhMGY1MTkyNTI1MTAwMDgxMDJjOWVlNmQ5ZmFmYTQxNmMzOWFmYwotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0L1NjaGVkdWxlci5zd2lmdApAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
LyoqCisqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tz
IGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisqIHByaW9yaXRpZXMuICBTY2hlZHVsaW5nIGlzIGRv
bmUgYnkgbWFpbnRhaW5pbmcgYSBsaXN0IG9mIHRhc2sgY29udHJvbCBibG9ja3MKKyogd2hpY2gg
aG9sZHMgdGFza3MgYW5kIHRoZSBkYXRhIHF1ZXVlIHRoZXkgYXJlIHByb2Nlc3NpbmcuCisqIEBj
b25zdHJ1Y3RvcgorKi8KK2NsYXNzIFNjaGVkdWxlciB7CisgICAgcHJpdmF0ZShzZXQpIHZhciBx
dWV1ZUNvdW50ID0gMAorICAgIHByaXZhdGUoc2V0KSB2YXIgaG9sZENvdW50ID0gMAorICAgIHBy
aXZhdGUoc2V0KSB2YXIgY3VycmVudFRhc2sgOiBUYXNrPyA9IG5pbAorICAgIHByaXZhdGUoc2V0
KSB2YXIgbGlzdCA6IFRhc2s/ID0gbmlsCisKKyAgICAvKioKKyAgICAqIEV4ZWN1dGUgdGhlIHRh
c2tzIG1hbmFnZWQgYnkgdGhpcyBzY2hlZHVsZXIuCisgICAgKi8KKyAgICBmdW5jIHNjaGVkdWxl
KCkKKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAg
d2hpbGUgbGV0IHRhc2sgPSBzZWxmLmN1cnJlbnRUYXNrIHsKKyAgICAgICAgICAgIHZhciBwYWNr
ZXQgOiBQYWNrZXQ/ID0gbmlsCisgICAgICAgICAgICBzd2l0Y2ggdGFzay5zdGF0ZSB7CisgICAg
ICAgICAgICBjYXNlIC53YWl0aW5nV2l0aFBhY2tldDoKKyAgICAgICAgICAgICAgICBwYWNrZXQg
PSB0YXNrLnRha2VQYWNrZXQoKQorICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoCisgICAgICAg
ICAgICBjYXNlIC5ydW4sIC5ydW5XaXRoUGFja2V0OgorICAgICAgICAgICAgICAgIHNlbGYuY3Vy
cmVudFRhc2sgPSB0YXNrLnJ1bihwYWNrZXQ6IHBhY2tldCkKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFzayA9IHRhc2submV4dAorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBBZGQgdGhlIHNwZWNpZmll
ZCB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICAgICovCisgICAgZnVuYyBhZGQodGFzazogVGFz
aykKKyAgICB7CisgICAgICAgIHRhc2submV4dCA9IHNlbGYubGlzdAorICAgICAgICBzZWxmLmxp
c3QgPSB0YXNrCisgICAgfQorCisgICAgLyoqCisgICAgKiBSZWxlYXNlIGEgdGFzayB0aGF0IGlz
IGN1cnJlbnRseSBibG9ja2VkIGFuZCByZXR1cm4gdGhlIG5leHQgYmxvY2sgdG8gcnVuLgorICAg
ICovCisgICAgZnVuYyByZWxlYXNlKGRldmljZTogRGV2aWNlKSAtPiBUYXNrPworICAgIHsKKyAg
ICAgICAgZ3VhcmQgbGV0IHRhc2sgOiBEZXZpY2VUYXNrID0gZmluZCh3aGVyZTogeyAkMC5kZXZp
Y2UgPT0gZGV2aWNlIH0pIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5pbAorICAgICAgICB9
CisgICAgICAgIHRhc2sucmVsZWFzZSgpCisgICAgICAgIGlmIHRhc2sucHJpb3JpdHkgPiBzZWxm
LmN1cnJlbnRUYXNrIS5wcmlvcml0eSB7CisgICAgICAgICAgICByZXR1cm4gdGFzaworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRUYXNrCisgICAgfQorCisgICAgLyoqCisg
ICAgKiBCbG9jayB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIGFuZCByZXR1cm4gdGhlIG5l
eHQgdGFzayBjb250cm9sIGJsb2NrCisgICAgKiB0byBydW4uICBUaGUgYmxvY2tlZCB0YXNrIHdp
bGwgbm90IGJlIG1hZGUgcnVubmFibGUgdW50aWwgaXQgaXMgZXhwbGljaXRseQorICAgICogcmVs
ZWFzZWQsIGV2ZW4gaWYgbmV3IHdvcmsgaXMgYWRkZWQgdG8gaXQuCisgICAgKi8KKyAgICBmdW5j
IGhvbGRDdXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuaG9sZENvdW50ICs9
IDEKKyAgICAgICAgc2VsZi5jdXJyZW50VGFzayEuaG9sZCgpCisgICAgICAgIHJldHVybiBzZWxm
LmN1cnJlbnRUYXNrIS5uZXh0CisgICAgfQorCisgICAgLyoqCisgICAgKiBTdXNwZW5kIHRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wg
YmxvY2sKKyAgICAqIHRvIHJ1bi4gIElmIG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5k
ZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVubmFibGUuCisgICAgKi8KKyAgICBmdW5jIHdhaXRD
dXJyZW50KCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIHNlbGYuY3VycmVudFRhc2shLndhaXQo
KQorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50VGFzaworICAgIH0KKworICAgIC8qKgorICAg
ICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVz
ZWQgYnkgdGhlIHRhc2sKKyAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtl
IHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJlbnRseQorICAgICogc3VzcGVuZGVkLgor
ICAgICovCisgICAgZnVuYyBxdWV1ZShwYWNrZXQ6IERldmljZVBhY2tldCkgLT4gVGFzaz8KKyAg
ICB7CisgICAgICAgIGxldCB0YXNrIDogRGV2aWNlVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsg
JDAuZGV2aWNlID09IHBhY2tldC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0
YXNrOiB0YXNrLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIHF1ZXVlKHBhY2tl
dDogV29ya1BhY2tldCkgLT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogV29ya2Vy
VGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgXyBpbiB0cnVlIH0pCisgICAgICAgIHJldHVybiBx
dWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgZnVuYyBo
YW5kbGUocGFja2V0OiBXb3JrUGFja2V0KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgbGV0IHRh
c2sgOiBIYW5kbGVyVGFzaz8gPSBzZWxmLmZpbmQod2hlcmU6IHsgJDAuZGV2aWNlID09IHBhY2tl
dC5kZXZpY2UgfSkKKyAgICAgICAgcmV0dXJuIHF1ZXVlSW1wbCh0YXNrOiB0YXNrLCBwYWNrZXQ6
IHBhY2tldCkKKyAgICB9CisKKyAgICBmdW5jIGhhbmRsZShwYWNrZXQ6IERldmljZVBhY2tldCkg
LT4gVGFzaz8KKyAgICB7CisgICAgICAgIGxldCB0YXNrIDogSGFuZGxlclRhc2s/ID0gc2VsZi5m
aW5kKHdoZXJlOiB7ICQwLmRldmljZSA9PSBwYWNrZXQuZGV2aWNlIH0pCisgICAgICAgIHJldHVy
biBxdWV1ZUltcGwodGFzazogdGFzaywgcGFja2V0OiBwYWNrZXQpCisgICAgfQorCisgICAgcHJp
dmF0ZSBmdW5jIHF1ZXVlSW1wbCh0YXNrOiBUYXNrPywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2s/
CisgICAgeworICAgICAgICBndWFyZCB0YXNrICE9IG5pbCBlbHNlIHsgcmV0dXJuIG5pbCB9Cisg
ICAgICAgIHNlbGYucXVldWVDb3VudCArPSAxCisgICAgICAgIHBhY2tldC5saW5rID0gbmlsCisg
ICAgICAgIHJldHVybiB0YXNrIS5jaGVja1ByaW9yaXR5QWRkKHRhc2s6IHNlbGYuY3VycmVudFRh
c2shLCBwYWNrZXQ6IHBhY2tldCkKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1bmMgZmluZDxUOiBU
YXNrPih3aGVyZSBjb25kaXRpb246IChUKSAtPiBCb29sKSAtPiBUPworICAgIHsKKyAgICAgICAg
dmFyIHRhc2sgPSBzZWxmLmxpc3QKKyAgICAgICAgd2hpbGUgdGFzayAhPSBuaWwgeworICAgICAg
ICAgICAgaWYgbGV0IHQgPSB0YXNrIGFzPyBUIHsKKyAgICAgICAgICAgICAgICBpZiBjb25kaXRp
b24odCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhc2sgPSB0YXNrIS5uZXh0CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5pbAorICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Rhc2suc3dpZnQgYi9QZXJm
b3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3
aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjNzJiNzlkZjUzMWU1ODc0NzU0NzEyZWNhMzBjY2UxNzJlZGY4YWUK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dp
ZnQvUmljaGFyZHNTd2lmdC9UYXNrLnN3aWZ0CkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CitlbnVtIFByaW9yaXR5IDogSW50IHsKKyAgICBjYXNlIElkbGUgPSAwCisgICAgY2FzZSBXb3Jr
ZXIgPSAxMDAwCisgICAgY2FzZSBIYW5kbGVyQSA9IDIwMDAKKyAgICBjYXNlIEhhbmRsZXJCID0g
MzAwMAorICAgIGNhc2UgRGV2aWNlQSA9IDQwMDAKKyAgICBjYXNlIERldmljZUIgPSA1MDAwCisK
KyAgICBzdGF0aWMgZnVuYyA+KGxoczpTZWxmLCByaHM6U2VsZikgLT4gQm9vbCAKKyAgICB7Cisg
ICAgICAgIHJldHVybiBsaHMucmF3VmFsdWUgPiByaHMucmF3VmFsdWUKKyAgICB9Cit9CisKK2Ns
YXNzIFRhc2sgeworICAgIGxldCBzY2hlZHVsZXIgOiBTY2hlZHVsZXIKKyAgICBsZXQgcHJpb3Jp
dHkgOiBQcmlvcml0eQorICAgIHZhciBuZXh0IDogVGFzaz8gPSBuaWwKKyAgICBwcml2YXRlKHNl
dCkgdmFyIHF1ZXVlIDogUGFja2V0PworICAgIHByaXZhdGUoc2V0KSB2YXIgc3RhdGUgOiBTdGF0
ZSA9IC53YWl0aW5nCisKKyAgICBzdHJ1Y3QgU3RhdGUgOiBPcHRpb25TZXQgeworICAgICAgICBs
ZXQgcmF3VmFsdWU6IEludAorCisgICAgICAgIHN0YXRpYyBsZXQgcnVuIDogU3RhdGUgPSBbXQor
ICAgICAgICBzdGF0aWMgbGV0IGhhc1BhY2tldCA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDApCisg
ICAgICAgIHN0YXRpYyBsZXQgd2FpdGluZyA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDEpCisgICAg
ICAgIHN0YXRpYyBsZXQgaGVsZCA9IFN0YXRlKHJhd1ZhbHVlOiAxIDw8IDIpCisKKyAgICAgICAg
c3RhdGljIGxldCBydW5XaXRoUGFja2V0ID0gaGFzUGFja2V0LnVuaW9uKHJ1bikKKyAgICAgICAg
c3RhdGljIGxldCB3YWl0aW5nV2l0aFBhY2tldCA9IGhhc1BhY2tldC51bmlvbih3YWl0aW5nKQor
CisgICAgICAgIGluaXQocmF3VmFsdWU6IEludCkKKyAgICAgICAgeworICAgICAgICAgICAgc2Vs
Zi5yYXdWYWx1ZSA9IHJhd1ZhbHVlCisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jIHJ1bihw
YWNrZXQ6IFBhY2tldD8pIC0+IFRhc2s/CisgICAgeworICAgICAgICBwcmVjb25kaXRpb25GYWls
dXJlKCJUaGlzIG1ldGhvZCBtdXN0IGJlIG92ZXJyaWRkZW4iKSAKKyAgICB9CisKKyAgICBmdW5j
IHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgc2VsZi5zdGF0ZS5yZW1vdmUoLmhlbGQpCisgICAg
fQorCisgICAgZnVuYyBob2xkKCkKKyAgICB7CisgICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5o
ZWxkKQorICAgIH0KKworICAgIGZ1bmMgd2FpdCgpCisgICAgeworICAgICAgICBzZWxmLnN0YXRl
Lmluc2VydCgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHJlc3VtZSgpCisgICAgeworICAg
ICAgICBzZWxmLnN0YXRlLnJlbW92ZSgud2FpdGluZykKKyAgICB9CisKKyAgICBmdW5jIHRha2VQ
YWNrZXQoKSAtPiBQYWNrZXQKKyAgICB7CisgICAgICAgIGxldCBwYWNrZXQgPSBzZWxmLnF1ZXVl
IQorICAgICAgICBzZWxmLnF1ZXVlID0gcGFja2V0LmxpbmsKKyAgICAgICAgaWYgc2VsZi5xdWV1
ZSA9PSBuaWwgeworICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IC5ydW4KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAucnVuV2l0aFBhY2tldAorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBwYWNrZXQKKyAgICB9CisKKyAgICBmdW5jIGNoZWNrUHJpb3JpdHlBZGQo
dGFzazogVGFzaywgcGFja2V0OiBQYWNrZXQpIC0+IFRhc2sKKyAgICB7CisgICAgICAgIGlmIHNl
bGYucXVldWUgPT0gbmlsIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUgPSBwYWNrZXQKKyAgICAg
ICAgICAgIHNlbGYuc3RhdGUuaW5zZXJ0KC5oYXNQYWNrZXQpCisgICAgICAgICAgICBpZiBzZWxm
LnByaW9yaXR5ID4gdGFzay5wcmlvcml0eSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYucXVldWUg
PSBwYWNrZXQuYWRkVG8ocXVldWU6IHNlbGYucXVldWUpCisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRhc2sKKyAgICB9CisKKyAgICBpbml0KHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0
eTogUHJpb3JpdHksIHF1ZXVlOiBQYWNrZXQ/ID0gbmlsKQorICAgIHsKKyAgICAgICAgc2VsZi5z
Y2hlZHVsZXIgPSBzY2hlZHVsZXIKKyAgICAgICAgc2VsZi5wcmlvcml0eSA9IHByaW9yaXR5Cisg
ICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQorICAgICAgICBpZiBxdWV1ZSAhPSBuaWwgeworICAg
ICAgICAgICAgc2VsZi5zdGF0ZS5pbnNlcnQoLmhhc1BhY2tldCkKKyAgICAgICAgfQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9S
aWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNo
L1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRhNTFhMWJhNTVjNmE2NTg3ODE5YTQ4Y2JjZDgxZjRmY2Q4NDQxNzgKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lm
dC9Xb3JrZXJUYXNrLnN3aWZ0CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK2NsYXNzIFdv
cmtlclRhc2sgOiBUYXNrIHsKKyAgICBwcml2YXRlIHZhciBkZXZpY2UgOiBEZXZpY2UgPSAuQQor
ICAgIHByaXZhdGUgdmFyIGxldHRlckluZGV4IDogSW50ID0gMAorCisgICAgc3RhdGljIGZ1bmMg
Y3JlYXRlKHNjaGVkdWxlcjogU2NoZWR1bGVyLCBwcmlvcml0eTogUHJpb3JpdHksIHF1ZXVlOiBQ
YWNrZXQpCisgICAgeworICAgICAgICBsZXQgdGFzayA9IFdvcmtlclRhc2soc2NoZWR1bGVyOiBz
Y2hlZHVsZXIsIHByaW9yaXR5OiBwcmlvcml0eSwgcXVldWU6IHF1ZXVlKQorICAgICAgICBzY2hl
ZHVsZXIuYWRkKHRhc2s6IHRhc2spCisgICAgfQorCisgICAgb3ZlcnJpZGUgZnVuYyBydW4ocGFj
a2V0OiBQYWNrZXQ/KSAtPiBUYXNrPworICAgIHsKKyAgICAgICAgaWYgcGFja2V0ID09IG5pbCB7
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY2hlZHVsZXIud2FpdEN1cnJlbnQoKQorICAgICAg
ICB9CisKKyAgICAgICAgc2VsZi5kZXZpY2UgPSBzZWxmLmRldmljZSA9PSAuQSA/IC5CIDogLkEK
KworICAgICAgICBsZXQgd29yayA9IHBhY2tldCBhcyEgV29ya1BhY2tldAorICAgICAgICB3b3Jr
LmRldmljZSA9IHNlbGYuZGV2aWNlCisgICAgICAgIHdvcmsucHJvY2Vzc2VkID0gMAorICAgICAg
ICBmb3IgaSBpbiAwLi4uKFdvcmtQYWNrZXQuU0laRSAtIDEpIHsKKyAgICAgICAgICAgIHNlbGYu
bGV0dGVySW5kZXggKz0gMQorICAgICAgICAgICAgaWYgc2VsZi5sZXR0ZXJJbmRleCA+IDI2IHsK
KyAgICAgICAgICAgICAgICBzZWxmLmxldHRlckluZGV4ID0gMQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgd29yay5kYXRhW2ldID0gc2VsZi5sZXR0ZXJJbmRleAorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBzZWxmLnNjaGVkdWxlci5oYW5kbGUocGFja2V0OiB3b3JrKQorICAgIH0KKwor
ICAgIHByaXZhdGUgaW5pdChzY2hlZHVsZXI6IFNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5
LCBxdWV1ZTogUGFja2V0KQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdChzY2hlZHVsZXI6IHNj
aGVkdWxlciwgcHJpb3JpdHk6IHByaW9yaXR5LCBxdWV1ZTogcXVldWUpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvbWFpbi5zd2lmdCBiL1BlcmZvcm1hbmNlVGVzdHMvQVBJQmVuY2gvUmljaGFyZHNTd2lm
dC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU3NTgxNTg0MDg3OGE3YWZm
NmNiNWMwNGZhY2Y2NmI3OTgwMTJkMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L21haW4uc3dpZnQKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IFF1YXJ0ekNvcmUKKworbGV0IGl0ZXJhdGlv
bnMgPSA1MAorbGV0IHN0YXJ0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCkKK2ZvciBfIGluIDEuLi5p
dGVyYXRpb25zIHsKKyAgICBydW5SaWNoYXJkcygpCit9CitsZXQgZW5kID0gQ0FDdXJyZW50TWVk
aWFUaW1lKCkKK3ByaW50KEludCgoZW5kLXN0YXJ0KSAqIDEwMDApKQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9BUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFy
ZHMuc3dpZnQgYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFy
ZHNTd2lmdC9yaWNoYXJkcy5zd2lmdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDAzNWE5MWNjYjdmZmE2ZTlkZjky
N2UzODZiYjA1MWI1YjVjNjQyCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvcmljaGFyZHMuc3dpZnQKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworaW1wb3J0IERhcndpbgorCitsZXQgRVhQRUNURURfUVVF
VUVfQ09VTlQgPSAyMzIyOworbGV0IEVYUEVDVEVEX0hPTERfQ09VTlQgPSA5Mjg7CisKK2Z1bmMg
cnVuUmljaGFyZHMoKQoreworICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyKCkKKworICBJZGxl
VGFzay5jcmVhdGUoc2NoZWR1bGVyOiBzY2hlZHVsZXIsIHByaW9yaXR5OiAuSWRsZSkKKworICAo
eworICAgICAgdmFyIHF1ZXVlID0gV29ya1BhY2tldChsaW5rOiBuaWwpCisgICAgICBxdWV1ZSA9
IFdvcmtQYWNrZXQobGluazogcXVldWUpCisgICAgICBXb3JrZXJUYXNrLmNyZWF0ZShzY2hlZHVs
ZXI6IHNjaGVkdWxlciwgcHJpb3JpdHk6IFByaW9yaXR5LldvcmtlciwgcXVldWU6IHF1ZXVlKQor
ICB9KSgpCisKKyAgKHsKKyAgICAgIHZhciBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5B
LCBsaW5rOiBuaWwpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5BLCBsaW5r
OiBxdWV1ZSkKKyAgICAgIHF1ZXVlID0gRGV2aWNlUGFja2V0KGRldmljZTogLkEsIGxpbms6IHF1
ZXVlKQorICAgICAgSGFuZGxlclRhc2suY3JlYXRlKHNjaGVkdWxlcjogc2NoZWR1bGVyLCBkZXZp
Y2U6IC5BLCBwcmlvcml0eTogUHJpb3JpdHkuSGFuZGxlckEsIHF1ZXVlOiBxdWV1ZSkKKyAgfSko
KQorCisgICh7CisgICAgICB2YXIgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGlu
azogbmlsKQorICAgICAgcXVldWUgPSBEZXZpY2VQYWNrZXQoZGV2aWNlOiAuQiwgbGluazogcXVl
dWUpCisgICAgICBxdWV1ZSA9IERldmljZVBhY2tldChkZXZpY2U6IC5CLCBsaW5rOiBxdWV1ZSkK
KyAgICAgIEhhbmRsZXJUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAu
QiwgcHJpb3JpdHk6IFByaW9yaXR5LkhhbmRsZXJCLCBxdWV1ZTogcXVldWUpCisgIH0pKCkKKwor
ICBEZXZpY2VUYXNrLmNyZWF0ZShzY2hlZHVsZXI6IHNjaGVkdWxlciwgZGV2aWNlOiAuQSwgcHJp
b3JpdHk6IFByaW9yaXR5LkRldmljZUEpCisgIERldmljZVRhc2suY3JlYXRlKHNjaGVkdWxlcjog
c2NoZWR1bGVyLCBkZXZpY2U6IC5CLCBwcmlvcml0eTogUHJpb3JpdHkuRGV2aWNlQikKKworICBz
Y2hlZHVsZXIuc2NoZWR1bGUoKQorCisgIGlmIHNjaGVkdWxlci5xdWV1ZUNvdW50ICE9IEVYUEVD
VEVEX1FVRVVFX0NPVU5UIHx8IHNjaGVkdWxlci5ob2xkQ291bnQgIT0gRVhQRUNURURfSE9MRF9D
T1VOVCB7CisgICAgcHJpbnQoIkVycm9yIGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSBc
KHNjaGVkdWxlci5xdWV1ZUNvdW50KSwgaG9sZENvdW50ID0gXChzY2hlZHVsZXIuaG9sZENvdW50
KS4iKQorICAgIGV4aXQoMSkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
UElCZW5jaC9hcGktYmVuY2ggYi9QZXJmb3JtYW5jZVRlc3RzL0FQSUJlbmNoL2FwaS1iZW5jaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYTU2OGRlODNmM2JhYmExYTc1N2RmMWZhY2IyYjc0NzRhODgwNzNhCi0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9hcGktYmVuY2gKQEAgLTAs
MCArMSwyNjMgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisj
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCitzZXQgLWVvIHBpcGVmYWlsCisKK0FQSV9CRU5DSF9FWEVDVVRBQkxFPSQoYmFz
ZW5hbWUgIiQwIikKKworcHVzaGQgIiQoZGlybmFtZSAiJDAiKSIgJj4gL2Rldi9udWxsCitBUElf
QkVOQ0hfRElSPSRQV0QKK3BvcGQgJj4gL2Rldi9udWxsCisKK0JFTkNITUFSS1M9KCkKK0JVSUxE
X0RJUkVDVE9SSUVTPSgpCitSSUNIQVJEU19KUz0tMQorUklDSEFSRFNfU1dJRlQ9LTEKKworc2hv
dWxkQnVpbGQ9dHJ1ZQordmVyYm9zZT1mYWxzZQoraXRlcmF0aW9ucz01CisKK2xvZygpIHsKKyAg
ICBpZiBbICIkdmVyYm9zZSIgPT0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIGVjaG8gIiQqIgorICAg
IGZpCit9CisKK3ByaW50VXNhZ2UoKSB7CisgICAgY2F0IDw8RU9GCit1c2FnZTogJEFQSV9CRU5D
SF9FWEVDVVRBQkxFIFstaHwtLWhlbHBdIFstLW5vLWJ1aWxkXSBbLS12ZXJib3NlXSBbLS1pdGVy
YXRpb25zIDxuPSRpdGVyYXRpb25zPl0gPGJ1aWxkX2RpcmVjdG9yeTE+IFs8YnVpbGRfZGlyZWN0
b3J5Mj4gLi4uXQorRU9GCisgICAgZXhpdCAwCit9CisKK2NvbGxlY3RGbGFncygpIHsKKyAgICB3
aGlsZSBbICQjIC1ndCAwIF07IGRvCisgICAgICAgIGNhc2UgIiQxIiBpbgorICAgICAgICAgICAg
LWh8LS1oZWxwKQorICAgICAgICAgICAgICAgIHByaW50VXNhZ2UKKyAgICAgICAgICAgICAgICA7
OworICAgICAgICAgICAgLS1uby1idWlsZCkKKyAgICAgICAgICAgICAgICBzaG91bGRCdWlsZD1m
YWxzZQorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAtLXZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgdmVyYm9zZT10cnVlCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIC0t
aXRlcmF0aW9ucykKKyAgICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICAgIGl0ZXJh
dGlvbnM9JDEKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAg
ICAgICBCVUlMRF9ESVJFQ1RPUklFUz0oIiRAIikKKyAgICAgICAgICAgICAgICBicmVhayAyCisg
ICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBzaGlmdAorICBkb25lCisK
KyAgaWYgWyAkeyNCVUlMRF9ESVJFQ1RPUklFU1tAXX0gLWx0IDEgXTsgdGhlbgorICAgICAgcHJp
bnRVc2FnZQorICAgICAgZXhpdCAxCisgIGZpCisKKyAgZm9yIGkgaW4gIiR7IUJVSUxEX0RJUkVD
VE9SSUVTW0BdfSI7IGRvCisgICAgICBsb2NhbCBidWlsZERpcmVjdG9yeQorICAgICAgYnVpbGRE
aXJlY3Rvcnk9JHtCVUlMRF9ESVJFQ1RPUklFU1skaV19CisKKyAgICAgIGlmICEgWyAtZCAiJGJ1
aWxkRGlyZWN0b3J5IiBdOyB0aGVuCisgICAgICAgICAgZWNobyAiTm8gc3VjaCBmaWxlIG9yIGRp
cmVjdG9yeTogJGJ1aWxkRGlyZWN0b3J5IgorICAgICAgICAgIGV4aXQgMQorICAgICAgZmkKKwor
ICAgICAgcHVzaGQgIiRidWlsZERpcmVjdG9yeSIgJj4gL2Rldi9udWxsCisgICAgICBCVUlMRF9E
SVJFQ1RPUklFU1skaV09JFBXRAorICAgICAgcG9wZCAmPiAvZGV2L251bGwKKyAgZG9uZQorfQor
Citjb2xsZWN0QmVuY2htYXJrcygpIHsKKyAgICBsb2NhbCBiZW5jaG1hcmtEaXJzCisgICAgYmVu
Y2htYXJrRGlycz0oIiRBUElfQkVOQ0hfRElSIi8qLykKKyAgICBmb3IgYmVuY2htYXJrSUQgaW4g
IiR7IWJlbmNobWFya0RpcnNbQF19IjsgZG8KKyAgICAgICAgbG9jYWwgYmVuY2htYXJrCisgICAg
ICAgIGJlbmNobWFyaz0ke2JlbmNobWFya0RpcnNbJGJlbmNobWFya0lEXX0KKyAgICAgICAgcHVz
aGQgIiRiZW5jaG1hcmsiICY+IC9kZXYvbnVsbAorICAgICAgICBCRU5DSE1BUktTWyRiZW5jaG1h
cmtJRF09JFBXRAorICAgICAgICBjYXNlICIkKGJhc2VuYW1lICIkUFdEIikiIGluCisgICAgICAg
ICAgICBSaWNoYXJkc0pTKQorICAgICAgICAgICAgICAgIFJJQ0hBUkRTX0pTPSRiZW5jaG1hcmtJ
RAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBSaWNoYXJkc1N3aWZ0KQorICAgICAg
ICAgICAgICAgIFJJQ0hBUkRTX1NXSUZUPSRiZW5jaG1hcmtJRAorICAgICAgICAgICAgICAgIDs7
CisgICAgICAgIGVzYWMKKyAgICAgICAgcG9wZCAmPiAvZGV2L251bGwKKyAgICBkb25lCit9CisK
K2ZvckVhY2hCZW5jaG1hcmsoKSB7CisgICAgbG9jYWwgZnVuY3RvcgorICAgIGZ1bmN0b3I9IiQx
IgorICAgIGRlY2xhcmUgIiRmdW5jdG9yIgorICAgIGZvciBiZW5jaG1hcmtJRCBpbiAiJHshQkVO
Q0hNQVJLU1tAXX0iOyBkbworICAgICAgICBsb2NhbCBiZW5jaG1hcmsKKyAgICAgICAgYmVuY2ht
YXJrPSR7QkVOQ0hNQVJLU1skYmVuY2htYXJrSURdfQorICAgICAgICBwdXNoZCAiJGJlbmNobWFy
ayIgJj4gL2Rldi9udWxsCisgICAgICAgIEJFTkNITUFSS19JRD0kYmVuY2htYXJrSUQKKyAgICAg
ICAgQkVOQ0hNQVJLX05BTUU9JChiYXNlbmFtZSAiJGJlbmNobWFyayIpCisgICAgICAgICIkZnVu
Y3RvciIKKyAgICAgICAgcG9wZCAmPiAvZGV2L251bGwKKyAgICBkb25lCit9CisKK2J1aWxkQmVu
Y2htYXJrKCkgeworICAgIHByb2plY3Q9JEJFTkNITUFSS19OQU1FLnhjb2RlcHJvagorCisgICAg
aWYgISBbIC1lICIkcHJvamVjdCIgXTsgdGhlbgorICAgICAgICByZXR1cm4KKyAgICBmaQorCisg
ICAgbG9nICJCdWlsZGluZyAkQkVOQ0hNQVJLX05BTUUuLi4iCisgICAgeGNvZGVidWlsZCAtcHJv
amVjdCAiJHByb2plY3QiIC10YXJnZXQgIiRCRU5DSE1BUktfTkFNRSIgLWNvbmZpZ3VyYXRpb24g
UmVsZWFzZSBidWlsZAorfQorCitidWlsZCgpIHsKKyAgICBmb3JFYWNoQmVuY2htYXJrICJidWls
ZEJlbmNobWFyayIKK30KKworcnVuSlNCZW5jaG1hcmsoKSB7CisgICAgIiREWUxEX0ZSQU1FV09S
S19QQVRIL2pzYyIgIiRCRU5DSE1BUktfTkFNRS5qcyIKK30KKworcnVuTmF0aXZlQmVuY2htYXJr
KCkgeworICAgIHB1c2hkICJidWlsZC9SZWxlYXNlIiAmPiAvZGV2L251bGwKKyAgICAiLi8kQkVO
Q0hNQVJLX05BTUUiCisgICAgcG9wZCAmPiAvZGV2L251bGwKK30KKworcnVuQmVuY2htYXJrSXRl
cmF0aW9uKCkgeworICAgIGlmIFsgLWUgImJ1aWxkIiBdOyB0aGVuCisgICAgICAgIHJ1bk5hdGl2
ZUJlbmNobWFyaworICAgIGVsc2UKKyAgICAgICAgcnVuSlNCZW5jaG1hcmsKKyAgICBmaQorfQor
CitydW5CZW5jaG1hcmsoKSB7CisgICAgbG9nICJSdW5uaW5nICRCRU5DSE1BUktfTkFNRS4uLiIK
KworICAgIGxvY2FsIHJlc3VsdAorICAgIHJlc3VsdD0kKHJ1bkJlbmNobWFya0l0ZXJhdGlvbikK
KyAgICBSRVNVTFRTWyQoKEJFTkNITUFSS19JRCAqIGl0ZXJhdGlvbnMgKyBJVEVSQVRJT04pKV09
JHJlc3VsdAorICAgIGxvZyAiRmluaXNoZWQgaW4gJHtyZXN1bHR9bXMiCit9CisKK2NvbXB1dGVB
dmVyYWdlKCkgeworICAgIGxvY2FsIGJlbmNobWFya0lEIGJlbmNobWFyayBzdW0gYXZnCisgICAg
YmVuY2htYXJrSUQ9JDEKKyAgICBiZW5jaG1hcms9JHtCRU5DSE1BUktTWyRiZW5jaG1hcmtJRF19
CisgICAgc3VtPTAKKyAgICBmb3IgaXRlcmF0aW9uIGluICQoc2VxIDAgMSAkKChpdGVyYXRpb25z
IC0gMSkpKTsgZG8KKyAgICAgICAgbG9jYWwgcmVzdWx0CisgICAgICAgIHJlc3VsdD0ke1JFU1VM
VFNbJCgoYmVuY2htYXJrSUQgKiBpdGVyYXRpb25zICsgaXRlcmF0aW9uKSldfQorICAgICAgICBz
dW09JCgoc3VtICsgcmVzdWx0KSkKKyAgICBkb25lCisgICAgYmMgPDw8ICIkc3VtLjAgLyAkaXRl
cmF0aW9ucy4wIgorfQorCitwcmludEF2ZXJhZ2UoKSB7CisgICAgbG9jYWwgYmVuY2htYXJrSUQg
YmVuY2htYXJrIG5hbWUgYXZnCisgICAgYmVuY2htYXJrSUQ9JDEKKyAgICBhdmc9JDIKKyAgICBi
ZW5jaG1hcms9JHtCRU5DSE1BUktTWyRiZW5jaG1hcmtJRF19CisgICAgbmFtZT0kKGJhc2VuYW1l
ICIkYmVuY2htYXJrIikKKyAgICBlY2hvICIkbmFtZTogJHthdmd9bXMiCit9CisKK3ByaW50QmVu
Y2htYXJrKCkgeworICAgIHByaW50QXZlcmFnZSAiJEAiICIkKGNvbXB1dGVBdmVyYWdlICIkQCIp
IgorfQorCitwcmludFJlc3VsdHMoKSB7CisgICAgbG9jYWwgYnVpbGREaXJlY3RvcnkKKyAgICBi
dWlsZERpcmVjdG9yeT0kMQorCisgICAgZWNobyAiUmVzdWx0cyBmb3IgJGJ1aWxkRGlyZWN0b3J5
ICgkaXRlcmF0aW9ucyBpdGVyYXRpb25zKSIKKyAgICBlY2hvICI9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSIKKworICAgIGVjaG8gIiIKKyAgICBlY2hvICJSZWZlcmVuY2VzOiIKKyAgICBlY2hvICIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgIHByaW50QmVuY2ht
YXJrICIkUklDSEFSRFNfSlMiCisgICAgcHJpbnRCZW5jaG1hcmsgIiRSSUNIQVJEU19TV0lGVCIK
KworICAgIGVjaG8gIiIKKyAgICBlY2hvICJUZXN0czoiCisgICAgZWNobyAiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKworICAgIGxvY2FsIHNjb3JlIGNvdW50Cisg
ICAgc2NvcmU9MQorICAgIGNvdW50PTAKKyAgICBmb3IgYmVuY2htYXJrSUQgaW4gIiR7IUJFTkNI
TUFSS1NbQF19IjsgZG8KKyAgICAgICAgaWYgWyAiJGJlbmNobWFya0lEIiAtZXEgIiRSSUNIQVJE
U19KUyIgXSB8fCBbICIkYmVuY2htYXJrSUQiIC1lcSAiJFJJQ0hBUkRTX1NXSUZUIiBdOyB0aGVu
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmaQorICAgICAgICBhdmc9JChjb21wdXRl
QXZlcmFnZSAiJGJlbmNobWFya0lEIikKKyAgICAgICAgcHJpbnRBdmVyYWdlICIkYmVuY2htYXJr
SUQiICIkYXZnIgorICAgICAgICBjb3VudD0kKChjb3VudCArIDEpKQorICAgICAgICBzY29yZT0k
KChzY29yZSAqIGF2ZykpCisgICAgZG9uZQorICAgIHNjb3JlPSQoZWNobyAiJHNjb3JlIiAiJGNv
dW50IiB8IGF3ayAneyBwcmludCg1MDAwLjAgLyAoJDEuMCBeICgxLjAgLyAkMikpKSB9JykKKwor
ICAgIGVjaG8gIiIKKyAgICBlY2hvICJTY29yZTogJHNjb3JlIgorfQorCitydW4oKSB7CisgICAg
bG9jYWwgYnVpbGREaXJlY3RvcnkKKyAgICBidWlsZERpcmVjdG9yeT0kMQorCisgICAgZXhwb3J0
IERZTERfRlJBTUVXT1JLX1BBVEg9JGJ1aWxkRGlyZWN0b3J5CisgICAgZm9yIGl0ZXJhdGlvbiBp
biAkKHNlcSAwIDEgJCgoaXRlcmF0aW9ucy0xKSkpOyBkbworICAgICAgICBJVEVSQVRJT049JGl0
ZXJhdGlvbgorICAgICAgICBmb3JFYWNoQmVuY2htYXJrICJydW5CZW5jaG1hcmsiCisgICAgZG9u
ZQorCisgICAgcHJpbnRSZXN1bHRzICIkYnVpbGREaXJlY3RvcnkiCit9CisKKworbWFpbigpIHsK
KyAgICBjb2xsZWN0RmxhZ3MgIiRAIgorICAgIGNvbGxlY3RCZW5jaG1hcmtzCisgICAgaWYgWyAi
JHNob3VsZEJ1aWxkIiA9PSB0cnVlIF07IHRoZW4KKyAgICAgICAgYnVpbGQKKyAgICBmaQorCisg
ICAgZm9yIGJ1aWxkRGlyZWN0b3J5IGluICIke0JVSUxEX0RJUkVDVE9SSUVTW0BdfSI7IGRvCisg
ICAgICAgIHJ1biAiJGJ1aWxkRGlyZWN0b3J5IgorICAgIGRvbmUKK30KKworbWFpbiAiJEAiCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRiZGQxZjcwNTlhY2U3OTczYjYxOWY1NzRjMmYzMzAzMzU3NjczNGMu
LmQzZTkwZDgyZmY3NDdiMWIxOTYzODVhMjcwN2FlYTE4ODI4MGQxNDAgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAxIEBACisyMDIwLTA2LTI5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgorCisgICAgICAgIE5ldyBBUEkgYmVuY2htYXJrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBBUElCZW5jaCBpcyBhIG5ldyBiZW5jaG1hcmsg
c3VpdGUgdG8gbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIEphdmFTY3JpcHRDb3JlIEFQ
SS4gSXQgaGFzIDQgYmVuY2htYXJrczoKKyAgICAgICAgLSBSaWNoYXJkc0pTOiBUaGlzIGlzIGlt
cG9ydGVkIGZyb20gT2N0YW5lIGFuZCB1c2VkIGFzIGEgcmVmZXJlbmNlIHNvIHdlIGtub3cgaG93
IGZhc3QgdGhlIHB1cmUgSlMgaW1wbGVtZW50YXRpb24gcnVucy4KKyAgICAgICAgLSBSaWNoYXJk
c1N3aWZ0OiBhIFN3aWZ0IHBvcnQgb2YgdGhlIGJlbmNobWFyaywgYWxzbyB1c2VkIGFzIHJlZmVy
ZW5jZSBmb3IgaG93IGZhc3QgdGhlIHB1cmUgU3dpZnQgaW1wbGVtZW50YXRpb24gaXMuCisgICAg
ICAgIC0gUmljaGFyZHNNb3N0bHlKUzogQXMgdGhlIG5hbWUgc3VnZ2VzdHMsIG1vc3RseSB0aGUg
c2FtZSB0aGUgYXMgdGhlIEpTIGJlbmNobWFyaywgYnV0IGhlcmUgdGhlIFdvcmtlclRhc2sKKyAg
ICAgICAgICBpcyBpbXBsZW1lbnRlZCBpbiBTd2lmdC4gVGhlIEFQSSBpcyB1c2VkIHRvIHdyaXRl
IHRvIHRoZSBwYWNrZXQgYmVpbmcgcHJvY2Vzc2VkIGFuZCB0YWxraW5nIHRvIHRoZSBzY2hlZHVs
ZXIuCisgICAgICAgIC0gUmljaGFyZHNNb3N0bHlTd2lmdDogaW52ZXJzZSBvZiB0aGUgYWJvdmUu
IE1vc3RseSB0aGUgc2FtZSBjb2RlIGZyb20gdGhlIFN3aWZ0IGJlbmNoYXJrLCBidXQgaGVyZSB0
aGUgV29ya2VyVGFzayBpcworICAgICAgICAgIGltcGxlbWVudGVkIGluIEphdmFTY3JpcHQuIFRo
ZSBBUEkgaXMgdXNlZCB0byBydW4gdGhlIEpTIHZlcnNpb24gb2YgdGhlIHRhc2sgYW5kIG1hcnNo
YWxpbmcgdGhlIFBhY2tldCBieSB1c2luZyBKU0V4cG9ydC4KKworICAgICAgICBUaGUgYmVuY2ht
YXJrIGNhbiBiZSBidWlsdCBhbmQgcnVuIHVzaW5nIHRoZSBhcGktYmVuY2ggc2NyaXB0LCBhcyBm
b2xsb3dpbmc6CisKKyAgICAgICAgUGVyZm9ybWFuY2VUZXN0cy9BUElCZW5jaC9hcGktYmVuY2gg
V2ViS2l0QnVpbGQvUmVsZWFzZQorCisgICAgICAgIEJ5IGRlZmF1bHQsIGl0IHdpbGwgYnVpbGQg
ZWFjaCBvZiB0aGUgYmVuY2htYXJrcyBhbmQgcnVuIDUgaXRlcmF0aW9ucy4KKyAgICAgICAgVGhl
IHNjb3JlIGlzIGNhbGN1bGF0ZWQgYXMgNTAwMCAvIGdlb21lYW4oW2F2ZyBvZiBSaWNoYXJkc01v
c3RseVN3aWZ0LCBhdmcgb2YgUmljaGFyZHNNb3N0bHlKU10pLgorICAgICAgICBUaGUgc2NyaXB0
IHByaW50cyB0aGUgYXZlcmFnZSBmb3IgdGhlIHJlZmVyZW5jZXMgYW5kIHRlc3RzIGFuZCB0aGUg
ZmluYWwgc2NvcmU6CisKKyAgICAgICAgUmVzdWx0cyBmb3IgL1ZvbHVtZXMvRGF0YS93azIvT3Bl
blNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNlICg1IGl0ZXJhdGlvbnMpCisgICAgICAgID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgUmVmZXJlbmNlczoKKyAgICAgICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBSaWNoYXJkc0pTOiAx
NG1zCisgICAgICAgIFJpY2hhcmRzU3dpZnQ6IDI5bXMKKworICAgICAgICBUZXN0czoKKyAgICAg
ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBSaWNo
YXJkc01vc3RseUpTOiAyMThtcworICAgICAgICBSaWNoYXJkc01vc3RseVN3aWZ0OiAzMTVtcwor
CisgICAgICAgIFNjb3JlOiAxOS4wODA0CisKKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc0pT
L1JpY2hhcmRzSlMuanM6IEFkZGVkLgorICAgICAgICAocnVuUmljaGFyZHMpOgorICAgICAgICAo
U2NoZWR1bGVyKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkSWRsZVRhc2spOgor
ICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRXb3JrZXJUYXNrKToKKyAgICAgICAgKFNj
aGVkdWxlci5wcm90b3R5cGUuYWRkSGFuZGxlclRhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnBy
b3RvdHlwZS5hZGREZXZpY2VUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRk
UnVubmluZ1Rhc2spOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5hZGRUYXNrKToKKyAg
ICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuc2NoZWR1bGUpOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5yZWxlYXNlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuaG9sZEN1
cnJlbnQpOgorICAgICAgICAoU2NoZWR1bGVyLnByb3RvdHlwZS5zdXNwZW5kQ3VycmVudCk6Cisg
ICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlKToKKyAgICAgICAgKFRhc2tDb250cm9s
QmxvY2spOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuc2V0UnVubmluZyk6
CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5tYXJrQXNOb3RIZWxkKToKKyAg
ICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc0hlbGQpOgorICAgICAgICAo
VGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuaXNIZWxkT3JTdXNwZW5kZWQpOgorICAgICAgICAo
VGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkKToKKyAgICAgICAgKFRh
c2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlKToKKyAgICAgICAgKFRhc2tD
b250cm9sQmxvY2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5jaGVja1ByaW9yaXR5QWRkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2sucHJv
dG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKElkbGVUYXNrKToKKyAgICAgICAgKElkbGVUYXNr
LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoSWRsZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToK
KyAgICAgICAgKERldmljZVRhc2spOgorICAgICAgICAoRGV2aWNlVGFzay5wcm90b3R5cGUucnVu
KToKKyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdv
cmtlclRhc2spOgorICAgICAgICAoV29ya2VyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAg
KFdvcmtlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKEhhbmRsZXJUYXNrKToK
KyAgICAgICAgKEhhbmRsZXJUYXNrLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoSGFuZGxlclRh
c2sucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFBhY2tldCk6CisgICAgICAgIChQYWNr
ZXQucHJvdG90eXBlLmFkZFRvKToKKyAgICAgICAgKFBhY2tldC5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5SlMvUmljaGFyZHNNb3N0bHlKUy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SaWNo
YXJkc01vc3RseUpTL1JpY2hhcmRzTW9zdGx5SlMueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvUmljaGFyZHNNb3N0bHlKUy54Y3NjaGVtZTogQWRkZWQuCisgICAgICAgICogQVBJQmVu
Y2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTL21haW4uc3dpZnQ6IEFkZGVkLgor
ICAgICAgICAocnVuKF86KSk6CisgICAgICAgICh0b1N0cmluZyk6CisgICAgICAgIChXb3JrZXJU
YXNrLnRvU3RyaW5nKToKKyAgICAgICAgKFdvcmtlclRhc2sucnVuKF86KSk6CisgICAgICAgICog
QVBJQmVuY2gvUmljaGFyZHNNb3N0bHlKUy9SaWNoYXJkc01vc3RseUpTL3JpY2hhcmRzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHJ1blJpY2hhcmRzKToKKyAgICAgICAgKFNjaGVkdWxlcik6CisgICAg
ICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZElkbGVUYXNrKToKKyAgICAgICAgKFNjaGVkdWxl
ci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBl
LmFkZEhhbmRsZXJUYXNrKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkRGV2aWNl
VGFzayk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmFkZFJ1bm5pbmdUYXNrKToKKyAg
ICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUuYWRkVGFzayk6CisgICAgICAgIChTY2hlZHVsZXIu
cHJvdG90eXBlLnNjaGVkdWxlKToKKyAgICAgICAgKFNjaGVkdWxlci5wcm90b3R5cGUucmVsZWFz
ZSk6CisgICAgICAgIChTY2hlZHVsZXIucHJvdG90eXBlLmhvbGRDdXJyZW50KToKKyAgICAgICAg
KFNjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQpOgorICAgICAgICAoU2NoZWR1bGVy
LnByb3RvdHlwZS5xdWV1ZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrKToKKyAgICAgICAg
KFRhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLnNldFJ1bm5pbmcpOgorICAgICAgICAoVGFza0Nv
bnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzTm90SGVsZCk6CisgICAgICAgIChUYXNrQ29udHJv
bEJsb2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLmlzSGVsZE9yU3VzcGVuZGVkKToKKyAgICAgICAgKFRhc2tDb250cm9sQmxvY2su
cHJvdG90eXBlLm1hcmtBc1N1c3BlbmRlZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnBy
b3RvdHlwZS5tYXJrQXNSdW5uYWJsZSk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3Rv
dHlwZS5ydW4pOgorICAgICAgICAoVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUuY2hlY2tQcmlv
cml0eUFkZCk6CisgICAgICAgIChUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS50b1N0cmluZyk6
CisgICAgICAgIChJZGxlVGFzayk6CisgICAgICAgIChJZGxlVGFzay5wcm90b3R5cGUucnVuKToK
KyAgICAgICAgKElkbGVUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChEZXZpY2VU
YXNrKToKKyAgICAgICAgKERldmljZVRhc2sucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChEZXZp
Y2VUYXNrLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChIYW5kbGVyVGFzayk6CisgICAg
ICAgIChIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuKToKKyAgICAgICAgKEhhbmRsZXJUYXNrLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChQYWNrZXQpOgorICAgICAgICAoUGFja2V0LnBy
b3RvdHlwZS5hZGRUbyk6CisgICAgICAgIChQYWNrZXQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAg
ICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCisgICAgICAgICogQVBJQmVuY2gvUmlj
aGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0Lnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1JpY2hhcmRzTW9zdGx5U3dpZnQueGNzY2hlbWU6IEFkZGVkLgorICAgICAg
ICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9EZXZp
Y2VUYXNrLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKERldmljZVRhc2suY3JlYXRlKF86ZGV2aWNl
OnByaW9yaXR5OikpOgorICAgICAgICAoRGV2aWNlVGFzay5ydW4oXzopKToKKyAgICAgICAgKiBB
UElCZW5jaC9SaWNoYXJkc01vc3RseVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvSGFuZGxlclRh
c2suc3dpZnQ6IEFkZGVkLgorICAgICAgICAoSGFuZGxlclRhc2suZGV2aWNlKToKKyAgICAgICAg
KEhhbmRsZXJUYXNrLmNyZWF0ZShfOmRldmljZTpwcmlvcml0eTpxdWV1ZTopKToKKyAgICAgICAg
KEhhbmRsZXJUYXNrLnJ1bihfOikpOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9JZGxlVGFzay5zd2lmdDogQWRkZWQuCisgICAgICAg
IChJZGxlVGFzay5jcmVhdGUoXzpwcmlvcml0eTopKToKKyAgICAgICAgKElkbGVUYXNrLnJ1bihf
OikpOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0
bHlTd2lmdC9QYWNrZXQuc3dpZnQ6IEFkZGVkLgorICAgICAgICAoUGFja2V0LmFkZFRvKF86KSk6
CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlTd2lmdC9SaWNoYXJkc01vc3RseVN3
aWZ0L1NjaGVkdWxlci5zd2lmdDogQWRkZWQuCisgICAgICAgICh3YWl0Q3VycmVudCk6CisgICAg
ICAgIChoYW5kbGUoXzopKToKKyAgICAgICAgKFNjaGVkdWxlci5zY2hlZHVsZSk6CisgICAgICAg
IChTY2hlZHVsZXIuYWRkKF86KSk6CisgICAgICAgIChTY2hlZHVsZXIucmVsZWFzZV8oXzopKToK
KyAgICAgICAgKGhvbGRDdXJyZW50KToKKyAgICAgICAgKHF1ZXVlKF86KSk6CisgICAgICAgIChx
dWV1ZUltcGwoXzpwYWNrZXQ6KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNNb3N0bHlT
d2lmdC9SaWNoYXJkc01vc3RseVN3aWZ0L1Rhc2suc3dpZnQ6IEFkZGVkLgorICAgICAgICAoVGFz
ay5ydW4oXzopKToKKyAgICAgICAgKFRhc2sucmVsZWFzZV8pOgorICAgICAgICAoVGFzay5ob2xk
KToKKyAgICAgICAgKFRhc2sud2FpdCk6CisgICAgICAgIChUYXNrLnJlc3VtZSk6CisgICAgICAg
IChUYXNrLnRha2VQYWNrZXQpOgorICAgICAgICAoVGFzay5jaGVja1ByaW9yaXR5QWRkKF86cGFj
a2V0OikpOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNN
b3N0bHlTd2lmdC9Xb3JrZXJUYXNrLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKFdvcmtlclRhc2su
Y3JlYXRlKF86cHJpb3JpdHk6cXVldWU6KSk6CisgICAgICAgIChXb3JrZXJUYXNrLnJ1bihfOikp
OgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5U3dpZnQvUmljaGFyZHNNb3N0bHlT
d2lmdC9tYWluLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc01vc3Rs
eVN3aWZ0L1JpY2hhcmRzTW9zdGx5U3dpZnQvcmljaGFyZHMuanM6IEFkZGVkLgorICAgICAgICAo
cmV0dXJuLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzTW9zdGx5
U3dpZnQvUmljaGFyZHNNb3N0bHlTd2lmdC9yaWNoYXJkcy5zd2lmdDogQWRkZWQuCisgICAgICAg
IChydW5SaWNoYXJkcyk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJk
c1N3aWZ0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIEFQSUJl
bmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9SaWNoYXJkc1N3aWZ0Lnhjc2NoZW1lOiBBZGRlZC4KKyAgICAgICAgKiBBUElCZW5j
aC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvRGV2aWNlVGFzay5zd2lmdDogQWRkZWQuCisg
ICAgICAgIChEZXZpY2VUYXNrLmNyZWF0ZShfOmRldmljZTpwcmlvcml0eTopKToKKyAgICAgICAg
KERldmljZVRhc2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9S
aWNoYXJkc1N3aWZ0L0hhbmRsZXJUYXNrLnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKEhhbmRsZXJU
YXNrLmRldmljZSk6CisgICAgICAgIChIYW5kbGVyVGFzay5jcmVhdGUoXzpkZXZpY2U6cHJpb3Jp
dHk6cXVldWU6KSk6CisgICAgICAgIChIYW5kbGVyVGFzay5ydW4oXzopKToKKyAgICAgICAgKiBB
UElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRzU3dpZnQvSWRsZVRhc2suc3dpZnQ6IEFkZGVk
LgorICAgICAgICAoSWRsZVRhc2suY3JlYXRlKF86cHJpb3JpdHk6KSk6CisgICAgICAgIChJZGxl
VGFzay5ydW4oXzopKToKKyAgICAgICAgKiBBUElCZW5jaC9SaWNoYXJkc1N3aWZ0L1JpY2hhcmRz
U3dpZnQvUGFja2V0LnN3aWZ0OiBBZGRlZC4KKyAgICAgICAgKFBhY2tldC5hZGRUbyhfOikpOgor
ICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRzU3dpZnQvUmljaGFyZHNTd2lmdC9TY2hlZHVsZXIu
c3dpZnQ6IEFkZGVkLgorICAgICAgICAoU2NoZWR1bGVyLnNjaGVkdWxlKToKKyAgICAgICAgKFNj
aGVkdWxlci5hZGQoXzopKToKKyAgICAgICAgKFNjaGVkdWxlci5yZWxlYXNlKF86KSk6CisgICAg
ICAgIChob2xkQ3VycmVudCk6CisgICAgICAgICh3YWl0Q3VycmVudCk6CisgICAgICAgIChxdWV1
ZShfOikpOgorICAgICAgICAoaGFuZGxlKF86KSk6CisgICAgICAgIChxdWV1ZUltcGwoXzpwYWNr
ZXQ6KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1Rh
c2suc3dpZnQ6IEFkZGVkLgorICAgICAgICAoVGFzay5ydW4oXzopKToKKyAgICAgICAgKFRhc2su
cmVsZWFzZSk6CisgICAgICAgIChUYXNrLmhvbGQpOgorICAgICAgICAoVGFzay53YWl0KToKKyAg
ICAgICAgKFRhc2sucmVzdW1lKToKKyAgICAgICAgKFRhc2sudGFrZVBhY2tldCk6CisgICAgICAg
IChUYXNrLmNoZWNrUHJpb3JpdHlBZGQoXzpwYWNrZXQ6KSk6CisgICAgICAgICogQVBJQmVuY2gv
UmljaGFyZHNTd2lmdC9SaWNoYXJkc1N3aWZ0L1dvcmtlclRhc2suc3dpZnQ6IEFkZGVkLgorICAg
ICAgICAoV29ya2VyVGFzay5jcmVhdGUoXzpwcmlvcml0eTpxdWV1ZTopKToKKyAgICAgICAgKFdv
cmtlclRhc2sucnVuKF86KSk6CisgICAgICAgICogQVBJQmVuY2gvUmljaGFyZHNTd2lmdC9SaWNo
YXJkc1N3aWZ0L21haW4uc3dpZnQ6IEFkZGVkLgorICAgICAgICAqIEFQSUJlbmNoL1JpY2hhcmRz
U3dpZnQvUmljaGFyZHNTd2lmdC9yaWNoYXJkcy5zd2lmdDogQWRkZWQuCisgICAgICAgIChydW5S
aWNoYXJkcyk6CisgICAgICAgICogQVBJQmVuY2gvYXBpLWJlbmNoOiBBZGRlZC4KKwogMjAyMC0w
NS0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtD
TWFrZV0gVXNlIFdFQktJVF9FWEVDVVRBQkxFIGluIE1hbGxvY0JlbmNoCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>