<?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>136895</bug_id>
          
          <creation_ts>2014-09-17 13:56:21 -0700</creation_ts>
          <short_desc>[iOS] run-webkit-tests should support minor versions under devices and create a testing device under the right runtime</short_desc>
          <delta_ts>2014-09-24 16:28:18 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Farler">dfarler</reporter>
          <assigned_to name="David Farler">dfarler</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035762</commentid>
    <comment_count>0</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-17 13:56:21 -0700</bug_when>
    <thetext>When trying to match up with the desired testing device, there can be more than one match by name under the == Devices == if more than one simulator SDK is installed inside an Xcode.app bundle, which is more common for external developers.

Use the simctl wrappers to match up device type, runtime (SDK version), and a created device’s UDID (UUID).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036802</commentid>
    <comment_count>1</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-23 13:00:10 -0700</bug_when>
    <thetext>*** Bug 136896 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036803</commentid>
    <comment_count>2</comment_count>
      <attachid>238561</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-23 13:02:04 -0700</bug_when>
    <thetext>Created attachment 238561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036812</commentid>
    <comment_count>3</comment_count>
      <attachid>238565</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-23 13:16:06 -0700</bug_when>
    <thetext>Created attachment 238565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036813</commentid>
    <comment_count>4</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-23 13:17:03 -0700</bug_when>
    <thetext>Fixed up some unnecessary magic in DeviceType&apos;s constructor since I added convenience methods and filled in some :types: for some apidocs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037045</commentid>
    <comment_count>5</comment_count>
      <attachid>238565</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-09-24 15:28:38 -0700</bug_when>
    <thetext>Comment on attachment 238565
Patch

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

r=me

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:403
&gt; +            options.device_type = iphone5 if options.architecture == &apos;x86&apos; else iphone5s

Is it &apos;x86&apos; or &apos;i386&apos; for the 32-bit arch?  Do we need to support both?  (We should support both if x86 is also used.)

&gt; Tools/Scripts/webkitpy/xcode/simulator.py:6
&gt; +import logging
&gt; +import os
&gt;  import subprocess
&gt;  import re
&gt; +import itertools
&gt; +import time

Nit: Alphabetize.

&gt; Tools/Scripts/webkitpy/xcode/simulator.py:99
&gt; +        self.available = availability != &apos;unavailable&apos;

Should the sense of this be reversed so that garbage values default to unavailable?

    self.available = availability == &apos;available&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037065</commentid>
    <comment_count>6</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-24 16:09:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 238565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238565&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:403
&gt; &gt; +            options.device_type = iphone5 if options.architecture == &apos;x86&apos; else iphone5s
&gt; 
&gt; Is it &apos;x86&apos; or &apos;i386&apos; for the 32-bit arch?  Do we need to support both?  (We should support both if x86 is also used.)

It looks like x86 and x86_64 are the literals of choice in webkitpy. i386 only occurs a couple of times, when building with Xcode.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/xcode/simulator.py:6
&gt; &gt; +import logging
&gt; &gt; +import os
&gt; &gt;  import subprocess
&gt; &gt;  import re
&gt; &gt; +import itertools
&gt; &gt; +import time
&gt; 
&gt; Nit: Alphabetize.

👍

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/xcode/simulator.py:99
&gt; &gt; +        self.available = availability != &apos;unavailable&apos;
&gt; 
&gt; Should the sense of this be reversed so that garbage values default to unavailable?
&gt; 
&gt;     self.available = availability == &apos;available&apos;

It could in theory get garbage values, although simctl only ever shows the status if it&apos;s unavailable (not a fan of that). I&apos;ll reflect on it before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037074</commentid>
    <comment_count>7</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-24 16:21:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 238565 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238565&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:403
&gt; &gt; &gt; +            options.device_type = iphone5 if options.architecture == &apos;x86&apos; else iphone5s
&gt; &gt; 
&gt; &gt; Is it &apos;x86&apos; or &apos;i386&apos; for the 32-bit arch?  Do we need to support both?  (We should support both if x86 is also used.)
&gt; 
&gt; It looks like x86 and x86_64 are the literals of choice in webkitpy. i386 only occurs a couple of times, when building with Xcode.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/xcode/simulator.py:6
&gt; &gt; &gt; +import logging
&gt; &gt; &gt; +import os
&gt; &gt; &gt;  import subprocess
&gt; &gt; &gt;  import re
&gt; &gt; &gt; +import itertools
&gt; &gt; &gt; +import time
&gt; &gt; 
&gt; &gt; Nit: Alphabetize.
&gt; 
&gt; 👍
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/xcode/simulator.py:99
&gt; &gt; &gt; +        self.available = availability != &apos;unavailable&apos;
&gt; &gt; 
&gt; &gt; Should the sense of this be reversed so that garbage values default to unavailable?
&gt; &gt; 
&gt; &gt;     self.available = availability == &apos;available&apos;
&gt; 
&gt; It could in theory get garbage values, although simctl only ever shows the status if it&apos;s unavailable (not a fan of that). I&apos;ll reflect on it before committing.

I changed the Device and Runtime constructors to take available :: bool and handle the simctl output outside of that at the point of scraping the output. That&apos;s cleaner anyway.

The current assumption is now that the availability regex match should be None (available) or not None (something other than available, probably not available) which reflects the current output. If we hit something where the availability has more than two states, then we can break it out into an enum, although that would surprise me (or would it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037079</commentid>
    <comment_count>8</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-24 16:28:18 -0700</bug_when>
    <thetext>Committed r173937: &lt;http://trac.webkit.org/changeset/173937&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238561</attachid>
            <date>2014-09-23 13:02:04 -0700</date>
            <delta_ts>2014-09-23 13:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136895-20140923130203.patch</filename>
            <type>text/plain</type>
            <size>26531</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWY2MzhkMzY1ZjI2ZmIwNTU0MDg0N2Q3N2RhNGM4Yzk0
YzE3MTdlNS4uOWNjNTFiYjNkMDhkMTE1OTExYTY3NWI5ZDNhZmRkMjA3MDhhOWQwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE0LTA5LTIzICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IG1pbm9yIHZlcnNpb25z
IHVuZGVyIGRldmljZXMgYW5kIGNyZWF0ZSBhIHRlc3RpbmcgZGV2aWNlIHVuZGVyIHRoZSByaWdo
dCBydW50aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgRGV2aWNlLCBEZXZpY2VUeXBlLCBhbmQgUnVudGltZSBkYXRhIGNsYXNzZXMuCisg
ICAgICAgIENyZWF0ZSBTaW11bGF0b3IgY2xhc3MgcmVwcmVzZW50IHNpbWN0bCBvdXRwdXQuCisK
KyAgICAgICAgV2hlcmV2ZXIgcG9zc2libGUsIHVzZSBzdHJ1Y3R1cmVkIGRhdGEgY2xhc3NlcyBh
bnl3aGVyZSBhIHJhdworICAgICAgICBpZGVudGlmaWVyIG9yIFVESUQgc3RyaW5nIHdhcyB1c2Vk
IGZvciBhIGNsZWFuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgYW5kIHRvIGVuY2Fwc3VsYXRl
IHRoZSBpbmhlcmVudCBmcmFnaWxpdHkgb2Ygc2NyYXBpbmcgc2ltY3RsIG91dHB1dC4KKworICAg
ICAgICBDcmVhdGUgYSBzdWl0YWJseSBuYW1lZCB0ZXN0aW5nIGRldmljZSBpZiBvbmUgZG9lc24n
dCBleGlzdC4KKworICAgICAgICBGaW5hbGx5LCBhY2N1cmF0ZWx5IGhhbmRsZSBoYXZpbmcgbXVs
dGlwbGUgc2ltdWxhdG9yIHJ1bnRpbWVzIChTREtzKQorICAgICAgICBpbnN0YWxsZWQgaW4gdGhl
IGFjdGl2ZSBYY29kZS5hcHAgYnVuZGxlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKF9zZXRfdXBfZGVyaXZl
ZF9vcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Ogor
ICAgICAgICAoSU9TU2ltdWxhdG9yRHJpdmVyLmNtZF9saW5lKToKKyAgICAgICAgQ29uc3RydWN0
IERldmljZVR5cGUgYW5kIFJ1bnRpbWUgb2JqZWN0cyBmcm9tIGlkZW50aWZpZXJzIHBhc3NlZCBh
dCB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lLCBzdGlsbCBwcm92aWRpbmcgc2Vuc2libGUgZGVm
YXVsdHMgZm9yIDMyLSBhbmQgNjQtYml0IHRlc3RpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2lvcy5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuX19pbml0X18pOgor
ICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5zZXR1cF90ZXN0X3J1bik6CisgICAgICAgIChJT1NT
aW11bGF0b3JQb3J0KToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQudGVzdGluZ19kZXZpY2Up
OgorICAgICAgICBDYWNoZSB0aGUgdGVzdGluZyBkZXZpY2Ugb25jZSBpdCBpcyBjcmVhdGVkIG9y
IGZvdW5kLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5yZXNldF9wcmVmZXJlbmNlcyk6Cisg
ICAgICAgIEdldCB0aGUgZGV2aWNlIHBhdGggZnJvbSB0aGUgRGV2aWNlIG9iamVjdCBpbnN0ZWFk
IG9mIGNvbnNydWN0aW5nIGl0CisgICAgICAgIGluIHRoZSBwb3J0IGNsYXNzLgorICAgICAgICAo
SU9TU2ltdWxhdG9yUG9ydC5zaW11bGF0b3JfdWRpZCk6IERlbGV0ZWQuCisgICAgICAgIEdldCB0
aGUgVURJRCBmcm9tIHRoZSB0ZXN0aW5nX2RldmljZSA6OiBEZXZpY2Ugb2JqZWN0IGl0c2VsZi4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weToKKyAgICAgICAg
Q3JlYXRlZCBEZXZpY2UsIERldmljZVR5cGUsIFJ1bnRpbWUsIGFuZCBTaW11bGF0b3IgY2xhc3Nl
cy4KKyAgICAgICAgKGdldF9ydW50aW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChnZXRfZGV2aWNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChnZXRfZGV2aWNlX3R5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKGdldF9sYXRlc3RfcnVudGltZSk6IERlbGV0ZWQuCisKIDIwMTQtMDktMTkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFsd2F5cyBhc3N1bWUgaW50ZXJu
YWwgU0RLIHdoZW4gYnVpbGRpbmcgY29uZmlndXJhdGlvbiBQcm9kdWN0aW9uCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQppbmRleCAxMjQ1NDgwZDQ0M2ZmMWFjNGU5YTg4YjkyYmEwN2Q4MTAyNTUzMjFkLi5jMTQzMDU2
YWE4ZTNjNzA4ZjkxNmI0NTAxMDA5NDdlMTk4NjMzNzBkIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTM5
NCwxMCArMzk0LDE1IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBvcHRpb25z
KToKICAgICBpZiBvcHRpb25zLnBsYXRmb3JtID09ICdpb3Mtc2ltdWxhdG9yJzoKICAgICAgICAg
ZnJvbSB3ZWJraXRweSBpbXBvcnQgeGNvZGUKICAgICAgICAgaWYgb3B0aW9ucy5ydW50aW1lIGlz
IE5vbmU6Ci0gICAgICAgICAgICBvcHRpb25zLnJ1bnRpbWUgPSB4Y29kZS5zaW11bGF0b3IuZ2V0
X2xhdGVzdF9ydW50aW1lKClbJ2lkZW50aWZpZXInXQorICAgICAgICAgICAgb3B0aW9ucy5ydW50
aW1lID0geGNvZGUuc2ltdWxhdG9yLlNpbXVsYXRvcigpLmxhdGVzdF9ydW50aW1lCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBvcHRpb25zLnJ1bnRpbWUgPSB4Y29kZS5zaW11bGF0b3IuUnVu
dGltZS5mcm9tX2lkZW50aWZpZXIob3B0aW9ucy5ydW50aW1lKQogICAgICAgICBpZiBvcHRpb25z
LmRldmljZV90eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICBkZXZpY2VfdHlwZXMgPSB4Y29kZS5z
aW11bGF0b3IuZ2V0X2RldmljZV90eXBlcygpCi0gICAgICAgICAgICBvcHRpb25zLmRldmljZV90
eXBlID0gZGV2aWNlX3R5cGVzWydpUGhvbmUgNSddIGlmIG9wdGlvbnMuYXJjaGl0ZWN0dXJlID09
ICd4ODYnIGVsc2UgZGV2aWNlX3R5cGVzWydpUGhvbmUgNXMnXQorICAgICAgICAgICAgaXBob25l
NSA9IHhjb2RlLnNpbXVsYXRvci5EZXZpY2VUeXBlLmZyb21fbmFtZSgnaVBob25lIDUnKQorICAg
ICAgICAgICAgaXBob25lNXMgPSB4Y29kZS5zaW11bGF0b3IuRGV2aWNlVHlwZS5mcm9tX25hbWUo
J2lQaG9uZSA1cycpCisgICAgICAgICAgICBvcHRpb25zLmRldmljZV90eXBlID0gaXBob25lNSBp
ZiBvcHRpb25zLmFyY2hpdGVjdHVyZSA9PSAneDg2JyBlbHNlIGlwaG9uZTVzCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBvcHRpb25zLmRldmljZV90eXBlID0geGNvZGUuc2ltdWxhdG9yLkRl
dmljZVR5cGUuZnJvbV9pZGVudGlmaWVyKG9wdGlvbnMuZGV2aWNlX3R5cGUpCiAKIAogZGVmIHJ1
bihwb3J0LCBvcHRpb25zLCBhcmdzLCBsb2dnaW5nX3N0cmVhbSk6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weQppbmRleCA1N2U2ZjUxZjhiNTRmODgzYmYxNGU1ZGU0ZGQyYjcwODEy
OThkZDg0Li5mMDM4ZjJhNjExOTY1ZDM5YTM2ZTlmMGQ0ZmRiMTk2NjVjMjVhMDgxIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKQEAgLTUxMSw4ICs1MTEsOCBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JEcml2ZXIoRHJpdmVyKToKICAgICAgICAgcnVudGltZSA9IHNlbGYuX3BvcnQu
Z2V0X29wdGlvbigncnVudGltZScpCiAgICAgICAgIGRldmljZV90eXBlID0gc2VsZi5fcG9ydC5n
ZXRfb3B0aW9uKCdkZXZpY2VfdHlwZScpCiAgICAgICAgIHJlbGF5X2FyZ3MgPSBbCi0gICAgICAg
ICAgICAnLXJ1bnRpbWUnLCBydW50aW1lLAotICAgICAgICAgICAgJy1kZXZpY2VUeXBlJywgZGV2
aWNlX3R5cGUsCisgICAgICAgICAgICAnLXJ1bnRpbWUnLCBydW50aW1lLmlkZW50aWZpZXIsCisg
ICAgICAgICAgICAnLWRldmljZVR5cGUnLCBkZXZpY2VfdHlwZS5pZGVudGlmaWVyLAogICAgICAg
ICAgICAgJy1zdWZmaXgnLCBzdHIoc2VsZi5fd29ya2VyX251bWJlciksCiAgICAgICAgICAgICAn
LXByb2R1Y3REaXInLCBwcm9kdWN0X2RpciwKICAgICAgICAgICAgICctYXBwJywgZHVtcF90b29s
LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKaW5kZXggNjYwYjc1N2MyNWNhMDgwNTViYWJm
MTY3NzE2Y2I3OWZiMDI4YTUzMC4uMzcyZmVhNjg3MTJmNmE5ZjNjMjAwNWM2YzQ1MTczYjg0ZjU5
MTIxZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CkBAIC0zNSw2ICszNSw3IEBAIGZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgZHJpdmVyLCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5
LnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LmxlYWtkZXRlY3RvciBp
bXBvcnQgTGVha0RldGVjdG9yCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBw
b3J0X2NvbmZpZworZnJvbSB3ZWJraXRweS54Y29kZSBpbXBvcnQgc2ltdWxhdG9yCiAKIAogX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNjcsNiArNjgsOCBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICBtYWNfY29uZmlnID0gcG9ydF9jb25maWcu
Q29uZmlnKHNlbGYuX2V4ZWN1dGl2ZSwgc2VsZi5fZmlsZXN5c3RlbSwgJ21hYycpCiAgICAgICAg
IHNlbGYuX21hY19idWlsZF9kaXJlY3RvcnkgPSBtYWNfY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShz
ZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkKIAorICAgICAgICBzZWxmLl90ZXN0aW5n
X2RldmljZSA9IE5vbmUKKwogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCdkcml2ZXJfbmFtZScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
Z2V0X29wdGlvbignZHJpdmVyX25hbWUnKQpAQCAtMTU3LDcgKzE2MCw3IEBAIGNsYXNzIElPU1Np
bXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgIHRpbWUuc2xlZXAoMikKICAgICAgICAgc2VsZi5f
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgICdvcGVuJywgJy1hJywgb3MucGF0
aC5qb2luKHNlbGYuZGV2ZWxvcGVyX2RpciwgJ0FwcGxpY2F0aW9ucycsICdpT1MgU2ltdWxhdG9y
LmFwcCcpLAotICAgICAgICAgICAgJy0tYXJncycsICctQ3VycmVudERldmljZVVESUQnLCBzZWxm
LnNpbXVsYXRvcl91ZGlkKCldKQorICAgICAgICAgICAgJy0tYXJncycsICctQ3VycmVudERldmlj
ZVVESUQnLCBzZWxmLnRlc3RpbmdfZGV2aWNlLnVkaWRdKQogCiAgICAgZGVmIGNsZWFuX3VwX3Rl
c3RfcnVuKHNlbGYpOgogICAgICAgICBzdXBlcihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5jbGVh
bl91cF90ZXN0X3J1bigpCkBAIC0yNTIsMjEgKzI1NSwxNSBAQCBjbGFzcyBJT1NTaW11bGF0b3JQ
b3J0KFBvcnQpOgogICAgICAgICAgICAgcmV0dXJuIHN0ZGVyciwgTm9uZQogICAgICAgICByZXR1
cm4gc3RkZXJyLCBjcmFzaF9sb2cKIAotICAgIGRlZiBzaW11bGF0b3JfdWRpZChzZWxmKToKLSAg
ICAgICAgZGV2aWNlX25hbWUgPSBzZWxmLmdldF9vcHRpb24oJ2RldmljZV90eXBlJykuc3BsaXQo
Jy4nKVstMV0ucmVwbGFjZSgnLScsICcgJykgKyAnIFdlYktpdCBUZXN0ZXInCi0gICAgICAgIHN0
ZG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLS1zZGsnLCAnaXBob25l
c2ltdWxhdG9yJywgJ3NpbWN0bCcsICdsaXN0J10pCi0gICAgICAgIGxpbmVzID0gc3Rkb3V0LnNw
bGl0bGluZXMoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZXZpY2VzX2luZGV4ID0gbGlu
ZXMuaW5kZXgoJz09IERldmljZXMgPT0nKQotICAgICAgICAgICAgZGV2aWNlX3JlZ2V4ID0gcmUu
Y29tcGlsZSgnKD9QPGRldmljZV9uYW1lPlteKF0rKSBcKCg/UDx1ZGlkPlteKV0rKVwpIFwoKD9Q
PHN0YXRlPlteKV0rKVwpJykKLSAgICAgICAgICAgIGZvciBkZXZpY2VfbGluZSBpbiBpdGVydG9v
bHMudGFrZXdoaWxlKGxhbWJkYSBsaW5lOiBub3QgbGluZS5zdGFydHN3aXRoKCc9PScpLCBsaW5l
c1tkZXZpY2VzX2luZGV4ICsgMTpdKToKLSAgICAgICAgICAgICAgICBkZXZpY2UgPSBkZXZpY2Vf
cmVnZXgubWF0Y2goZGV2aWNlX2xpbmUubHN0cmlwKCkucnN0cmlwKCkpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IGRldmljZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgICAgICBpZiBkZXZpY2UuZ3JvdXAoJ2RldmljZV9uYW1lJykgPT0gZGV2aWNlX25hbWU6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2UuZ3JvdXAoJ3VkaWQnKQotICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgdGVzdGluZ19kZXZpY2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3Rlc3RpbmdfZGV2aWNl
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlCisK
KyAgICAgICAgZGV2aWNlX3R5cGUgPSBzZWxmLmdldF9vcHRpb24oJ2RldmljZV90eXBlJykKKyAg
ICAgICAgcnVudGltZSA9IHNlbGYuZ2V0X29wdGlvbigncnVudGltZScpCisgICAgICAgIHNlbGYu
X3Rlc3RpbmdfZGV2aWNlID0gc2ltdWxhdG9yLlNpbXVsYXRvcigpLnRlc3RpbmdfZGV2aWNlKGRl
dmljZV90eXBlLCBydW50aW1lKQorICAgICAgICByZXR1cm4gc2VsZi50ZXN0aW5nX2RldmljZQog
CiAgICAgZGVmIHNpbXVsYXRvcl9wYXRoKHNlbGYsIHVkaWQpOgogICAgICAgICBpZiB1ZGlkOgpA
QCAtMzIzLDkgKzMyMCw3IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAg
IHJldHVybiBzZWxmLl9pbWFnZV9kaWZmZXIuZGlmZl9pbWFnZShleHBlY3RlZF9jb250ZW50cywg
YWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2UpCiAKICAgICBkZWYgcmVzZXRfcHJlZmVyZW5jZXMo
c2VsZik6Ci0gICAgICAgIHNpbXVsYXRvcl9wYXRoID0gc2VsZi5zaW11bGF0b3JfcGF0aChzZWxm
LnNpbXVsYXRvcl91ZGlkKCkpCi0gICAgICAgIGlmIG5vdCBzaW11bGF0b3JfcGF0aDoKLSAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBzaW11bGF0b3JfcGF0aCA9IHNlbGYudGVzdGluZ19kZXZp
Y2UucGF0aAogICAgICAgICBkYXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oc2ltdWxhdG9yX3BhdGgs
ICdkYXRhJykKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkYXRhX3BhdGgpOgogICAgICAgICAg
ICAgc2h1dGlsLnJtdHJlZShkYXRhX3BhdGgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUv
c2ltdWxhdG9yLnB5CmluZGV4IDYzZGMzYjM5ZGYxYjI5Y2IzYWFiMjk3NTllNTQwYzdlYTFmZmJh
ZGQuLmYwNDZiN2MzMDI5MDVjMzA1ZGE1ODA4ODZhNzM4NWJiNzZiNTdhN2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5CkBAIC0xLDUgKzEsMTEgQEAKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcmUKK2ltcG9y
dCBpdGVydG9vbHMKK2ltcG9ydCB0aW1lCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogIiIiCiBNaW5pbWFsbHkgd3JhcHMgQ29yZVNpbXVsYXRvciBmdW5jdGlvbmFsaXR5
IHRocm91Z2ggc2ltY3RsLgpAQCAtOSw5NyArMTUsMzkwIEBAIERvIG5vdCB1c2UgUHlPYmpDIHRv
IGRsb3BlbiB0aGUgZnJhbWV3b3JrLgogIiIiCiAKIAotZGVmIGdldF9ydW50aW1lcyhvbmx5X2F2
YWlsYWJsZT1UcnVlKToKK2NsYXNzIERldmljZVR5cGUob2JqZWN0KToKICAgICAiIiIKLSAgICBH
aXZlIGEgZGljdGlvbmFyeSBtYXBwaW5nCi0gICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IG1hcHBp
bmcgaU9TIHZlcnNpb24gc3RyaW5nIHRvIHJ1bnRpbWUgaWRlbnRpZmllci4KLSAgICA6cnR5cGU6
IGRpY3QKKyAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBkZXZpY2UgdHlwZS4KICAgICAi
IiIKLSAgICBydW50aW1lcyA9IHt9Ci0gICAgcnVudGltZV9yZSA9IHJlLmNvbXBpbGUoYidpT1Mg
KD9QPHZlcnNpb24+WzAtOV0rXC5bMC05XSkgXChbMC05XStcLlswLTldKyAtICg/UDx1cGRhdGU+
W14pXSspXCkgXCgoP1A8aWRlbnRpZmllcj5bXildKylcKSggXCgoP1A8dW5hdmFpbGFibGU+W14p
XSspXCkpPycpCi0gICAgc3Rkb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bics
ICctc2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdzaW1jdGwnLCAnbGlzdCcsICdydW50aW1lcydd
KQotICAgIGxpbmVzID0gaXRlcihzdGRvdXQuc3BsaXRsaW5lcygpKQotICAgIGhlYWRlciA9IG5l
eHQobGluZXMpCi0gICAgaWYgaGVhZGVyICE9ICc9PSBSdW50aW1lcyA9PSc6Ci0gICAgICAgIHJl
dHVybiBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGlkZW50aWZpZXI9Tm9uZSk6
CisgICAgICAgICIiIgorICAgICAgICA6cGFyYW0gbmFtZTogVGhlIGRldmljZSB0eXBlJ3MgaHVt
YW4tcmVhZGFibGUgbmFtZQorICAgICAgICA6dHlwZSBuYW1lOiBzdHIKKyAgICAgICAgOnBhcmFt
IGlkZW50aWZpZXI6IFRoZSBDb3JlU2ltdWxhdG9yIGlkZW50aWZpZXIuIElmIE5vbmUsIGl0IG11
c3QgYmUgZm91bmQgd2l0aCBzaW1jdGwgb3IgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgorICAgICAg
ICA6dHlwZSBpZGVudGlmaWVyOiBzdHIKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKKyAgICAgICAgc2VsZi5pZGVudGlmaWVyID0gaWRlbnRpZmllcgorCisgICAgICAgIGlm
IHNlbGYuaWRlbnRpZmllciBpcyBOb25lOgorICAgICAgICAgICAgZm9yIGRldmljZV90eXBlIGlu
IFNpbXVsYXRvcigpLmRldmljZV90eXBlczoKKyAgICAgICAgICAgICAgICBpZiBkZXZpY2VfdHlw
ZS5uYW1lID09IHNlbGYubmFtZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pZGVudGlmaWVy
ID0gZGV2aWNlX3R5cGUuaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisg
ICAgICAgIGlmIHNlbGYuaWRlbnRpZmllciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCdBIGRldmljZSB0eXBlIHdpdGggbmFtZSB7bmFtZX0gZG9lcyBub3QgZXhpc3QuJy5m
b3JtYXQobmFtZT1zZWxmLm5hbWUpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21f
bmFtZShjbHMsIG5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBhcmFtIG5hbWU6IFRoZSBu
YW1lIGZvciB0aGUgZGVzaXJlZCBkZXZpY2UgdHlwZS4KKyAgICAgICAgOnR5cGUgbmFtZTogc3Ry
CisgICAgICAgIDpyZXR1cm5zOiBBIGBEZXZpY2VUeXBlYCBvYmplY3Qgd2l0aCB0aGUgc3BlY2lm
aWVkIGlkZW50aWZpZXIgb3IgdGhyb3dzIGEgVHlwZUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3Qu
CisgICAgICAgIDpydHlwZTogRGV2aWNlVHlwZQorICAgICAgICAiIiIKKyAgICAgICAgaWRlbnRp
ZmllciA9IE5vbmUKKyAgICAgICAgZm9yIGRldmljZV90eXBlIGluIFNpbXVsYXRvcigpLmRldmlj
ZV90eXBlczoKKyAgICAgICAgICAgIGlmIGRldmljZV90eXBlLm5hbWUgPT0gbmFtZToKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gZGV2aWNlX3R5cGUuaWRlbnRpZmllcgorICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgaWRlbnRpZmllciBpcyBOb25lOgorICAgICAgICAg
ICAgcmFpc2UgVHlwZUVycm9yKCdBIGRldmljZSB0eXBlIHdpdGggbmFtZSAie25hbWV9IiBkb2Vz
IG5vdCBleGlzdC4nLmZvcm1hdChuYW1lPW5hbWUpKQorCisgICAgICAgIHJldHVybiBEZXZpY2VU
eXBlKG5hbWUsIGlkZW50aWZpZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9p
ZGVudGlmaWVyKGNscywgaWRlbnRpZmllcik6CisgICAgICAgICIiIgorICAgICAgICA6cGFyYW0g
aWRlbnRpZmllcjogVGhlIENvcmVTaW11bGF0b3IgaWRlbnRpZmllciBmb3IgdGhlIGRlc2lyZWQg
cnVudGltZS4KKyAgICAgICAgOnR5cGUgaWRlbnRpZmllcjogc3RyCisgICAgICAgIDpyZXR1cm5z
OiBBIGBSdW50aW1lYCBvYmplY3Qgd2l0aHQgdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIG9yIHRo
cm93cyBhIFR5cGVFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LgorICAgICAgICA6cnR5cGU6IERl
dmljZVR5cGUKKyAgICAgICAgIiIiCisgICAgICAgIG5hbWUgPSBOb25lCisgICAgICAgIGZvciBk
ZXZpY2VfdHlwZSBpbiBTaW11bGF0b3IoKS5kZXZpY2VfdHlwZXM6CisgICAgICAgICAgICBpZiBk
ZXZpY2VfdHlwZS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgbmFt
ZSA9IGRldmljZV90eXBlLm5hbWUKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlm
IG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQSBkZXZpY2UgdHlw
ZSB3aXRoIGlkZW50aWZpZXIgIntpZGVudGlmaWVyfSIgZG9lcyBub3QgZXhpc3QuJy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVyKSkKKworICAgICAgICByZXR1
cm4gRGV2aWNlVHlwZShuYW1lLCBpZGVudGlmaWVyKQogCi0gICAgZm9yIGxpbmUgaW4gbGluZXM6
Ci0gICAgICAgIHJ1bnRpbWVfbWF0Y2ggPSBydW50aW1lX3JlLm1hdGNoKGxpbmUpCi0gICAgICAg
IGlmIG5vdCBydW50aW1lX21hdGNoOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcnVu
dGltZSA9IHJ1bnRpbWVfbWF0Y2guZ3JvdXBkaWN0KCkKLSAgICAgICAgdmVyc2lvbiA9IHR1cGxl
KFtpbnQoY29tcG9uZW50KSBmb3IgY29tcG9uZW50IGluIHJ1bnRpbWVfbWF0Y2guZ3JvdXAoJ3Zl
cnNpb24nKS5zcGxpdCgnLicpXSkKLSAgICAgICAgcnVudGltZSA9IHsKLSAgICAgICAgICAgICdp
ZGVudGlmaWVyJzogcnVudGltZVsnaWRlbnRpZmllciddLAotICAgICAgICAgICAgJ2F2YWlsYWJs
ZSc6IHJ1bnRpbWVbJ3VuYXZhaWxhYmxlJ10gaXMgTm9uZSwKLSAgICAgICAgICAgICd2ZXJzaW9u
JzogdmVyc2lvbiwKLSAgICAgICAgfQotICAgICAgICBpZiBvbmx5X2F2YWlsYWJsZSBhbmQgbm90
IHJ1bnRpbWVbJ2F2YWlsYWJsZSddOgotICAgICAgICAgICAgY29udGludWUKKyAgICBkZWYgX19l
cV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLm5hbWUgPT0gb3RoZXIubmFt
ZSkgYW5kIChzZWxmLmlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllcikKIAotICAgICAgICBy
dW50aW1lc1t2ZXJzaW9uXSA9IHJ1bnRpbWUKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToK
KyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKIAotICAgIHJldHVybiBydW50
aW1lcworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8RGV2aWNlVHlw
ZSAie25hbWV9Ijoge2lkZW50aWZpZXJ9PicuZm9ybWF0KG5hbWU9c2VsZi5uYW1lLCBpZGVudGlm
aWVyPXNlbGYuaWRlbnRpZmllcikKIAogCi1kZWYgZ2V0X2RldmljZXMoKToKK2NsYXNzIFJ1bnRp
bWUob2JqZWN0KToKICAgICAiIiIKLSAgICA6cmV0dXJuOiBBIGRpY3Rpb25hcnkgbWFwcGluZyBp
T1MgdmVyc2lvbiB0byBkZXZpY2UgaGFyZHdhcmUgbW9kZWwsIHNpbXVsYXRvciBVRElELCBhbmQg
c3RhdGUuCi0gICAgOnJ0eXBlOiBkaWN0CisgICAgUmVwcmVzZW50cyBhIENvcmVTaW11bGF0b3Ig
cnVudGltZSBhc3NvY2lhdGVkIHdpdGggYW4gaU9TIFNESy4KICAgICAiIiIKLSAgICBkZXZpY2Vz
ID0ge30KLSAgICB2ZXJzaW9uX3JlID0gcmUuY29tcGlsZSgnLS0gaU9TICg/UDx2ZXJzaW9uPlsw
LTldK1wuWzAtOV0rKSAtLScpCi0gICAgZGV2aWNlc19yZSA9IHJlLmNvbXBpbGUoJ1xzKig/UDxu
YW1lPlteKF0rIClcKCg/UDx1ZGlkPlteKV0rKVwpIFwoKD9QPHN0YXRlPlteKV0rKVwpJykKLSAg
ICBzdGRvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCAnaXBo
b25lc2ltdWxhdG9yJywgJ3NpbWN0bCcsICdsaXN0JywgJ2RldmljZXMnXSkKLSAgICBsaW5lcyA9
IGl0ZXIoc3Rkb3V0LnNwbGl0bGluZXMoKSkKLSAgICBoZWFkZXIgPSBuZXh0KGxpbmVzKQotICAg
IHZlcnNpb24gPSBOb25lCi0gICAgaWYgaGVhZGVyICE9ICc9PSBEZXZpY2VzID09JzoKLSAgICAg
ICAgcmV0dXJuIE5vbmUKIAotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICB2ZXJzaW9u
X21hdGNoID0gdmVyc2lvbl9yZS5tYXRjaChsaW5lKQotICAgICAgICBpZiB2ZXJzaW9uX21hdGNo
OgotICAgICAgICAgICAgdmVyc2lvbiA9IHR1cGxlKFtpbnQoY29tcG9uZW50KSBmb3IgY29tcG9u
ZW50IGluIHZlcnNpb25fbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKS5zcGxpdCgnLicpXSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGRldmljZV9tYXRjaCA9IGRldmljZXNfcmUubWF0Y2go
bGluZSkKLSAgICAgICAgaWYgbm90IGRldmljZV9tYXRjaDoKLSAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcigpCi0gICAgICAgIGRldmljZSA9IGRldmljZV9tYXRjaC5ncm91cGRpY3QoKQot
ICAgICAgICBkZXZpY2VbJ25hbWUnXSA9IGRldmljZVsnbmFtZSddLnJzdHJpcCgpCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHZlcnNpb24sIGlkZW50aWZpZXIsIGF2YWlsYWJpbGl0eSwgZGV2aWNl
cz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIDpwYXJhbSB2ZXJzaW9uOiBUaGUgaU9TIFNE
SyB2ZXJzaW9uCisgICAgICAgIDp0eXBlIHZlcnNpb246IHR1cGxlCisgICAgICAgIDpwYXJhbSBp
ZGVudGlmaWVyOiBUaGUgQ29yZVNpbXVhbHRvciBydW50aW1lIGlkZW50aWZpZXIKKyAgICAgICAg
OnR5cGUgaWRlbnRpZmllcjogc3RyCisgICAgICAgIDpwYXJhbSBhdmFpbGFiaWxpdHk6IFRoZSBs
YXN0IGtub3duIGF2YWlsYWJpbGl0eSBvZiB0aGUgcnVudGltZS4KKyAgICAgICAgOnR5cGUgYXZh
aWxhYmlsaXR5OiBzdHIKKyAgICAgICAgOnBhcmFtIGRldmljZXM6IEEgbGlzdCBvZiBkZXZpY2Vz
IHVuZGVyIHRoaXMgcnVudGltZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi52ZXJzaW9uID0g
dmVyc2lvbgorICAgICAgICBzZWxmLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyCisgICAgICAgIHNl
bGYuYXZhaWxhYmxlID0gYXZhaWxhYmlsaXR5ICE9ICd1bmF2YWlsYWJsZScKKyAgICAgICAgc2Vs
Zi5kZXZpY2VzID0gZGV2aWNlcyBvciBbXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZy
b21faWRlbnRpZmllcihjbHMsIGlkZW50aWZpZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBh
cmFtIGlkZW50aWZpZXI6IFRoZSBpZGVudGlmaWVyIGZvciB0aGUgZGVzaXJlZCBDb3JlU2ltdWxh
dG9yIHJ1bnRpbWUuCisgICAgICAgIDp0eXBlIGlkZW50aWZpZXI6IHN0cgorICAgICAgICA6cmV0
dXJuczogQSBgUnVudGltZWAgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIG9y
IHRocm93cyBhIFR5cGVFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LgorICAgICAgICA6cnR5cGU6
IFJ1bnRpbWUKKyAgICAgICAgIiIiCisgICAgICAgIHJ1bnRpbWUgPSBOb25lCisgICAgICAgIGZv
ciBydW50aW1lIGluIFNpbXVsYXRvcigpLnJ1bnRpbWVzOgorICAgICAgICAgICAgaWYgcnVudGlt
ZS5pZGVudGlmaWVyID09IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgaWYgcnVudGltZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBIHJ1
bnRpbWUgd2l0aCBpZGVudGlmaWVyICJ7aWRlbnRpZmllcn0iIGRvZXMgbm90IGV4aXN0LicuZm9y
bWF0KGlkZW50aWZpZXI9aWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBydW50aW1lCisKKyAg
ICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLnZlcnNpb24g
PT0gb3RoZXIudmVyc2lvbikgYW5kIChzZWxmLmlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmll
cikKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNl
bGYuX19lcV9fKG90aGVyKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1
cm4gJzxSdW50aW1lIHt2ZXJzaW9ufToge2lkZW50aWZpZXJ9LiBBdmFpbGFibGU6IHthdmFpbGFi
bGV9LCB7bnVtX2RldmljZXN9IGRldmljZXM+Jy5mb3JtYXQoCisgICAgICAgICAgICB2ZXJzaW9u
PScuJy5qb2luKG1hcChzdHIsIHNlbGYudmVyc2lvbikpLAorICAgICAgICAgICAgaWRlbnRpZmll
cj1zZWxmLmlkZW50aWZpZXIsCisgICAgICAgICAgICBhdmFpbGFibGU9c2VsZi5hdmFpbGFibGUs
CisgICAgICAgICAgICBudW1fZGV2aWNlcz1sZW4oc2VsZi5kZXZpY2VzKSkKKworCitjbGFzcyBE
ZXZpY2Uob2JqZWN0KToKKyAgICAiIiIKKyAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBk
ZXZpY2UgdW5kZXJuZWF0aCBhIHJ1bnRpbWUKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCB1ZGlkLCBzdGF0ZSwgYXZhaWxhYmlsaXR5LCBydW50aW1lKToKKyAgICAgICAg
IiIiCisgICAgICAgIDpwYXJhbSBuYW1lOiBUaGUgZGV2aWNlIG5hbWUKKyAgICAgICAgOnR5cGUg
bmFtZTogc3RyCisgICAgICAgIDpwYXJhbSB1ZGlkOiBUaGUgZGV2aWNlIFVESUQgKGEgVVVJRCBz
dHJpbmcpCisgICAgICAgIDp0eXBlIHVkaWQ6IHN0cgorICAgICAgICA6cGFyYW0gc3RhdGU6IFRo
ZSBsYXN0IGtub3duIGRldmljZSBzdGF0ZQorICAgICAgICA6dHlwZSBzdGF0ZTogc3RyCisgICAg
ICAgIDpwYXJhbSBhdmFpbGFiaWxpdHk6IFRoZSBsYXN0IGtub3duIGRldmljZSBhdmFpbGFiaWxp
dHkKKyAgICAgICAgOnR5cGUgYXZhaWxhYmlsaXR5OiBzdHIKKyAgICAgICAgOnBhcmFtIHJ1bnRp
bWU6IFRoZSBpT1MgU2ltdWxhdG9yIHJ1bnRpbWUgdGhhdCBob3N0cyB0aGlzIGRldmljZQorICAg
ICAgICA6dHlwZSBydW50aW1lOiBSdW50aW1lCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm5h
bWUgPSBuYW1lCisgICAgICAgIHNlbGYudWRpZCA9IHVkaWQKKyAgICAgICAgc2VsZi5zdGF0ZSA9
IHN0YXRlCisgICAgICAgIHNlbGYuYXZhaWxhYmxlID0gYXZhaWxhYmlsaXR5ICE9ICd1bmF2YWls
YWJsZScKKyAgICAgICAgc2VsZi5ydW50aW1lID0gcnVudGltZQorCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIHBhdGgoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICA6cmV0dXJuczogVGhlIGZp
bGVzeXN0ZW0gcGF0aCB0aGF0IGNvbnRhaW5zIHRoZSBzaW11bGF0b3IgZGV2aWNlJ3MgZGF0YS4K
KyAgICAgICAgOnJ0eXBlOiBzdHIKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRo
LnJlYWxwYXRoKAorICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2VyKAorICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbignfi9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL0Rldmlj
ZXMnLCBzZWxmLnVkaWQpKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVhdGUoY2xz
LCBuYW1lLCBkZXZpY2VfdHlwZSwgcnVudGltZSk6CisgICAgICAgICIiIgorICAgICAgICBDcmVh
dGUgYSBuZXcgQ29yZVNpbXVsYXRvciBkZXZpY2UuCisgICAgICAgIDpwYXJhbSBuYW1lOiBUaGUg
bmFtZSBvZiB0aGUgZGV2aWNlLgorICAgICAgICA6dHlwZSBuYW1lOiBzdHIKKyAgICAgICAgOnBh
cmFtIGRldmljZV90eXBlOiBUaGUgQ29yZVNpbXVsYXRvcnQgZGV2aWNlIHR5cGUuCisgICAgICAg
IDp0eXBlIGRldmljZV90eXBlOiBEZXZpY2VUeXBlCisgICAgICAgIDpwYXJhbSBydW50aW1lOiAg
VGhlIENvcmVTaW11YWx0b3IgcnVudGltZS4KKyAgICAgICAgOnR5cGUgcnVudGltZTogUnVudGlt
ZQorICAgICAgICA6cmV0dXJuOiBUaGUgbmV3IGRldmljZSBvciByYWlzZXMgYSBDYWxsZWRQcm9j
ZXNzRXJyb3IgaWYgYGBzaW1jdGwgY3JlYXRlYGAgZmFpbGVkLgorICAgICAgICA6cnR5cGU6IERl
dmljZQorICAgICAgICAiIiIKKyAgICAgICAgc2ltID0gU2ltdWxhdG9yKCkKKyAgICAgICAgc3Vi
cHJvY2Vzcy5jaGVja19jYWxsKFsneGNydW4nLCAnc2ltY3RsJywgJ2NyZWF0ZScsIG5hbWUsIGRl
dmljZV90eXBlLmlkZW50aWZpZXIsIHJ1bnRpbWUuaWRlbnRpZmllcl0pCisKKyAgICAgICAgZGV2
aWNlID0gTm9uZQorICAgICAgICB3aGlsZSBkZXZpY2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNp
bS5yZWZyZXNoKCkKKyAgICAgICAgICAgIGRldmljZSA9IHNpbS5kZXZpY2UobmFtZSwgcnVudGlt
ZSkKKyAgICAgICAgICAgIGlmIGRldmljZSBpcyBOb25lIG9yIGRldmljZS5zdGF0ZSA9PSAnQ3Jl
YXRpbmcnOgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMikKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIGRldmljZQorCisgICAgZGVm
IF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnVkaWQgPT0gb3RoZXIu
dWRpZAogCi0gICAgICAgIGRldmljZXNbdmVyc2lvbl1bZGV2aWNlWyd1ZGlkJ11dID0gZGV2aWNl
CisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5f
X2VxX18ob3RoZXIpCiAKLSAgICByZXR1cm4gZGV2aWNlcworICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuICc8RGV2aWNlICJ7bmFtZX0iOiB7dWRpZH0uIFN0YXRlOiB7c3Rh
dGV9LiBSdW50aW1lOiB7cnVudGltZX0sIEF2YWlsYWJsZToge2F2YWlsYWJsZX0+Jy5mb3JtYXQo
CisgICAgICAgICAgICBuYW1lPXNlbGYubmFtZSwKKyAgICAgICAgICAgIHVkaWQ9c2VsZi51ZGlk
LAorICAgICAgICAgICAgc3RhdGU9c2VsZi5zdGF0ZSwKKyAgICAgICAgICAgIGF2YWlsYWJsZT1z
ZWxmLmF2YWlsYWJsZSwKKyAgICAgICAgICAgIHJ1bnRpbWU9c2VsZi5ydW50aW1lLmlkZW50aWZp
ZXIpCiAKIAotZGVmIGdldF9kZXZpY2VfdHlwZXMoKToKK2NsYXNzIFNpbXVsYXRvcihvYmplY3Qp
OgogICAgICIiIgotICAgIDpyZXR1cm46IEEgZGljdGlvbmFyeSBtYXBwaW5nIG9mIGRldmljZSBu
YW1lIC0+IGlkZW50aWZpZXIKLSAgICA6cnR5cGU6IGRpY3QKKyAgICBSZXByZXNlbnRzIHRoZSBp
T1MgU2ltdWxhdG9yIGluZnJhc3RydWN0dXJlIHVuZGVyIHRoZSBjdXJyZW50bHkgc2VsZWN0IFhj
b2RlLmFwcCBidW5kbGUuCiAgICAgIiIiCi0gICAgZGV2aWNlX3R5cGVzID0ge30KICAgICBkZXZp
Y2VfdHlwZV9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPlteKF0rKVwoKD9QPGlkZW50aWZpZXI+
W14pXSspXCknKQotICAgIHN0ZG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4n
LCAnLXNkaycsICdpcGhvbmVzaW11bGF0b3InLCAnc2ltY3RsJywgJ2xpc3QnLCAnZGV2aWNldHlw
ZXMnXSkKLSAgICBsaW5lcyA9IGl0ZXIoc3Rkb3V0LnNwbGl0bGluZXMoKSkKLSAgICBoZWFkZXIg
PSBuZXh0KGxpbmVzKQotICAgIGlmIGhlYWRlciAhPSAnPT0gRGV2aWNlIFR5cGVzID09JzoKKyAg
ICBydW50aW1lX3JlID0gcmUuY29tcGlsZSgKKyAgICAgICAgJ2lPUyAoP1A8dmVyc2lvbj5bMC05
XStcLlswLTldKSBcKFswLTldK1wuWzAtOV0rIC0gKD9QPGJ1aWxkX3ZlcnNpb24+W14pXSspXCkg
XCgoP1A8aWRlbnRpZmllcj5bXildKylcKSggXCgoP1A8YXZhaWxhYmlsaXR5PlteKV0rKVwpKT8n
KQorICAgIHZlcnNpb25fcmUgPSByZS5jb21waWxlKCctLSBpT1MgKD9QPHZlcnNpb24+WzAtOV0r
XC5bMC05XSspIC0tJykKKyAgICBkZXZpY2VzX3JlID0gcmUuY29tcGlsZSgKKyAgICAgICAgJ1xz
Kig/UDxuYW1lPlteKF0rIClcKCg/UDx1ZGlkPlteKV0rKVwpIFwoKD9QPHN0YXRlPlteKV0rKVwp
KCBcKCg/UDxhdmFpbGFiaWxpdHk+W14pXSspXCkpPycpCisKKyAgICBkZWYgX19pbml0X18oc2Vs
Zik6CisgICAgICAgIHNlbGYucnVudGltZXMgPSBbXQorICAgICAgICBzZWxmLmRldmljZV90eXBl
cyA9IFtdCisgICAgICAgIHNlbGYucmVmcmVzaCgpCisKKyAgICBkZWYgcmVmcmVzaChzZWxmKToK
KyAgICAgICAgIiIiCisgICAgICAgIFJlZnJlc2ggcnVudGltZSBhbmQgZGV2aWNlIHR5cGUgaW5m
b3JtYXRpb24gZnJvbSBgYHNpbWN0bCBsaXN0YGAuCisgICAgICAgICIiIgorICAgICAgICBjb21t
YW5kID0gWyd4Y3J1bicsICdzaW1jdGwnLCAnbGlzdCddCisgICAgICAgIHNpbWN0bF9wID0gc3Vi
cHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNpbWN0bF9wLmNvbW11bmlj
YXRlKCkKKyAgICAgICAgaWYgc2ltY3RsX3AucmV0dXJuY29kZSAhPSAwOgorICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgICAgICd7Y29tbWFuZH0gZmFpbGVkOlxu
e3N0ZG91dH1cbntzdGRlcnJ9Jy5mb3JtYXQoY29tbWFuZD0nICcuam9pbihjb21tYW5kKSwgc3Rk
b3V0PXN0ZG91dCwgc3RkZXJyPXN0ZGVycikpCisKKyAgICAgICAgbGluZXMgPSAobGluZSBmb3Ig
bGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpKQorICAgICAgICBkZXZpY2VfdHlwZXNfaGVhZGVy
ID0gbmV4dChsaW5lcykKKyAgICAgICAgaWYgZGV2aWNlX3R5cGVzX2hlYWRlciAhPSAnPT0gRGV2
aWNlIFR5cGVzID09JzoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRXhwZWN0ZWQg
PT0gRGV2aWNlIFR5cGVzID09IGhlYWRlciBidXQgZ290OiAie30iJy5mb3JtYXQoZGV2aWNlX3R5
cGVzX2hlYWRlcikpCisgICAgICAgIHNlbGYuX3BhcnNlX2RldmljZV90eXBlcyhsaW5lcykKKwor
ICAgIGRlZiBfcGFyc2VfZGV2aWNlX3R5cGVzKHNlbGYsIGxpbmVzKToKKyAgICAgICAgIiIiCisg
ICAgICAgIFBhcnNlIGRldmljZSB0eXBlcyBmcm9tIGBgc2ltY3RsIGxpc3RgYC4KKyAgICAgICAg
OnBhcmFtIGxpbmVzOiBBIGdlbmVyYXRvciBmb3IgdGhlIG91dHB1dCBsaW5lcyBmcm9tIGBgc2lt
Y3RsIGxpc3RgYC4KKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKyAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBkZXZpY2VfdHlwZV9tYXRjaCA9IHNlbGYu
ZGV2aWNlX3R5cGVfcmUubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2VfdHlw
ZV9tYXRjaDoKKyAgICAgICAgICAgICAgICBpZiBsaW5lICE9ICc9PSBSdW50aW1lcyA9PSc6Cisg
ICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRXhwZWN0ZWQgPT0gUnVudGlt
ZXMgPT0gaGVhZGVyIGJ1dCBnb3Q6ICJ7fSInLmZvcm1hdChsaW5lKSkKKyAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgZGV2aWNlX3R5cGUgPSBEZXZpY2VUeXBlKG5hbWU9ZGV2aWNl
X3R5cGVfbWF0Y2guZ3JvdXAoJ25hbWUnKS5yc3RyaXAoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPWRldmljZV90eXBlX21hdGNoLmdyb3VwKCdpZGVu
dGlmaWVyJykpCisgICAgICAgICAgICBzZWxmLmRldmljZV90eXBlcy5hcHBlbmQoZGV2aWNlX3R5
cGUpCisKKyAgICAgICAgc2VsZi5fcGFyc2VfcnVudGltZXMobGluZXMpCisKKyAgICBkZWYgX3Bh
cnNlX3J1bnRpbWVzKHNlbGYsIGxpbmVzKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnRpbnVl
IHRvIHBhcnNlIHJ1bnRpbWVzIGZyb20gYGBzaW1jdGwgbGlzdGBgLgorICAgICAgICA6cGFyYW0g
bGluZXM6IEEgZ2VuZXJhdG9yIGZvciB0aGUgb3V0cHV0IGxpbmVzIGZyb20gYGBzaW1jdGwgbGlz
dGBgLgorICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorICAgICAgICBmb3IgbGlu
ZSBpbiBsaW5lczoKKyAgICAgICAgICAgIHJ1bnRpbWVfbWF0Y2ggPSBzZWxmLnJ1bnRpbWVfcmUu
bWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBydW50aW1lX21hdGNoOgorICAgICAgICAg
ICAgICAgIGlmIGxpbmUgIT0gJz09IERldmljZXMgPT0nOgorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoJ0V4cGVjdGVkID09IERldmljZXMgPT0gaGVhZGVyIGJ1dCBnb3Q6
ICJ7fSInLmZvcm1hdChsaW5lKSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
dmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHJ1bnRpbWVfbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKS5z
cGxpdCgnLicpKSkKKyAgICAgICAgICAgIHJ1bnRpbWUgPSBSdW50aW1lKHZlcnNpb249dmVyc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9cnVudGltZV9tYXRj
aC5ncm91cCgnaWRlbnRpZmllcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZh
aWxhYmlsaXR5PXJ1bnRpbWVfbWF0Y2guZ3JvdXAoJ2F2YWlsYWJpbGl0eScpKQorICAgICAgICAg
ICAgc2VsZi5ydW50aW1lcy5hcHBlbmQocnVudGltZSkKKyAgICAgICAgc2VsZi5fcGFyc2VfZGV2
aWNlcyhsaW5lcykKKworICAgIGRlZiBfcGFyc2VfZGV2aWNlcyhzZWxmLCBsaW5lcyk6CisgICAg
ICAgICIiIgorICAgICAgICBDb250aW51ZSB0byBwYXJzZSBkZXZpY2VzIGZyb20gYGBzaW1jdGwg
bGlzdGBgLgorICAgICAgICA6cGFyYW0gbGluZXM6IEEgZ2VuZXJhdG9yIGZvciB0aGUgb3V0cHV0
IGxpbmVzIGZyb20gYGBzaW1jdGwgbGlzdGBgLgorICAgICAgICA6cmV0dXJuOiBOb25lCisgICAg
ICAgICIiIgorICAgICAgICBjdXJyZW50X3J1bnRpbWUgPSBOb25lCisgICAgICAgIGZvciBsaW5l
IGluIGxpbmVzOgorICAgICAgICAgICAgdmVyc2lvbl9tYXRjaCA9IHNlbGYudmVyc2lvbl9yZS5t
YXRjaChsaW5lKQorICAgICAgICAgICAgaWYgdmVyc2lvbl9tYXRjaDoKKyAgICAgICAgICAgICAg
ICB2ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl9tYXRjaC5ncm91cCgndmVyc2lvbicp
LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfcnVudGltZSA9IHNlbGYucnVu
dGltZSh2ZXJzaW9uPXZlcnNpb24pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGN1cnJlbnRfcnVu
dGltZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBkZXZpY2VfbWF0Y2gg
PSBzZWxmLmRldmljZXNfcmUubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2Vf
bWF0Y2g6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFeHBlY3RlZCBhbiBp
T1MgU2ltdWxhdG9yIGRldmljZSBsaW5lLCBnb3QgInt9IicuZm9ybWF0KGxpbmUpKQorICAgICAg
ICAgICAgZGV2aWNlID0gRGV2aWNlKG5hbWU9ZGV2aWNlX21hdGNoLmdyb3VwKCduYW1lJykucnN0
cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRpZD1kZXZpY2VfbWF0Y2guZ3Jv
dXAoJ3VkaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZT1kZXZpY2VfbWF0
Y2guZ3JvdXAoJ3N0YXRlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmls
aXR5PWRldmljZV9tYXRjaC5ncm91cCgnYXZhaWxhYmlsaXR5JyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnVudGltZT1jdXJyZW50X3J1bnRpbWUpCisgICAgICAgICAgICBjdXJyZW50
X3J1bnRpbWUuZGV2aWNlcy5hcHBlbmQoZGV2aWNlKQorCisgICAgZGVmIGRldmljZV90eXBlKHNl
bGYsIG5hbWU9Tm9uZSwgaWRlbnRpZmllcj1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIDpw
YXJhbSBuYW1lOiBUaGUgc2hvcnQgbmFtZSBvZiB0aGUgZGV2aWNlIHR5cGUuCisgICAgICAgIDpw
YXJhbSBpZGVudGlmaWVyOiBUaGUgQ29yZVNpbXVsYXRvciBpZGVudGlmaWVyIG9mIHRoZSBkZXNp
cmVkIGRldmljZSB0eXBlLgorICAgICAgICA6cmV0dXJuOiBBIGRldmljZSB0eXBlIHdpdGggdGhl
IHNwZWNpZmllZCBuYW1lIGFuZC9vciBpZGVudGlmaWVyLCBvciBOb25lIGlmIG9uZSBkb2Vzbid0
IGV4aXN0IGFzIHN1Y2guCisgICAgICAgIDpydHlwZTogRGV2aWNlVHlwZQorICAgICAgICAiIiIK
KyAgICAgICAgZm9yIGRldmljZV90eXBlIGluIHNlbGYuZGV2aWNlX3R5cGVzOgorICAgICAgICAg
ICAgaWYgbmFtZSBhbmQgZGV2aWNlX3R5cGUubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyIGFuZCBkZXZpY2VfdHlwZS5pZGVu
dGlmaWVyICE9IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIHJldHVybiBkZXZpY2VfdHlwZQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZm9yIGxp
bmUgaW4gbGluZXM6Ci0gICAgICAgIGRldmljZV90eXBlX21hdGNoID0gZGV2aWNlX3R5cGVfcmUu
bWF0Y2gobGluZSkKLSAgICAgICAgaWYgbm90IGRldmljZV90eXBlX21hdGNoOgotICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgZGV2aWNlX3R5cGUgPSBkZXZpY2VfdHlwZV9tYXRjaC5ncm91
cGRpY3QoKQotICAgICAgICBkZXZpY2VfdHlwZVsnbmFtZSddID0gZGV2aWNlX3R5cGVbJ25hbWUn
XS5yc3RyaXAoKQotICAgICAgICBkZXZpY2VfdHlwZXNbZGV2aWNlX3R5cGVbJ25hbWUnXV0gPSBk
ZXZpY2VfdHlwZVsnaWRlbnRpZmllciddCisgICAgZGVmIHJ1bnRpbWUoc2VsZiwgdmVyc2lvbj1O
b25lLCBpZGVudGlmaWVyPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBhcmFtIHZlcnNp
b246IFRoZSBpT1MgdmVyc2lvbiBvZiB0aGUgZGVzaXJlZCBydW50aW1lLgorICAgICAgICA6dHlw
ZSB2ZXJzaW9uOiB0dXBsZQorICAgICAgICA6cGFyYW0gaWRlbnRpZmllcjogVGhlIENvcmVTaW11
bGF0b3IgaWRlbnRpZmllciBvZiB0aGUgZGVzaXJlZCBydW50aW1lLgorICAgICAgICA6dHlwZSBp
ZGVudGlmaWVyOiBzdHIKKyAgICAgICAgOnJldHVybjogQSBydW50aW1lIHdpdGggdGhlIHNwZWNp
ZmllZCB2ZXJzaW9uIGFuZC9vciBpZGVudGlmaWVyLCBvciBOb25lIGlmIG9uZSBkb2Vzbid0IGV4
aXN0IGFzIHN1Y2guCisgICAgICAgIDpydHlwZTogUnVudGltZSBvciBOb25lCisgICAgICAgICIi
IgorICAgICAgICBpZiB2ZXJzaW9uIGlzIE5vbmUgYW5kIGlkZW50aWZpZXIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignTXVzdCBzdXBwbHkgdmVyc2lvbiBhbmQvb3IgaWRl
bnRpZmllci4nKQogCi0gICAgcmV0dXJuIGRldmljZV90eXBlcworICAgICAgICBmb3IgcnVudGlt
ZSBpbiBzZWxmLnJ1bnRpbWVzOgorICAgICAgICAgICAgaWYgdmVyc2lvbiBhbmQgcnVudGltZS52
ZXJzaW9uICE9IHZlcnNpb246CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGlmIGlkZW50aWZpZXIgYW5kIHJ1bnRpbWUuaWRlbnRpZmllciAhPSBpZGVudGlmaWVyOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4gcnVudGltZQorICAgICAg
ICByZXR1cm4gTm9uZQogCisgICAgZGVmIGRldmljZShzZWxmLCBuYW1lPU5vbmUsIHJ1bnRpbWU9
Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGRlc2lyZWQgZGV2aWNlLgorICAgICAgICA6dHlwZSBkZXZpY2U6IHN0cgorICAgICAgICA6cGFy
YW0gcnVudGltZTogVGhlIHJ1bnRpbWUgb2YgdGhlIGRlc2lyZWQgZGV2aWNlLgorICAgICAgICA6
dHlwZSBydW50aW1lOiBSdW50aW1lCisgICAgICAgIDpyZXR1cm46IEEgZGV2aWNlIHdpdGggdGhl
IHNwZWNpZmllZCBuYW1lIGFuZC9vciBydW50aW1lLCBvciBOb25lIGlmIG9uZSBkb2Vzbid0IGV4
aXN0IGFzIHN1Y2gKKyAgICAgICAgOnJ0eXBlOiBEZXZpY2Ugb3IgTm9uZQorICAgICAgICAiIiIK
KyAgICAgICAgaWYgbmFtZSBpcyBOb25lIGFuZCBydW50aW1lIGlzIE5vbmU6CisgICAgICAgICAg
ICByYWlzZSBUeXBlRXJyb3IoJ011c3Qgc3VwcGx5IG5hbWUgYW5kL29yIHJ1bnRpbWUuJykKIAot
ZGVmIGdldF9sYXRlc3RfcnVudGltZSgpOgotICAgIHJ1bnRpbWVzID0gZ2V0X3J1bnRpbWVzKCkK
LSAgICBpZiBub3QgcnVudGltZXM6CisgICAgICAgIGZvciBkZXZpY2UgaW4gc2VsZi5kZXZpY2Vz
OgorICAgICAgICAgICAgaWYgbmFtZSBhbmQgZGV2aWNlLm5hbWUgIT0gbmFtZToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgcnVudGltZSBhbmQgZGV2aWNlLnJ1bnRp
bWUgIT0gcnVudGltZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmV0
dXJuIGRldmljZQogICAgICAgICByZXR1cm4gTm9uZQotICAgIGxhdGVzdF92ZXJzaW9uID0gc29y
dGVkKHJ1bnRpbWVzLmtleXMoKSlbMF0KLSAgICByZXR1cm4gcnVudGltZXNbbGF0ZXN0X3ZlcnNp
b25dCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGV2aWNlcyhzZWxmKToKKyAgICAgICAgIiIi
CisgICAgICAgIDpyZXR1cm46IEFuIGl0ZXJhdG9yIG9mIGFsbCBkZXZpY2VzIGZyb20gYWxsIHJ1
bnRpbWVzLgorICAgICAgICA6cnR5cGU6IGl0ZXIKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy
biBpdGVydG9vbHMuY2hhaW4oKltydW50aW1lLmRldmljZXMgZm9yIHJ1bnRpbWUgaW4gc2VsZi5y
dW50aW1lc10pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbGF0ZXN0X3J1bnRpbWUoc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICA6cmV0dXJuOiBSZXR1cm5zIGEgUnVudGltZSBvYmplY3Qg
d2l0aCB0aGUgaGlnaGVzdCB2ZXJzaW9uLgorICAgICAgICA6cnR5cGU6IFJ1bnRpbWUgb3IgTm9u
ZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYucnVudGltZXM6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc29ydGVkKHNlbGYucnVudGltZXMsIGtleT1s
YW1iZGEgcnVudGltZTogcnVudGltZS52ZXJzaW9uKVstMV0KKworICAgIGRlZiB0ZXN0aW5nX2Rl
dmljZShzZWxmLCBkZXZpY2VfdHlwZSwgcnVudGltZSk6CisgICAgICAgICIiIgorICAgICAgICBH
ZXQgYW4gaU9TIFNpbXVsYXRvciBkZXZpY2UgZm9yIHRlc3RpbmcuCisgICAgICAgIDpwYXJhbSBk
ZXZpY2VfdHlwZTogVGhlIENvcmVTaW11bGF0b3IgZGV2aWNlIHR5cGUuCisgICAgICAgIDpwYXJh
bSBydW50aW1lOiBUaGUgQ29yZVNpbXVsYXRvciBydW50aW1lLgorICAgICAgICA6cmV0dXJuOiBB
IGRpY3Rpb25hcnkgZGVzY3JpYmluZyB0aGUgZGV2aWNlLgorICAgICAgICA6cnR5cGU6IERldmlj
ZQorICAgICAgICAiIiIKKyAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHRlc3RpbmcgZGV2
aWNlIGFscmVhZHkgZXhpc3RzCisgICAgICAgIG5hbWUgPSBkZXZpY2VfdHlwZS5uYW1lICsgJyBX
ZWJLaXQgVGVzdGVyJworICAgICAgICByZXR1cm4gc2VsZi5kZXZpY2UobmFtZT1uYW1lLCBydW50
aW1lPXJ1bnRpbWUpIG9yIERldmljZS5jcmVhdGUobmFtZSwgZGV2aWNlX3R5cGUsIHJ1bnRpbWUp
CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPGlPUyBTaW11bGF0
b3I6IHtudW1fcnVudGltZXN9IHJ1bnRpbWVzLCB7bnVtX2RldmljZV90eXBlc30gZGV2aWNlIHR5
cGVzPicuZm9ybWF0KAorICAgICAgICAgICAgbnVtX3J1bnRpbWVzPWxlbihzZWxmLnJ1bnRpbWVz
KSwKKyAgICAgICAgICAgIG51bV9kZXZpY2VfdHlwZXM9bGVuKHNlbGYuZGV2aWNlX3R5cGVzKSkK
KworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBkZXNjcmlwdGlvbiA9IFsnaU9TIFNp
bXVsYXRvcjonXQorICAgICAgICBkZXNjcmlwdGlvbiArPSBtYXAoc3RyLCBzZWxmLnJ1bnRpbWVz
KQorICAgICAgICBkZXNjcmlwdGlvbiArPSBtYXAoc3RyLCBzZWxmLmRldmljZV90eXBlcykKKyAg
ICAgICAgZGVzY3JpcHRpb24gKz0gbWFwKHN0ciwgc2VsZi5kZXZpY2VzKQorICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKGRlc2NyaXB0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238565</attachid>
            <date>2014-09-23 13:16:06 -0700</date>
            <delta_ts>2014-09-24 15:28:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136895-20140923131605.patch</filename>
            <type>text/plain</type>
            <size>26400</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWY2MzhkMzY1ZjI2ZmIwNTU0MDg0N2Q3N2RhNGM4Yzk0
YzE3MTdlNS4uOWNjNTFiYjNkMDhkMTE1OTExYTY3NWI5ZDNhZmRkMjA3MDhhOWQwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE0LTA5LTIzICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IG1pbm9yIHZlcnNpb25z
IHVuZGVyIGRldmljZXMgYW5kIGNyZWF0ZSBhIHRlc3RpbmcgZGV2aWNlIHVuZGVyIHRoZSByaWdo
dCBydW50aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgRGV2aWNlLCBEZXZpY2VUeXBlLCBhbmQgUnVudGltZSBkYXRhIGNsYXNzZXMuCisg
ICAgICAgIENyZWF0ZSBTaW11bGF0b3IgY2xhc3MgcmVwcmVzZW50IHNpbWN0bCBvdXRwdXQuCisK
KyAgICAgICAgV2hlcmV2ZXIgcG9zc2libGUsIHVzZSBzdHJ1Y3R1cmVkIGRhdGEgY2xhc3NlcyBh
bnl3aGVyZSBhIHJhdworICAgICAgICBpZGVudGlmaWVyIG9yIFVESUQgc3RyaW5nIHdhcyB1c2Vk
IGZvciBhIGNsZWFuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgYW5kIHRvIGVuY2Fwc3VsYXRl
IHRoZSBpbmhlcmVudCBmcmFnaWxpdHkgb2Ygc2NyYXBpbmcgc2ltY3RsIG91dHB1dC4KKworICAg
ICAgICBDcmVhdGUgYSBzdWl0YWJseSBuYW1lZCB0ZXN0aW5nIGRldmljZSBpZiBvbmUgZG9lc24n
dCBleGlzdC4KKworICAgICAgICBGaW5hbGx5LCBhY2N1cmF0ZWx5IGhhbmRsZSBoYXZpbmcgbXVs
dGlwbGUgc2ltdWxhdG9yIHJ1bnRpbWVzIChTREtzKQorICAgICAgICBpbnN0YWxsZWQgaW4gdGhl
IGFjdGl2ZSBYY29kZS5hcHAgYnVuZGxlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKF9zZXRfdXBfZGVyaXZl
ZF9vcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Ogor
ICAgICAgICAoSU9TU2ltdWxhdG9yRHJpdmVyLmNtZF9saW5lKToKKyAgICAgICAgQ29uc3RydWN0
IERldmljZVR5cGUgYW5kIFJ1bnRpbWUgb2JqZWN0cyBmcm9tIGlkZW50aWZpZXJzIHBhc3NlZCBh
dCB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lLCBzdGlsbCBwcm92aWRpbmcgc2Vuc2libGUgZGVm
YXVsdHMgZm9yIDMyLSBhbmQgNjQtYml0IHRlc3RpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2lvcy5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuX19pbml0X18pOgor
ICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5zZXR1cF90ZXN0X3J1bik6CisgICAgICAgIChJT1NT
aW11bGF0b3JQb3J0KToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQudGVzdGluZ19kZXZpY2Up
OgorICAgICAgICBDYWNoZSB0aGUgdGVzdGluZyBkZXZpY2Ugb25jZSBpdCBpcyBjcmVhdGVkIG9y
IGZvdW5kLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5yZXNldF9wcmVmZXJlbmNlcyk6Cisg
ICAgICAgIEdldCB0aGUgZGV2aWNlIHBhdGggZnJvbSB0aGUgRGV2aWNlIG9iamVjdCBpbnN0ZWFk
IG9mIGNvbnNydWN0aW5nIGl0CisgICAgICAgIGluIHRoZSBwb3J0IGNsYXNzLgorICAgICAgICAo
SU9TU2ltdWxhdG9yUG9ydC5zaW11bGF0b3JfdWRpZCk6IERlbGV0ZWQuCisgICAgICAgIEdldCB0
aGUgVURJRCBmcm9tIHRoZSB0ZXN0aW5nX2RldmljZSA6OiBEZXZpY2Ugb2JqZWN0IGl0c2VsZi4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weToKKyAgICAgICAg
Q3JlYXRlZCBEZXZpY2UsIERldmljZVR5cGUsIFJ1bnRpbWUsIGFuZCBTaW11bGF0b3IgY2xhc3Nl
cy4KKyAgICAgICAgKGdldF9ydW50aW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChnZXRfZGV2aWNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChnZXRfZGV2aWNlX3R5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKGdldF9sYXRlc3RfcnVudGltZSk6IERlbGV0ZWQuCisKIDIwMTQtMDktMTkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFsd2F5cyBhc3N1bWUgaW50ZXJu
YWwgU0RLIHdoZW4gYnVpbGRpbmcgY29uZmlndXJhdGlvbiBQcm9kdWN0aW9uCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQppbmRleCAxMjQ1NDgwZDQ0M2ZmMWFjNGU5YTg4YjkyYmEwN2Q4MTAyNTUzMjFkLi5jMTQzMDU2
YWE4ZTNjNzA4ZjkxNmI0NTAxMDA5NDdlMTk4NjMzNzBkIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTM5
NCwxMCArMzk0LDE1IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBvcHRpb25z
KToKICAgICBpZiBvcHRpb25zLnBsYXRmb3JtID09ICdpb3Mtc2ltdWxhdG9yJzoKICAgICAgICAg
ZnJvbSB3ZWJraXRweSBpbXBvcnQgeGNvZGUKICAgICAgICAgaWYgb3B0aW9ucy5ydW50aW1lIGlz
IE5vbmU6Ci0gICAgICAgICAgICBvcHRpb25zLnJ1bnRpbWUgPSB4Y29kZS5zaW11bGF0b3IuZ2V0
X2xhdGVzdF9ydW50aW1lKClbJ2lkZW50aWZpZXInXQorICAgICAgICAgICAgb3B0aW9ucy5ydW50
aW1lID0geGNvZGUuc2ltdWxhdG9yLlNpbXVsYXRvcigpLmxhdGVzdF9ydW50aW1lCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBvcHRpb25zLnJ1bnRpbWUgPSB4Y29kZS5zaW11bGF0b3IuUnVu
dGltZS5mcm9tX2lkZW50aWZpZXIob3B0aW9ucy5ydW50aW1lKQogICAgICAgICBpZiBvcHRpb25z
LmRldmljZV90eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICBkZXZpY2VfdHlwZXMgPSB4Y29kZS5z
aW11bGF0b3IuZ2V0X2RldmljZV90eXBlcygpCi0gICAgICAgICAgICBvcHRpb25zLmRldmljZV90
eXBlID0gZGV2aWNlX3R5cGVzWydpUGhvbmUgNSddIGlmIG9wdGlvbnMuYXJjaGl0ZWN0dXJlID09
ICd4ODYnIGVsc2UgZGV2aWNlX3R5cGVzWydpUGhvbmUgNXMnXQorICAgICAgICAgICAgaXBob25l
NSA9IHhjb2RlLnNpbXVsYXRvci5EZXZpY2VUeXBlLmZyb21fbmFtZSgnaVBob25lIDUnKQorICAg
ICAgICAgICAgaXBob25lNXMgPSB4Y29kZS5zaW11bGF0b3IuRGV2aWNlVHlwZS5mcm9tX25hbWUo
J2lQaG9uZSA1cycpCisgICAgICAgICAgICBvcHRpb25zLmRldmljZV90eXBlID0gaXBob25lNSBp
ZiBvcHRpb25zLmFyY2hpdGVjdHVyZSA9PSAneDg2JyBlbHNlIGlwaG9uZTVzCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBvcHRpb25zLmRldmljZV90eXBlID0geGNvZGUuc2ltdWxhdG9yLkRl
dmljZVR5cGUuZnJvbV9pZGVudGlmaWVyKG9wdGlvbnMuZGV2aWNlX3R5cGUpCiAKIAogZGVmIHJ1
bihwb3J0LCBvcHRpb25zLCBhcmdzLCBsb2dnaW5nX3N0cmVhbSk6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weQppbmRleCA1N2U2ZjUxZjhiNTRmODgzYmYxNGU1ZGU0ZGQyYjcwODEy
OThkZDg0Li5mMDM4ZjJhNjExOTY1ZDM5YTM2ZTlmMGQ0ZmRiMTk2NjVjMjVhMDgxIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKQEAgLTUxMSw4ICs1MTEsOCBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JEcml2ZXIoRHJpdmVyKToKICAgICAgICAgcnVudGltZSA9IHNlbGYuX3BvcnQu
Z2V0X29wdGlvbigncnVudGltZScpCiAgICAgICAgIGRldmljZV90eXBlID0gc2VsZi5fcG9ydC5n
ZXRfb3B0aW9uKCdkZXZpY2VfdHlwZScpCiAgICAgICAgIHJlbGF5X2FyZ3MgPSBbCi0gICAgICAg
ICAgICAnLXJ1bnRpbWUnLCBydW50aW1lLAotICAgICAgICAgICAgJy1kZXZpY2VUeXBlJywgZGV2
aWNlX3R5cGUsCisgICAgICAgICAgICAnLXJ1bnRpbWUnLCBydW50aW1lLmlkZW50aWZpZXIsCisg
ICAgICAgICAgICAnLWRldmljZVR5cGUnLCBkZXZpY2VfdHlwZS5pZGVudGlmaWVyLAogICAgICAg
ICAgICAgJy1zdWZmaXgnLCBzdHIoc2VsZi5fd29ya2VyX251bWJlciksCiAgICAgICAgICAgICAn
LXByb2R1Y3REaXInLCBwcm9kdWN0X2RpciwKICAgICAgICAgICAgICctYXBwJywgZHVtcF90b29s
LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKaW5kZXggNjYwYjc1N2MyNWNhMDgwNTViYWJm
MTY3NzE2Y2I3OWZiMDI4YTUzMC4uMzcyZmVhNjg3MTJmNmE5ZjNjMjAwNWM2YzQ1MTczYjg0ZjU5
MTIxZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CkBAIC0zNSw2ICszNSw3IEBAIGZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgZHJpdmVyLCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5
LnBvcnQuYmFzZSBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LmxlYWtkZXRlY3RvciBp
bXBvcnQgTGVha0RldGVjdG9yCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBw
b3J0X2NvbmZpZworZnJvbSB3ZWJraXRweS54Y29kZSBpbXBvcnQgc2ltdWxhdG9yCiAKIAogX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNjcsNiArNjgsOCBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICBtYWNfY29uZmlnID0gcG9ydF9jb25maWcu
Q29uZmlnKHNlbGYuX2V4ZWN1dGl2ZSwgc2VsZi5fZmlsZXN5c3RlbSwgJ21hYycpCiAgICAgICAg
IHNlbGYuX21hY19idWlsZF9kaXJlY3RvcnkgPSBtYWNfY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShz
ZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSkKIAorICAgICAgICBzZWxmLl90ZXN0aW5n
X2RldmljZSA9IE5vbmUKKwogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCdkcml2ZXJfbmFtZScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
Z2V0X29wdGlvbignZHJpdmVyX25hbWUnKQpAQCAtMTU3LDcgKzE2MCw3IEBAIGNsYXNzIElPU1Np
bXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgIHRpbWUuc2xlZXAoMikKICAgICAgICAgc2VsZi5f
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKICAgICAgICAgICAgICdvcGVuJywgJy1hJywgb3MucGF0
aC5qb2luKHNlbGYuZGV2ZWxvcGVyX2RpciwgJ0FwcGxpY2F0aW9ucycsICdpT1MgU2ltdWxhdG9y
LmFwcCcpLAotICAgICAgICAgICAgJy0tYXJncycsICctQ3VycmVudERldmljZVVESUQnLCBzZWxm
LnNpbXVsYXRvcl91ZGlkKCldKQorICAgICAgICAgICAgJy0tYXJncycsICctQ3VycmVudERldmlj
ZVVESUQnLCBzZWxmLnRlc3RpbmdfZGV2aWNlLnVkaWRdKQogCiAgICAgZGVmIGNsZWFuX3VwX3Rl
c3RfcnVuKHNlbGYpOgogICAgICAgICBzdXBlcihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5jbGVh
bl91cF90ZXN0X3J1bigpCkBAIC0yNTIsMjEgKzI1NSwxNSBAQCBjbGFzcyBJT1NTaW11bGF0b3JQ
b3J0KFBvcnQpOgogICAgICAgICAgICAgcmV0dXJuIHN0ZGVyciwgTm9uZQogICAgICAgICByZXR1
cm4gc3RkZXJyLCBjcmFzaF9sb2cKIAotICAgIGRlZiBzaW11bGF0b3JfdWRpZChzZWxmKToKLSAg
ICAgICAgZGV2aWNlX25hbWUgPSBzZWxmLmdldF9vcHRpb24oJ2RldmljZV90eXBlJykuc3BsaXQo
Jy4nKVstMV0ucmVwbGFjZSgnLScsICcgJykgKyAnIFdlYktpdCBUZXN0ZXInCi0gICAgICAgIHN0
ZG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLS1zZGsnLCAnaXBob25l
c2ltdWxhdG9yJywgJ3NpbWN0bCcsICdsaXN0J10pCi0gICAgICAgIGxpbmVzID0gc3Rkb3V0LnNw
bGl0bGluZXMoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZXZpY2VzX2luZGV4ID0gbGlu
ZXMuaW5kZXgoJz09IERldmljZXMgPT0nKQotICAgICAgICAgICAgZGV2aWNlX3JlZ2V4ID0gcmUu
Y29tcGlsZSgnKD9QPGRldmljZV9uYW1lPlteKF0rKSBcKCg/UDx1ZGlkPlteKV0rKVwpIFwoKD9Q
PHN0YXRlPlteKV0rKVwpJykKLSAgICAgICAgICAgIGZvciBkZXZpY2VfbGluZSBpbiBpdGVydG9v
bHMudGFrZXdoaWxlKGxhbWJkYSBsaW5lOiBub3QgbGluZS5zdGFydHN3aXRoKCc9PScpLCBsaW5l
c1tkZXZpY2VzX2luZGV4ICsgMTpdKToKLSAgICAgICAgICAgICAgICBkZXZpY2UgPSBkZXZpY2Vf
cmVnZXgubWF0Y2goZGV2aWNlX2xpbmUubHN0cmlwKCkucnN0cmlwKCkpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IGRldmljZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgICAgICBpZiBkZXZpY2UuZ3JvdXAoJ2RldmljZV9uYW1lJykgPT0gZGV2aWNlX25hbWU6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2UuZ3JvdXAoJ3VkaWQnKQotICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgdGVzdGluZ19kZXZpY2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3Rlc3RpbmdfZGV2aWNl
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RpbmdfZGV2aWNlCisK
KyAgICAgICAgZGV2aWNlX3R5cGUgPSBzZWxmLmdldF9vcHRpb24oJ2RldmljZV90eXBlJykKKyAg
ICAgICAgcnVudGltZSA9IHNlbGYuZ2V0X29wdGlvbigncnVudGltZScpCisgICAgICAgIHNlbGYu
X3Rlc3RpbmdfZGV2aWNlID0gc2ltdWxhdG9yLlNpbXVsYXRvcigpLnRlc3RpbmdfZGV2aWNlKGRl
dmljZV90eXBlLCBydW50aW1lKQorICAgICAgICByZXR1cm4gc2VsZi50ZXN0aW5nX2RldmljZQog
CiAgICAgZGVmIHNpbXVsYXRvcl9wYXRoKHNlbGYsIHVkaWQpOgogICAgICAgICBpZiB1ZGlkOgpA
QCAtMzIzLDkgKzMyMCw3IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAg
IHJldHVybiBzZWxmLl9pbWFnZV9kaWZmZXIuZGlmZl9pbWFnZShleHBlY3RlZF9jb250ZW50cywg
YWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2UpCiAKICAgICBkZWYgcmVzZXRfcHJlZmVyZW5jZXMo
c2VsZik6Ci0gICAgICAgIHNpbXVsYXRvcl9wYXRoID0gc2VsZi5zaW11bGF0b3JfcGF0aChzZWxm
LnNpbXVsYXRvcl91ZGlkKCkpCi0gICAgICAgIGlmIG5vdCBzaW11bGF0b3JfcGF0aDoKLSAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBzaW11bGF0b3JfcGF0aCA9IHNlbGYudGVzdGluZ19kZXZp
Y2UucGF0aAogICAgICAgICBkYXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oc2ltdWxhdG9yX3BhdGgs
ICdkYXRhJykKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkYXRhX3BhdGgpOgogICAgICAgICAg
ICAgc2h1dGlsLnJtdHJlZShkYXRhX3BhdGgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUv
c2ltdWxhdG9yLnB5CmluZGV4IDYzZGMzYjM5ZGYxYjI5Y2IzYWFiMjk3NTllNTQwYzdlYTFmZmJh
ZGQuLmM4MTUxMDE4OTlmN2Y4MjdmYzI4YjA2NzQ1ZDk0YTljMTU0MDQ1NTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5CkBAIC0xLDUgKzEsMTEgQEAKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcmUKK2ltcG9y
dCBpdGVydG9vbHMKK2ltcG9ydCB0aW1lCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogIiIiCiBNaW5pbWFsbHkgd3JhcHMgQ29yZVNpbXVsYXRvciBmdW5jdGlvbmFsaXR5
IHRocm91Z2ggc2ltY3RsLgpAQCAtOSw5NyArMTUsMzg5IEBAIERvIG5vdCB1c2UgUHlPYmpDIHRv
IGRsb3BlbiB0aGUgZnJhbWV3b3JrLgogIiIiCiAKIAotZGVmIGdldF9ydW50aW1lcyhvbmx5X2F2
YWlsYWJsZT1UcnVlKToKK2NsYXNzIERldmljZVR5cGUob2JqZWN0KToKICAgICAiIiIKLSAgICBH
aXZlIGEgZGljdGlvbmFyeSBtYXBwaW5nCi0gICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IG1hcHBp
bmcgaU9TIHZlcnNpb24gc3RyaW5nIHRvIHJ1bnRpbWUgaWRlbnRpZmllci4KLSAgICA6cnR5cGU6
IGRpY3QKKyAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBkZXZpY2UgdHlwZS4KICAgICAi
IiIKLSAgICBydW50aW1lcyA9IHt9Ci0gICAgcnVudGltZV9yZSA9IHJlLmNvbXBpbGUoYidpT1Mg
KD9QPHZlcnNpb24+WzAtOV0rXC5bMC05XSkgXChbMC05XStcLlswLTldKyAtICg/UDx1cGRhdGU+
W14pXSspXCkgXCgoP1A8aWRlbnRpZmllcj5bXildKylcKSggXCgoP1A8dW5hdmFpbGFibGU+W14p
XSspXCkpPycpCi0gICAgc3Rkb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bics
ICctc2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdzaW1jdGwnLCAnbGlzdCcsICdydW50aW1lcydd
KQotICAgIGxpbmVzID0gaXRlcihzdGRvdXQuc3BsaXRsaW5lcygpKQotICAgIGhlYWRlciA9IG5l
eHQobGluZXMpCi0gICAgaWYgaGVhZGVyICE9ICc9PSBSdW50aW1lcyA9PSc6Ci0gICAgICAgIHJl
dHVybiBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGlkZW50aWZpZXIpOgorICAg
ICAgICAiIiIKKyAgICAgICAgOnBhcmFtIG5hbWU6IFRoZSBkZXZpY2UgdHlwZSdzIGh1bWFuLXJl
YWRhYmxlIG5hbWUKKyAgICAgICAgOnR5cGUgbmFtZTogc3RyCisgICAgICAgIDpwYXJhbSBpZGVu
dGlmaWVyOiBUaGUgQ29yZVNpbXVsYXRvciBpZGVudGlmaWVyLiBJZiBOb25lLCBpdCBtdXN0IGJl
IGZvdW5kIHdpdGggc2ltY3RsIG9yIGEgVHlwZUVycm9yIGlzIHRocm93bi4KKyAgICAgICAgOnR5
cGUgaWRlbnRpZmllcjogc3RyCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
CisgICAgICAgIHNlbGYuaWRlbnRpZmllciA9IGlkZW50aWZpZXIKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBmcm9tX25hbWUoY2xzLCBuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIDpw
YXJhbSBuYW1lOiBUaGUgbmFtZSBmb3IgdGhlIGRlc2lyZWQgZGV2aWNlIHR5cGUuCisgICAgICAg
IDp0eXBlIG5hbWU6IHN0cgorICAgICAgICA6cmV0dXJuczogQSBgRGV2aWNlVHlwZWAgb2JqZWN0
IHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIG9yIHRocm93cyBhIFR5cGVFcnJvciBpZiBp
dCBkb2Vzbid0IGV4aXN0LgorICAgICAgICA6cnR5cGU6IERldmljZVR5cGUKKyAgICAgICAgIiIi
CisgICAgICAgIGlkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGZvciBkZXZpY2VfdHlwZSBpbiBT
aW11bGF0b3IoKS5kZXZpY2VfdHlwZXM6CisgICAgICAgICAgICBpZiBkZXZpY2VfdHlwZS5uYW1l
ID09IG5hbWU6CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGRldmljZV90eXBlLmlkZW50
aWZpZXIKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQSBkZXZpY2UgdHlwZSB3aXRoIG5h
bWUgIntuYW1lfSIgZG9lcyBub3QgZXhpc3QuJy5mb3JtYXQobmFtZT1uYW1lKSkKKworICAgICAg
ICByZXR1cm4gRGV2aWNlVHlwZShuYW1lLCBpZGVudGlmaWVyKQogCi0gICAgZm9yIGxpbmUgaW4g
bGluZXM6Ci0gICAgICAgIHJ1bnRpbWVfbWF0Y2ggPSBydW50aW1lX3JlLm1hdGNoKGxpbmUpCi0g
ICAgICAgIGlmIG5vdCBydW50aW1lX21hdGNoOgotICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgcnVudGltZSA9IHJ1bnRpbWVfbWF0Y2guZ3JvdXBkaWN0KCkKLSAgICAgICAgdmVyc2lvbiA9
IHR1cGxlKFtpbnQoY29tcG9uZW50KSBmb3IgY29tcG9uZW50IGluIHJ1bnRpbWVfbWF0Y2guZ3Jv
dXAoJ3ZlcnNpb24nKS5zcGxpdCgnLicpXSkKLSAgICAgICAgcnVudGltZSA9IHsKLSAgICAgICAg
ICAgICdpZGVudGlmaWVyJzogcnVudGltZVsnaWRlbnRpZmllciddLAotICAgICAgICAgICAgJ2F2
YWlsYWJsZSc6IHJ1bnRpbWVbJ3VuYXZhaWxhYmxlJ10gaXMgTm9uZSwKLSAgICAgICAgICAgICd2
ZXJzaW9uJzogdmVyc2lvbiwKLSAgICAgICAgfQotICAgICAgICBpZiBvbmx5X2F2YWlsYWJsZSBh
bmQgbm90IHJ1bnRpbWVbJ2F2YWlsYWJsZSddOgotICAgICAgICAgICAgY29udGludWUKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9pZGVudGlmaWVyKGNscywgaWRlbnRpZmllcik6Cisg
ICAgICAgICIiIgorICAgICAgICA6cGFyYW0gaWRlbnRpZmllcjogVGhlIENvcmVTaW11bGF0b3Ig
aWRlbnRpZmllciBmb3IgdGhlIGRlc2lyZWQgcnVudGltZS4KKyAgICAgICAgOnR5cGUgaWRlbnRp
Zmllcjogc3RyCisgICAgICAgIDpyZXR1cm5zOiBBIGBSdW50aW1lYCBvYmplY3Qgd2l0aHQgdGhl
IHNwZWNpZmllZCBpZGVudGlmaWVyIG9yIHRocm93cyBhIFR5cGVFcnJvciBpZiBpdCBkb2Vzbid0
IGV4aXN0LgorICAgICAgICA6cnR5cGU6IERldmljZVR5cGUKKyAgICAgICAgIiIiCisgICAgICAg
IG5hbWUgPSBOb25lCisgICAgICAgIGZvciBkZXZpY2VfdHlwZSBpbiBTaW11bGF0b3IoKS5kZXZp
Y2VfdHlwZXM6CisgICAgICAgICAgICBpZiBkZXZpY2VfdHlwZS5pZGVudGlmaWVyID09IGlkZW50
aWZpZXI6CisgICAgICAgICAgICAgICAgbmFtZSA9IGRldmljZV90eXBlLm5hbWUKKyAgICAgICAg
ICAgICAgICBicmVhawogCi0gICAgICAgIHJ1bnRpbWVzW3ZlcnNpb25dID0gcnVudGltZQorICAg
ICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0EgZGV2
aWNlIHR5cGUgd2l0aCBpZGVudGlmaWVyICJ7aWRlbnRpZmllcn0iIGRvZXMgbm90IGV4aXN0Licu
Zm9ybWF0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllcikpCiAKLSAgICBy
ZXR1cm4gcnVudGltZXMKKyAgICAgICAgcmV0dXJuIERldmljZVR5cGUobmFtZSwgaWRlbnRpZmll
cikKIAorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYu
bmFtZSA9PSBvdGhlci5uYW1lKSBhbmQgKHNlbGYuaWRlbnRpZmllciA9PSBvdGhlci5pZGVudGlm
aWVyKQogCi1kZWYgZ2V0X2RldmljZXMoKToKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToK
KyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKKworICAgIGRlZiBfX3JlcHJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8RGV2aWNlVHlwZSAie25hbWV9Ijoge2lkZW50aWZp
ZXJ9PicuZm9ybWF0KG5hbWU9c2VsZi5uYW1lLCBpZGVudGlmaWVyPXNlbGYuaWRlbnRpZmllcikK
KworCitjbGFzcyBSdW50aW1lKG9iamVjdCk6CiAgICAgIiIiCi0gICAgOnJldHVybjogQSBkaWN0
aW9uYXJ5IG1hcHBpbmcgaU9TIHZlcnNpb24gdG8gZGV2aWNlIGhhcmR3YXJlIG1vZGVsLCBzaW11
bGF0b3IgVURJRCwgYW5kIHN0YXRlLgotICAgIDpydHlwZTogZGljdAorICAgIFJlcHJlc2VudHMg
YSBDb3JlU2ltdWxhdG9yIHJ1bnRpbWUgYXNzb2NpYXRlZCB3aXRoIGFuIGlPUyBTREsuCisgICAg
IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgaWRlbnRpZmllciwgYXZhaWxh
YmlsaXR5LCBkZXZpY2VzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBhcmFtIHZlcnNp
b246IFRoZSBpT1MgU0RLIHZlcnNpb24KKyAgICAgICAgOnR5cGUgdmVyc2lvbjogdHVwbGUKKyAg
ICAgICAgOnBhcmFtIGlkZW50aWZpZXI6IFRoZSBDb3JlU2ltdWFsdG9yIHJ1bnRpbWUgaWRlbnRp
ZmllcgorICAgICAgICA6dHlwZSBpZGVudGlmaWVyOiBzdHIKKyAgICAgICAgOnBhcmFtIGF2YWls
YWJpbGl0eTogVGhlIGxhc3Qga25vd24gYXZhaWxhYmlsaXR5IG9mIHRoZSBydW50aW1lLgorICAg
ICAgICA6dHlwZSBhdmFpbGFiaWxpdHk6IHN0cgorICAgICAgICA6cGFyYW0gZGV2aWNlczogQSBs
aXN0IG9mIGRldmljZXMgdW5kZXIgdGhpcyBydW50aW1lCisgICAgICAgIDp0eXBlIGRldmljZXM6
IGxpc3Qgb3IgTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lv
bgorICAgICAgICBzZWxmLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyCisgICAgICAgIHNlbGYuYXZh
aWxhYmxlID0gYXZhaWxhYmlsaXR5ICE9ICd1bmF2YWlsYWJsZScKKyAgICAgICAgc2VsZi5kZXZp
Y2VzID0gZGV2aWNlcyBvciBbXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21faWRl
bnRpZmllcihjbHMsIGlkZW50aWZpZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBhcmFtIGlk
ZW50aWZpZXI6IFRoZSBpZGVudGlmaWVyIGZvciB0aGUgZGVzaXJlZCBDb3JlU2ltdWxhdG9yIHJ1
bnRpbWUuCisgICAgICAgIDp0eXBlIGlkZW50aWZpZXI6IHN0cgorICAgICAgICA6cmV0dXJuczog
QSBgUnVudGltZWAgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIG9yIHRocm93
cyBhIFR5cGVFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LgorICAgICAgICA6cnR5cGU6IFJ1bnRp
bWUKKyAgICAgICAgIiIiCisgICAgICAgIHJ1bnRpbWUgPSBOb25lCisgICAgICAgIGZvciBydW50
aW1lIGluIFNpbXVsYXRvcigpLnJ1bnRpbWVzOgorICAgICAgICAgICAgaWYgcnVudGltZS5pZGVu
dGlmaWVyID09IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYg
cnVudGltZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBIHJ1bnRpbWUg
d2l0aCBpZGVudGlmaWVyICJ7aWRlbnRpZmllcn0iIGRvZXMgbm90IGV4aXN0LicuZm9ybWF0KGlk
ZW50aWZpZXI9aWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBydW50aW1lCisKKyAgICBkZWYg
X19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLnZlcnNpb24gPT0gb3Ro
ZXIudmVyc2lvbikgYW5kIChzZWxmLmlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllcikKKwor
ICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19l
cV9fKG90aGVyKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxS
dW50aW1lIHt2ZXJzaW9ufToge2lkZW50aWZpZXJ9LiBBdmFpbGFibGU6IHthdmFpbGFibGV9LCB7
bnVtX2RldmljZXN9IGRldmljZXM+Jy5mb3JtYXQoCisgICAgICAgICAgICB2ZXJzaW9uPScuJy5q
b2luKG1hcChzdHIsIHNlbGYudmVyc2lvbikpLAorICAgICAgICAgICAgaWRlbnRpZmllcj1zZWxm
LmlkZW50aWZpZXIsCisgICAgICAgICAgICBhdmFpbGFibGU9c2VsZi5hdmFpbGFibGUsCisgICAg
ICAgICAgICBudW1fZGV2aWNlcz1sZW4oc2VsZi5kZXZpY2VzKSkKKworCitjbGFzcyBEZXZpY2Uo
b2JqZWN0KToKKyAgICAiIiIKKyAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBkZXZpY2Ug
dW5kZXJuZWF0aCBhIHJ1bnRpbWUKICAgICAiIiIKLSAgICBkZXZpY2VzID0ge30KLSAgICB2ZXJz
aW9uX3JlID0gcmUuY29tcGlsZSgnLS0gaU9TICg/UDx2ZXJzaW9uPlswLTldK1wuWzAtOV0rKSAt
LScpCi0gICAgZGV2aWNlc19yZSA9IHJlLmNvbXBpbGUoJ1xzKig/UDxuYW1lPlteKF0rIClcKCg/
UDx1ZGlkPlteKV0rKVwpIFwoKD9QPHN0YXRlPlteKV0rKVwpJykKLSAgICBzdGRvdXQgPSBzdWJw
cm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCAnaXBob25lc2ltdWxhdG9yJywg
J3NpbWN0bCcsICdsaXN0JywgJ2RldmljZXMnXSkKLSAgICBsaW5lcyA9IGl0ZXIoc3Rkb3V0LnNw
bGl0bGluZXMoKSkKLSAgICBoZWFkZXIgPSBuZXh0KGxpbmVzKQotICAgIHZlcnNpb24gPSBOb25l
Ci0gICAgaWYgaGVhZGVyICE9ICc9PSBEZXZpY2VzID09JzoKLSAgICAgICAgcmV0dXJuIE5vbmUK
IAotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICB2ZXJzaW9uX21hdGNoID0gdmVyc2lv
bl9yZS5tYXRjaChsaW5lKQotICAgICAgICBpZiB2ZXJzaW9uX21hdGNoOgotICAgICAgICAgICAg
dmVyc2lvbiA9IHR1cGxlKFtpbnQoY29tcG9uZW50KSBmb3IgY29tcG9uZW50IGluIHZlcnNpb25f
bWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKS5zcGxpdCgnLicpXSkKLSAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgIGRldmljZV9tYXRjaCA9IGRldmljZXNfcmUubWF0Y2gobGluZSkKLSAgICAgICAg
aWYgbm90IGRldmljZV9tYXRjaDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigpCi0g
ICAgICAgIGRldmljZSA9IGRldmljZV9tYXRjaC5ncm91cGRpY3QoKQotICAgICAgICBkZXZpY2Vb
J25hbWUnXSA9IGRldmljZVsnbmFtZSddLnJzdHJpcCgpCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHVkaWQsIHN0YXRlLCBhdmFpbGFiaWxpdHksIHJ1bnRpbWUpOgorICAgICAgICAiIiIK
KyAgICAgICAgOnBhcmFtIG5hbWU6IFRoZSBkZXZpY2UgbmFtZQorICAgICAgICA6dHlwZSBuYW1l
OiBzdHIKKyAgICAgICAgOnBhcmFtIHVkaWQ6IFRoZSBkZXZpY2UgVURJRCAoYSBVVUlEIHN0cmlu
ZykKKyAgICAgICAgOnR5cGUgdWRpZDogc3RyCisgICAgICAgIDpwYXJhbSBzdGF0ZTogVGhlIGxh
c3Qga25vd24gZGV2aWNlIHN0YXRlCisgICAgICAgIDp0eXBlIHN0YXRlOiBzdHIKKyAgICAgICAg
OnBhcmFtIGF2YWlsYWJpbGl0eTogVGhlIGxhc3Qga25vd24gZGV2aWNlIGF2YWlsYWJpbGl0eQor
ICAgICAgICA6dHlwZSBhdmFpbGFiaWxpdHk6IHN0cgorICAgICAgICA6cGFyYW0gcnVudGltZTog
VGhlIGlPUyBTaW11bGF0b3IgcnVudGltZSB0aGF0IGhvc3RzIHRoaXMgZGV2aWNlCisgICAgICAg
IDp0eXBlIHJ1bnRpbWU6IFJ1bnRpbWUKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKKyAgICAgICAgc2VsZi51ZGlkID0gdWRpZAorICAgICAgICBzZWxmLnN0YXRlID0gc3Rh
dGUKKyAgICAgICAgc2VsZi5hdmFpbGFibGUgPSBhdmFpbGFiaWxpdHkgIT0gJ3VuYXZhaWxhYmxl
JworICAgICAgICBzZWxmLnJ1bnRpbWUgPSBydW50aW1lCiAKLSAgICAgICAgZGV2aWNlc1t2ZXJz
aW9uXVtkZXZpY2VbJ3VkaWQnXV0gPSBkZXZpY2UKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGF0
aChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIDpyZXR1cm5zOiBUaGUgZmlsZXN5c3RlbSBw
YXRoIHRoYXQgY29udGFpbnMgdGhlIHNpbXVsYXRvciBkZXZpY2UncyBkYXRhLgorICAgICAgICA6
cnR5cGU6IHN0cgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgo
CisgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHVzZXIoCisgICAgICAgICAgICAgICAgb3MucGF0
aC5qb2luKCd+L0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvRGV2aWNlcycsIHNlbGYu
dWRpZCkpKQogCi0gICAgcmV0dXJuIGRldmljZXMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
Y3JlYXRlKGNscywgbmFtZSwgZGV2aWNlX3R5cGUsIHJ1bnRpbWUpOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ3JlYXRlIGEgbmV3IENvcmVTaW11bGF0b3IgZGV2aWNlLgorICAgICAgICA6cGFyYW0g
bmFtZTogVGhlIG5hbWUgb2YgdGhlIGRldmljZS4KKyAgICAgICAgOnR5cGUgbmFtZTogc3RyCisg
ICAgICAgIDpwYXJhbSBkZXZpY2VfdHlwZTogVGhlIENvcmVTaW11bGF0b3J0IGRldmljZSB0eXBl
LgorICAgICAgICA6dHlwZSBkZXZpY2VfdHlwZTogRGV2aWNlVHlwZQorICAgICAgICA6cGFyYW0g
cnVudGltZTogIFRoZSBDb3JlU2ltdWFsdG9yIHJ1bnRpbWUuCisgICAgICAgIDp0eXBlIHJ1bnRp
bWU6IFJ1bnRpbWUKKyAgICAgICAgOnJldHVybjogVGhlIG5ldyBkZXZpY2Ugb3IgcmFpc2VzIGEg
Q2FsbGVkUHJvY2Vzc0Vycm9yIGlmIGBgc2ltY3RsIGNyZWF0ZWBgIGZhaWxlZC4KKyAgICAgICAg
OnJ0eXBlOiBEZXZpY2UKKyAgICAgICAgIiIiCisgICAgICAgIHNpbSA9IFNpbXVsYXRvcigpCisg
ICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ3hjcnVuJywgJ3NpbWN0bCcsICdjcmVhdGUn
LCBuYW1lLCBkZXZpY2VfdHlwZS5pZGVudGlmaWVyLCBydW50aW1lLmlkZW50aWZpZXJdKQogCisg
ICAgICAgIGRldmljZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgZGV2aWNlIGlzIE5vbmU6CisgICAg
ICAgICAgICBzaW0ucmVmcmVzaCgpCisgICAgICAgICAgICBkZXZpY2UgPSBzaW0uZGV2aWNlKG5h
bWUsIHJ1bnRpbWUpCisgICAgICAgICAgICBpZiBkZXZpY2UgaXMgTm9uZSBvciBkZXZpY2Uuc3Rh
dGUgPT0gJ0NyZWF0aW5nJzoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHJldHVybiBkZXZpY2UK
IAotZGVmIGdldF9kZXZpY2VfdHlwZXMoKToKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudWRpZCA9PSBvdGhlci51ZGlkCisKKyAgICBkZWYgX19uZV9f
KHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKKwor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8RGV2aWNlICJ7bmFtZX0i
OiB7dWRpZH0uIFN0YXRlOiB7c3RhdGV9LiBSdW50aW1lOiB7cnVudGltZX0sIEF2YWlsYWJsZTog
e2F2YWlsYWJsZX0+Jy5mb3JtYXQoCisgICAgICAgICAgICBuYW1lPXNlbGYubmFtZSwKKyAgICAg
ICAgICAgIHVkaWQ9c2VsZi51ZGlkLAorICAgICAgICAgICAgc3RhdGU9c2VsZi5zdGF0ZSwKKyAg
ICAgICAgICAgIGF2YWlsYWJsZT1zZWxmLmF2YWlsYWJsZSwKKyAgICAgICAgICAgIHJ1bnRpbWU9
c2VsZi5ydW50aW1lLmlkZW50aWZpZXIpCisKKworY2xhc3MgU2ltdWxhdG9yKG9iamVjdCk6CiAg
ICAgIiIiCi0gICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IG1hcHBpbmcgb2YgZGV2aWNlIG5hbWUg
LT4gaWRlbnRpZmllcgotICAgIDpydHlwZTogZGljdAorICAgIFJlcHJlc2VudHMgdGhlIGlPUyBT
aW11bGF0b3IgaW5mcmFzdHJ1Y3R1cmUgdW5kZXIgdGhlIGN1cnJlbnRseSBzZWxlY3QgWGNvZGUu
YXBwIGJ1bmRsZS4KICAgICAiIiIKLSAgICBkZXZpY2VfdHlwZXMgPSB7fQogICAgIGRldmljZV90
eXBlX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+W14oXSspXCgoP1A8aWRlbnRpZmllcj5bXild
KylcKScpCi0gICAgc3Rkb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bicsICct
c2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICdzaW1jdGwnLCAnbGlzdCcsICdkZXZpY2V0eXBlcydd
KQotICAgIGxpbmVzID0gaXRlcihzdGRvdXQuc3BsaXRsaW5lcygpKQotICAgIGhlYWRlciA9IG5l
eHQobGluZXMpCi0gICAgaWYgaGVhZGVyICE9ICc9PSBEZXZpY2UgVHlwZXMgPT0nOgorICAgIHJ1
bnRpbWVfcmUgPSByZS5jb21waWxlKAorICAgICAgICAnaU9TICg/UDx2ZXJzaW9uPlswLTldK1wu
WzAtOV0pIFwoWzAtOV0rXC5bMC05XSsgLSAoP1A8YnVpbGRfdmVyc2lvbj5bXildKylcKSBcKCg/
UDxpZGVudGlmaWVyPlteKV0rKVwpKCBcKCg/UDxhdmFpbGFiaWxpdHk+W14pXSspXCkpPycpCisg
ICAgdmVyc2lvbl9yZSA9IHJlLmNvbXBpbGUoJy0tIGlPUyAoP1A8dmVyc2lvbj5bMC05XStcLlsw
LTldKykgLS0nKQorICAgIGRldmljZXNfcmUgPSByZS5jb21waWxlKAorICAgICAgICAnXHMqKD9Q
PG5hbWU+W14oXSsgKVwoKD9QPHVkaWQ+W14pXSspXCkgXCgoP1A8c3RhdGU+W14pXSspXCkoIFwo
KD9QPGF2YWlsYWJpbGl0eT5bXildKylcKSk/JykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
KyAgICAgICAgc2VsZi5ydW50aW1lcyA9IFtdCisgICAgICAgIHNlbGYuZGV2aWNlX3R5cGVzID0g
W10KKyAgICAgICAgc2VsZi5yZWZyZXNoKCkKKworICAgIGRlZiByZWZyZXNoKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmVmcmVzaCBydW50aW1lIGFuZCBkZXZpY2UgdHlwZSBpbmZvcm1h
dGlvbiBmcm9tIGBgc2ltY3RsIGxpc3RgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbW1hbmQg
PSBbJ3hjcnVuJywgJ3NpbWN0bCcsICdsaXN0J10KKyAgICAgICAgc2ltY3RsX3AgPSBzdWJwcm9j
ZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9j
ZXNzLlBJUEUpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2ltY3RsX3AuY29tbXVuaWNhdGUo
KQorICAgICAgICBpZiBzaW1jdGxfcC5yZXR1cm5jb2RlICE9IDA6CisgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgJ3tjb21tYW5kfSBmYWlsZWQ6XG57c3Rk
b3V0fVxue3N0ZGVycn0nLmZvcm1hdChjb21tYW5kPScgJy5qb2luKGNvbW1hbmQpLCBzdGRvdXQ9
c3Rkb3V0LCBzdGRlcnI9c3RkZXJyKSkKKworICAgICAgICBsaW5lcyA9IChsaW5lIGZvciBsaW5l
IGluIHN0ZG91dC5zcGxpdGxpbmVzKCkpCisgICAgICAgIGRldmljZV90eXBlc19oZWFkZXIgPSBu
ZXh0KGxpbmVzKQorICAgICAgICBpZiBkZXZpY2VfdHlwZXNfaGVhZGVyICE9ICc9PSBEZXZpY2Ug
VHlwZXMgPT0nOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFeHBlY3RlZCA9PSBE
ZXZpY2UgVHlwZXMgPT0gaGVhZGVyIGJ1dCBnb3Q6ICJ7fSInLmZvcm1hdChkZXZpY2VfdHlwZXNf
aGVhZGVyKSkKKyAgICAgICAgc2VsZi5fcGFyc2VfZGV2aWNlX3R5cGVzKGxpbmVzKQorCisgICAg
ZGVmIF9wYXJzZV9kZXZpY2VfdHlwZXMoc2VsZiwgbGluZXMpOgorICAgICAgICAiIiIKKyAgICAg
ICAgUGFyc2UgZGV2aWNlIHR5cGVzIGZyb20gYGBzaW1jdGwgbGlzdGBgLgorICAgICAgICA6cGFy
YW0gbGluZXM6IEEgZ2VuZXJhdG9yIGZvciB0aGUgb3V0cHV0IGxpbmVzIGZyb20gYGBzaW1jdGwg
bGlzdGBgLgorICAgICAgICA6dHlwZSBsaW5lczogZ2VuZXhwcgorICAgICAgICA6cmV0dXJuOiBO
b25lCisgICAgICAgICIiIgorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAg
IGRldmljZV90eXBlX21hdGNoID0gc2VsZi5kZXZpY2VfdHlwZV9yZS5tYXRjaChsaW5lKQorICAg
ICAgICAgICAgaWYgbm90IGRldmljZV90eXBlX21hdGNoOgorICAgICAgICAgICAgICAgIGlmIGxp
bmUgIT0gJz09IFJ1bnRpbWVzID09JzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCdFeHBlY3RlZCA9PSBSdW50aW1lcyA9PSBoZWFkZXIgYnV0IGdvdDogInt9IicuZm9y
bWF0KGxpbmUpKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBkZXZpY2VfdHlw
ZSA9IERldmljZVR5cGUobmFtZT1kZXZpY2VfdHlwZV9tYXRjaC5ncm91cCgnbmFtZScpLnJzdHJp
cCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9ZGV2
aWNlX3R5cGVfbWF0Y2guZ3JvdXAoJ2lkZW50aWZpZXInKSkKKyAgICAgICAgICAgIHNlbGYuZGV2
aWNlX3R5cGVzLmFwcGVuZChkZXZpY2VfdHlwZSkKKworICAgICAgICBzZWxmLl9wYXJzZV9ydW50
aW1lcyhsaW5lcykKKworICAgIGRlZiBfcGFyc2VfcnVudGltZXMoc2VsZiwgbGluZXMpOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ29udGludWUgdG8gcGFyc2UgcnVudGltZXMgZnJvbSBgYHNpbWN0
bCBsaXN0YGAuCisgICAgICAgIDpwYXJhbSBsaW5lczogQSBnZW5lcmF0b3IgZm9yIHRoZSBvdXRw
dXQgbGluZXMgZnJvbSBgYHNpbWN0bCBsaXN0YGAuCisgICAgICAgIDp0eXBlIGxpbmVzOiBnZW5l
eHByCisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBsaW5l
IGluIGxpbmVzOgorICAgICAgICAgICAgcnVudGltZV9tYXRjaCA9IHNlbGYucnVudGltZV9yZS5t
YXRjaChsaW5lKQorICAgICAgICAgICAgaWYgbm90IHJ1bnRpbWVfbWF0Y2g6CisgICAgICAgICAg
ICAgICAgaWYgbGluZSAhPSAnPT0gRGV2aWNlcyA9PSc6CisgICAgICAgICAgICAgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcignRXhwZWN0ZWQgPT0gRGV2aWNlcyA9PSBoZWFkZXIgYnV0IGdvdDog
Int9IicuZm9ybWF0KGxpbmUpKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB2
ZXJzaW9uID0gdHVwbGUobWFwKGludCwgcnVudGltZV9tYXRjaC5ncm91cCgndmVyc2lvbicpLnNw
bGl0KCcuJykpKQorICAgICAgICAgICAgcnVudGltZSA9IFJ1bnRpbWUodmVyc2lvbj12ZXJzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1ydW50aW1lX21hdGNo
Lmdyb3VwKCdpZGVudGlmaWVyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFp
bGFiaWxpdHk9cnVudGltZV9tYXRjaC5ncm91cCgnYXZhaWxhYmlsaXR5JykpCisgICAgICAgICAg
ICBzZWxmLnJ1bnRpbWVzLmFwcGVuZChydW50aW1lKQorICAgICAgICBzZWxmLl9wYXJzZV9kZXZp
Y2VzKGxpbmVzKQorCisgICAgZGVmIF9wYXJzZV9kZXZpY2VzKHNlbGYsIGxpbmVzKToKKyAgICAg
ICAgIiIiCisgICAgICAgIENvbnRpbnVlIHRvIHBhcnNlIGRldmljZXMgZnJvbSBgYHNpbWN0bCBs
aXN0YGAuCisgICAgICAgIDpwYXJhbSBsaW5lczogQSBnZW5lcmF0b3IgZm9yIHRoZSBvdXRwdXQg
bGluZXMgZnJvbSBgYHNpbWN0bCBsaXN0YGAuCisgICAgICAgIDp0eXBlIGxpbmVzOiBnZW5leHBy
CisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIGN1cnJlbnRfcnVu
dGltZSA9IE5vbmUKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICB2ZXJz
aW9uX21hdGNoID0gc2VsZi52ZXJzaW9uX3JlLm1hdGNoKGxpbmUpCisgICAgICAgICAgICBpZiB2
ZXJzaW9uX21hdGNoOgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2
ZXJzaW9uX21hdGNoLmdyb3VwKCd2ZXJzaW9uJykuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICAg
ICAgY3VycmVudF9ydW50aW1lID0gc2VsZi5ydW50aW1lKHZlcnNpb249dmVyc2lvbikKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgY3VycmVudF9ydW50aW1lCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGRldmljZV9tYXRjaCA9IHNlbGYuZGV2aWNlc19yZS5tYXRjaChsaW5l
KQorICAgICAgICAgICAgaWYgbm90IGRldmljZV9tYXRjaDoKKyAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0V4cGVjdGVkIGFuIGlPUyBTaW11bGF0b3IgZGV2aWNlIGxpbmUsIGdv
dCAie30iJy5mb3JtYXQobGluZSkpCisgICAgICAgICAgICBkZXZpY2UgPSBEZXZpY2UobmFtZT1k
ZXZpY2VfbWF0Y2guZ3JvdXAoJ25hbWUnKS5yc3RyaXAoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1ZGlkPWRldmljZV9tYXRjaC5ncm91cCgndWRpZCcpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlPWRldmljZV9tYXRjaC5ncm91cCgnc3RhdGUnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHk9ZGV2aWNlX21hdGNoLmdyb3VwKCdhdmFp
bGFiaWxpdHknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lPWN1cnJlbnRf
cnVudGltZSkKKyAgICAgICAgICAgIGN1cnJlbnRfcnVudGltZS5kZXZpY2VzLmFwcGVuZChkZXZp
Y2UpCisKKyAgICBkZWYgZGV2aWNlX3R5cGUoc2VsZiwgbmFtZT1Ob25lLCBpZGVudGlmaWVyPU5v
bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgOnBhcmFtIG5hbWU6IFRoZSBzaG9ydCBuYW1lIG9m
IHRoZSBkZXZpY2UgdHlwZS4KKyAgICAgICAgOnR5cGUgbmFtZTogc3RyCisgICAgICAgIDpwYXJh
bSBpZGVudGlmaWVyOiBUaGUgQ29yZVNpbXVsYXRvciBpZGVudGlmaWVyIG9mIHRoZSBkZXNpcmVk
IGRldmljZSB0eXBlLgorICAgICAgICA6dHlwZSBpZGVudGlmaWVyOiBzdHIKKyAgICAgICAgOnJl
dHVybjogQSBkZXZpY2UgdHlwZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBhbmQvb3IgaWRlbnRp
Zmllciwgb3IgTm9uZSBpZiBvbmUgZG9lc24ndCBleGlzdCBhcyBzdWNoLgorICAgICAgICA6cnR5
cGU6IERldmljZVR5cGUKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBkZXZpY2VfdHlwZSBpbiBz
ZWxmLmRldmljZV90eXBlczoKKyAgICAgICAgICAgIGlmIG5hbWUgYW5kIGRldmljZV90eXBlLm5h
bWUgIT0gbmFtZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaWRl
bnRpZmllciBhbmQgZGV2aWNlX3R5cGUuaWRlbnRpZmllciAhPSBpZGVudGlmaWVyOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4gZGV2aWNlX3R5cGUKICAgICAg
ICAgcmV0dXJuIE5vbmUKIAotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBkZXZpY2Vf
dHlwZV9tYXRjaCA9IGRldmljZV90eXBlX3JlLm1hdGNoKGxpbmUpCi0gICAgICAgIGlmIG5vdCBk
ZXZpY2VfdHlwZV9tYXRjaDoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGRldmljZV90
eXBlID0gZGV2aWNlX3R5cGVfbWF0Y2guZ3JvdXBkaWN0KCkKLSAgICAgICAgZGV2aWNlX3R5cGVb
J25hbWUnXSA9IGRldmljZV90eXBlWyduYW1lJ10ucnN0cmlwKCkKLSAgICAgICAgZGV2aWNlX3R5
cGVzW2RldmljZV90eXBlWyduYW1lJ11dID0gZGV2aWNlX3R5cGVbJ2lkZW50aWZpZXInXQorICAg
IGRlZiBydW50aW1lKHNlbGYsIHZlcnNpb249Tm9uZSwgaWRlbnRpZmllcj1Ob25lKToKKyAgICAg
ICAgIiIiCisgICAgICAgIDpwYXJhbSB2ZXJzaW9uOiBUaGUgaU9TIHZlcnNpb24gb2YgdGhlIGRl
c2lyZWQgcnVudGltZS4KKyAgICAgICAgOnR5cGUgdmVyc2lvbjogdHVwbGUKKyAgICAgICAgOnBh
cmFtIGlkZW50aWZpZXI6IFRoZSBDb3JlU2ltdWxhdG9yIGlkZW50aWZpZXIgb2YgdGhlIGRlc2ly
ZWQgcnVudGltZS4KKyAgICAgICAgOnR5cGUgaWRlbnRpZmllcjogc3RyCisgICAgICAgIDpyZXR1
cm46IEEgcnVudGltZSB3aXRoIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBhbmQvb3IgaWRlbnRpZmll
ciwgb3IgTm9uZSBpZiBvbmUgZG9lc24ndCBleGlzdCBhcyBzdWNoLgorICAgICAgICA6cnR5cGU6
IFJ1bnRpbWUgb3IgTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgdmVyc2lvbiBpcyBOb25l
IGFuZCBpZGVudGlmaWVyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ011
c3Qgc3VwcGx5IHZlcnNpb24gYW5kL29yIGlkZW50aWZpZXIuJykKIAotICAgIHJldHVybiBkZXZp
Y2VfdHlwZXMKKyAgICAgICAgZm9yIHJ1bnRpbWUgaW4gc2VsZi5ydW50aW1lczoKKyAgICAgICAg
ICAgIGlmIHZlcnNpb24gYW5kIHJ1bnRpbWUudmVyc2lvbiAhPSB2ZXJzaW9uOgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyIGFuZCBydW50aW1lLmlk
ZW50aWZpZXIgIT0gaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmV0dXJuIHJ1bnRpbWUKKyAgICAgICAgcmV0dXJuIE5vbmUKIAorICAgIGRlZiBkZXZp
Y2Uoc2VsZiwgbmFtZT1Ob25lLCBydW50aW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg
OnBhcmFtIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIGRldmljZS4KKyAgICAgICAgOnR5
cGUgbmFtZTogc3RyCisgICAgICAgIDpwYXJhbSBydW50aW1lOiBUaGUgcnVudGltZSBvZiB0aGUg
ZGVzaXJlZCBkZXZpY2UuCisgICAgICAgIDp0eXBlIHJ1bnRpbWU6IFJ1bnRpbWUKKyAgICAgICAg
OnJldHVybjogQSBkZXZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kL29yIHJ1bnRpbWUs
IG9yIE5vbmUgaWYgb25lIGRvZXNuJ3QgZXhpc3QgYXMgc3VjaAorICAgICAgICA6cnR5cGU6IERl
dmljZSBvciBOb25lCisgICAgICAgICIiIgorICAgICAgICBpZiBuYW1lIGlzIE5vbmUgYW5kIHJ1
bnRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignTXVzdCBzdXBwbHkg
bmFtZSBhbmQvb3IgcnVudGltZS4nKQogCi1kZWYgZ2V0X2xhdGVzdF9ydW50aW1lKCk6Ci0gICAg
cnVudGltZXMgPSBnZXRfcnVudGltZXMoKQotICAgIGlmIG5vdCBydW50aW1lczoKKyAgICAgICAg
Zm9yIGRldmljZSBpbiBzZWxmLmRldmljZXM6CisgICAgICAgICAgICBpZiBuYW1lIGFuZCBkZXZp
Y2UubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBp
ZiBydW50aW1lIGFuZCBkZXZpY2UucnVudGltZSAhPSBydW50aW1lOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4gZGV2aWNlCiAgICAgICAgIHJldHVybiBOb25l
Ci0gICAgbGF0ZXN0X3ZlcnNpb24gPSBzb3J0ZWQocnVudGltZXMua2V5cygpKVswXQotICAgIHJl
dHVybiBydW50aW1lc1tsYXRlc3RfdmVyc2lvbl0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBk
ZXZpY2VzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgOnJldHVybjogQW4gaXRlcmF0b3Ig
b2YgYWxsIGRldmljZXMgZnJvbSBhbGwgcnVudGltZXMuCisgICAgICAgIDpydHlwZTogaXRlcgor
ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbigqW3J1bnRpbWUuZGV2
aWNlcyBmb3IgcnVudGltZSBpbiBzZWxmLnJ1bnRpbWVzXSkKKworICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBsYXRlc3RfcnVudGltZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIDpyZXR1cm46
IFJldHVybnMgYSBSdW50aW1lIG9iamVjdCB3aXRoIHRoZSBoaWdoZXN0IHZlcnNpb24uCisgICAg
ICAgIDpydHlwZTogUnVudGltZSBvciBOb25lCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qg
c2VsZi5ydW50aW1lczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBz
b3J0ZWQoc2VsZi5ydW50aW1lcywga2V5PWxhbWJkYSBydW50aW1lOiBydW50aW1lLnZlcnNpb24p
Wy0xXQorCisgICAgZGVmIHRlc3RpbmdfZGV2aWNlKHNlbGYsIGRldmljZV90eXBlLCBydW50aW1l
KToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhbiBpT1MgU2ltdWxhdG9yIGRldmljZSBmb3Ig
dGVzdGluZy4KKyAgICAgICAgOnBhcmFtIGRldmljZV90eXBlOiBUaGUgQ29yZVNpbXVsYXRvciBk
ZXZpY2UgdHlwZS4KKyAgICAgICAgOnR5cGUgZGV2aWNlX3R5cGU6IERldmljZVR5cGUKKyAgICAg
ICAgOnBhcmFtIHJ1bnRpbWU6IFRoZSBDb3JlU2ltdWxhdG9yIHJ1bnRpbWUuCisgICAgICAgIDp0
eXBlIHJ1bnRpbWU6IFJ1bnRpbWUKKyAgICAgICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IGRlc2Ny
aWJpbmcgdGhlIGRldmljZS4KKyAgICAgICAgOnJ0eXBlOiBEZXZpY2UKKyAgICAgICAgIiIiCisg
ICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSB0ZXN0aW5nIGRldmljZSBhbHJlYWR5IGV4aXN0
cworICAgICAgICBuYW1lID0gZGV2aWNlX3R5cGUubmFtZSArICcgV2ViS2l0IFRlc3RlcicKKyAg
ICAgICAgcmV0dXJuIHNlbGYuZGV2aWNlKG5hbWU9bmFtZSwgcnVudGltZT1ydW50aW1lKSBvciBE
ZXZpY2UuY3JlYXRlKG5hbWUsIGRldmljZV90eXBlLCBydW50aW1lKQorCisgICAgZGVmIF9fcmVw
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxpT1MgU2ltdWxhdG9yOiB7bnVtX3J1bnRpbWVz
fSBydW50aW1lcywge251bV9kZXZpY2VfdHlwZXN9IGRldmljZSB0eXBlcz4nLmZvcm1hdCgKKyAg
ICAgICAgICAgIG51bV9ydW50aW1lcz1sZW4oc2VsZi5ydW50aW1lcyksCisgICAgICAgICAgICBu
dW1fZGV2aWNlX3R5cGVzPWxlbihzZWxmLmRldmljZV90eXBlcykpCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgZGVzY3JpcHRpb24gPSBbJ2lPUyBTaW11bGF0b3I6J10KKyAgICAg
ICAgZGVzY3JpcHRpb24gKz0gbWFwKHN0ciwgc2VsZi5ydW50aW1lcykKKyAgICAgICAgZGVzY3Jp
cHRpb24gKz0gbWFwKHN0ciwgc2VsZi5kZXZpY2VfdHlwZXMpCisgICAgICAgIGRlc2NyaXB0aW9u
ICs9IG1hcChzdHIsIHNlbGYuZGV2aWNlcykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihkZXNj
cmlwdGlvbikK
</data>
<flag name="review"
          id="263313"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>