<?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>172168</bug_id>
          
          <creation_ts>2017-05-16 08:18:58 -0700</creation_ts>
          <short_desc>[MediaStream] Return default device list until user gives permission to capture</short_desc>
          <delta_ts>2022-10-05 16:21:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1309131</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-16 08:18:58 -0700</bug_when>
    <thetext>Return a default device list until user gives permission to capture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309132</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-16 08:19:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/31816884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309134</commentid>
    <comment_count>2</comment_count>
      <attachid>310263</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-16 08:23:04 -0700</bug_when>
    <thetext>Created attachment 310263
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309141</commentid>
    <comment_count>3</comment_count>
      <attachid>310263</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-16 08:56:28 -0700</bug_when>
    <thetext>Comment on attachment 310263
Proposed patch.

LGTM.
Some nits below.

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

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:79
&gt; +void MediaDevicesRequest::filterDeviceList(Vector&lt;RefPtr&lt;MediaDeviceInfo&gt;&gt;&amp; devices)

Should be a Vector&lt;Ref&lt;MediaDeviceInfo&gt;&gt;&amp;

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:91
&gt; +    static const int defaultMicrophoneCount = 1;

unsigned?

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:95
&gt; +    devices.removeAllMatching([&amp;](RefPtr&lt;MediaDeviceInfo&gt; device) -&gt; bool {

Can we change &quot;RefPtr&lt;MediaDeviceInfo&gt; device&quot; in &quot;const RefPtr&lt;MediaDeviceInfo&gt;&amp; device&quot;?
Or better &quot;const Ref&lt;MediaDeviceInfo&gt;&amp;?
Would be good to have it &quot;const MediaDeviceInfo&amp;&quot; but I don&apos;t think it will work.

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:136
&gt; +            filterDeviceList(devices);

devices can be made a Vector&lt;Ref&lt;MediaDeviceInfo&gt;&gt;.
Small optim: use reserveInitialCapacity/uncheckedAppend.
Except that if id is empty, we do not append a device info, why is it the case?

I see in above code the same (originHasPersistentAccess || document.hasHadActiveMediaStreamTrack()) if statement for handling the label.
Would it make sense to remove the label in filterDeviceList as well?

&gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:22
&gt; +                assert_not_equals(device.kind, null, &quot;device.groupId is non-null&quot;);

If you would like to have more output logging, you could put all these asserts in a test(() =&gt; { }) and give it a dedicated name.

&gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:53
&gt; +                testRunner.setUserMediaPersistentPermissionForOrigin(false, document.location.href, &quot;&quot;);

Out of curiosity, what happens if this test is run several times on the same web process. Will this option persist for the first promise test?

&gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:58
&gt; +                        .then((devices) =&gt; {

To remove increasing indentation, you can do 
return navigator.mediaDevices.getUserMedia({audio:{}, video:{}})
.then((stream) =&gt; {
  return navigator.mediaDevices.enumerateDevices();
}.then((devices) =&gt; {
   assert_equals(...)
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309153</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-16 09:55:50 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 310263 [details]
&gt; Proposed patch.
&gt; 
&gt; LGTM.
&gt; Some nits below.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310263&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:79
&gt; &gt; +void MediaDevicesRequest::filterDeviceList(Vector&lt;RefPtr&lt;MediaDeviceInfo&gt;&gt;&amp; devices)
&gt; 
&gt; Should be a Vector&lt;Ref&lt;MediaDeviceInfo&gt;&gt;&amp;
&gt; 
OK

&gt; &gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:91
&gt; &gt; +    static const int defaultMicrophoneCount = 1;
&gt; 
&gt; unsigned?
&gt; 
Yes

&gt; &gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:95
&gt; &gt; +    devices.removeAllMatching([&amp;](RefPtr&lt;MediaDeviceInfo&gt; device) -&gt; bool {
&gt; 
&gt; Can we change &quot;RefPtr&lt;MediaDeviceInfo&gt; device&quot; in &quot;const
&gt; RefPtr&lt;MediaDeviceInfo&gt;&amp; device&quot;?
&gt; Or better &quot;const Ref&lt;MediaDeviceInfo&gt;&amp;?
&gt; Would be good to have it &quot;const MediaDeviceInfo&amp;&quot; but I don&apos;t think it will
&gt; work.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:136
&gt; &gt; +            filterDeviceList(devices);
&gt; 
&gt; devices can be made a Vector&lt;Ref&lt;MediaDeviceInfo&gt;&gt;.

That doesn&apos;t work with the promise.

&gt; Small optim: use reserveInitialCapacity/uncheckedAppend.
&gt; Except that if id is empty, we do not append a device info, why is it the
&gt; case?
&gt; 
A device must have an ID.

&gt; I see in above code the same (originHasPersistentAccess ||
&gt; document.hasHadActiveMediaStreamTrack()) if statement for handling the label.
&gt; Would it make sense to remove the label in filterDeviceList as well?
&gt; 
I did it that way at first, but the #ifs make it really difficult to read.

&gt; &gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:22
&gt; &gt; +                assert_not_equals(device.kind, null, &quot;device.groupId is non-null&quot;);
&gt; 
&gt; If you would like to have more output logging, you could put all these
&gt; asserts in a test(() =&gt; { }) and give it a dedicated name.
&gt; 
&gt; &gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:53
&gt; &gt; +                testRunner.setUserMediaPersistentPermissionForOrigin(false, document.location.href, &quot;&quot;);
&gt; 
&gt; Out of curiosity, what happens if this test is run several times on the same
&gt; web process. Will this option persist for the first promise test?
&gt; 
State is reset in TestController::resetStateToConsistentValues.

&gt; &gt; LayoutTests/fast/mediastream/media-devices-enumerate-devices.html:58
&gt; &gt; +                        .then((devices) =&gt; {
&gt; 
&gt; To remove increasing indentation, you can do 
&gt; return navigator.mediaDevices.getUserMedia({audio:{}, video:{}})
&gt; .then((stream) =&gt; {
&gt;   return navigator.mediaDevices.enumerateDevices();
&gt; }.then((devices) =&gt; {
&gt;    assert_equals(...)
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309181</commentid>
    <comment_count>5</comment_count>
      <attachid>310273</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-16 10:47:21 -0700</bug_when>
    <thetext>Created attachment 310273
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309210</commentid>
    <comment_count>6</comment_count>
      <attachid>310273</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-16 11:27:34 -0700</bug_when>
    <thetext>Comment on attachment 310273
Patch for landing.

Clearing flags on attachment: 310273

Committed r216938: &lt;http://trac.webkit.org/changeset/216938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903586</commentid>
    <comment_count>7</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-05 16:21:47 -0700</bug_when>
    <thetext>Landed but didn&apos;t back out.

https://github.com/WebKit/WebKit/commit/9480fc6f22e6cda01b1f8526daf264d96b31754f

Marking this as &quot;RESOLVED FIXED&quot;. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310263</attachid>
            <date>2017-05-16 08:23:04 -0700</date>
            <delta_ts>2017-05-16 08:56:28 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>default_devices_patch_2.txt</filename>
            <type>text/plain</type>
            <size>16390</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTE2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
UmV0dXJuIGRlZmF1bHQgZGV2aWNlIGxpc3QgdW50aWwgdXNlciBnaXZlcyBwZXJtaXNzaW9uIHRv
IGNhcHR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MjE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE4MTY4ODQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVh
bS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYURldmljZXNSZXF1ZXN0OjpmaWx0ZXJEZXZpY2VMaXN0KTogUmVtb3ZlIGFsbCBidXQg
dGhlICJkZWZhdWx0IiBudW1iZXIgb2YKKyAgICAgICAgZGV2aWNlcyBvZiBlYWNoIHR5cGUuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFydCk6IENhbGwgZmlsdGVy
RGV2aWNlTGlzdC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1Jl
cXVlc3QuaDoKKwogMjAxNy0wNS0xNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dQRV0gR0xDb250ZXh0RUdMOjpjcmVhdGVXUEVDb250ZXh0KCkgc2hv
dWxkIGZhbGwgYmFjayB0byBwYnVmZmVyLWJhc2VkIGNvbnRleHRzIHdoZW4gb2Zmc2NyZWVuIHRh
cmdldCBwcm92aWRlcyBubyBuYXRpdmUgd2luZG93CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJ
KHJldmlzaW9uIDIxNjg2MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDM0IEBA
IHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6Y29udGV4dERlc3Ryb3kKICAgICBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCit2b2lkIE1lZGlhRGV2
aWNlc1JlcXVlc3Q6OmZpbHRlckRldmljZUxpc3QoVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUlu
Zm8+PiYgZGV2aWNlcykKK3sKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgVU5VU0VEX1BBUkFN
KGRldmljZXMpOworI2Vsc2UKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGRlZmF1bHRDYW1lcmFDb3VudCA9IDI7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Q2FtZXJhQ291bnQgPSAxOworI2VuZGlmCisgICAg
c3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWljcm9waG9uZUNvdW50ID0gMTsKKworICAgIGludCBj
YW1lcmFDb3VudCA9IDA7CisgICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7CisgICAgZGV2aWNl
cy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oUmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4gZGV2aWNlKSAt
PiBib29sIHsKKyAgICAgICAgaWYgKGRldmljZS0+a2luZCgpID09IE1lZGlhRGV2aWNlSW5mbzo6
S2luZDo6VmlkZW9pbnB1dCAmJiArK2NhbWVyYUNvdW50ID4gZGVmYXVsdENhbWVyYUNvdW50KQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChkZXZpY2UtPmtpbmQoKSA9PSBN
ZWRpYURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgJiYgKyttaWNyb3Bob25lQ291bnQgPiBk
ZWZhdWx0TWljcm9waG9uZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworCisjZW5kaWYKK30KKwogdm9pZCBNZWRpYURldmlj
ZXNSZXF1ZXN0OjpzdGFydCgpCiB7CiAgICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IHBy
b3RlY3RlZFRoaXMgPSB0aGlzOwpAQCAtMTA0LDYgKzEzMiw5IEBAIHZvaWQgTWVkaWFEZXZpY2Vz
UmVxdWVzdDo6c3RhcnQoKQogICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJ
bmZvOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQs
IGRldmljZVR5cGUpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICghb3JpZ2luSGFzUGVyc2lz
dGVudEFjY2VzcyAmJiAhZG9jdW1lbnQuaGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjaygpKQor
ICAgICAgICAgICAgZmlsdGVyRGV2aWNlTGlzdChkZXZpY2VzKTsKKwogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRldmljZXMgPSBXVEZN
b3ZlKGRldmljZXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
cm9taXNlLnJlc29sdmUoZGV2aWNlcyk7CiAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmgJKHJldmlzaW9uIDIxNjg2MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKIAorICAgIHZv
aWQgZmlsdGVyRGV2aWNlTGlzdChWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+Jik7CisK
ICAgICBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlIG1fcHJvbWlzZTsKICAg
ICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiAgICAgUmVmUHRyPE1l
ZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdD4gbV9lbnVtZXJhdGlvblJlcXVlc3Q7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMTY4NjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0xNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIFJldHVybiBkZWZhdWx0
IGRldmljZSBsaXN0IHVudGlsIHVzZXIgZ2l2ZXMgcGVybWlzc2lvbiB0byBjYXB0dXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxNjgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMxODE2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51
bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlcy1lbnVtZXJhdGUtZGV2aWNlcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2
aWNlcy1lbnVtZXJhdGUtZGV2aWNlcy5odG1sOiBBZGRlZC4KKwogMjAxNy0wNS0xNSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDog
TGVhZGluZyB3aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IGEgPGJyPiBwcm9kdWNlcyBhbiBleHRyYSBs
aW5lYnJlYWsuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjE2ODYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMDcgKzAsMCBAQAotVGVzdHMgTWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKQot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdAotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmVudW1lcmF0ZURldmljZXMgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KLQotCi0qKiogQ2Fs
bGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aXRob3V0IHBlcnNpc3RlbnQgYWNj
ZXNzLCBhbmQgd2l0aG91dCBhIG1lZGlhIHN0cmVhbSB0cmFjawotCi1QQVNTIGNhcHR1cmVEZXZp
Y2VzLmxlbmd0aCBpcyBub24temVyby4KLQotUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9u
LW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCi1QQVNTIGNh
cHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwg
aXMgIiIKLVBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotCi1QQVNTIGNh
cHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJ
ZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBB
U1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyAiIgotUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQg
aXMgbm9uLW51bGwuCi0KLVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgotUEFT
UyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNl
LmxhYmVsIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzICIiCi1QQVNT
IGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KLQotUEFTUyBjYXB0dXJlRGV2aWNl
LmtpbmQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51
bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVE
ZXZpY2UubGFiZWwgaXMgIiIKLVBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxs
LgotCi0KLSoqKiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdpdGggcGVy
c2lzdGVudCBhY2Nlc3MsIGFuZCB3aXRob3V0IGEgbWVkaWEgc3RyZWFtIHRyYWNrCi0KLVBBU1Mg
Y2FwdHVyZURldmljZXMubGVuZ3RoIGlzIG5vbi16ZXJvLgotCi1QQVNTIGNhcHR1cmVEZXZpY2Uu
a2luZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVs
bC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURl
dmljZS5sYWJlbCBpcyBub3QgIiIKLVBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1u
dWxsLgotUEFTUyBkZXZpY2VJZHMuaW5kZXhPZihjYXB0dXJlRGV2aWNlLmRldmljZUlkKSBpcyBu
b3QgLTEKLQotUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1
cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwg
aXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm90ICIiCi1QQVNTIGNh
cHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KLVBBU1MgZGV2aWNlSWRzLmluZGV4T2Yo
Y2FwdHVyZURldmljZS5kZXZpY2VJZCkgaXMgbm90IC0xCi0KLVBBU1MgY2FwdHVyZURldmljZS5r
aW5kIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxs
LgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2
aWNlLmxhYmVsIGlzIG5vdCAiIgotUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51
bGwuCi1QQVNTIGRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQpIGlzIG5v
dCAtMQotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVy
ZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBp
cyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKLVBBU1MgY2Fw
dHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotUEFTUyBkZXZpY2VJZHMuaW5kZXhPZihj
YXB0dXJlRGV2aWNlLmRldmljZUlkKSBpcyBub3QgLTEKLQotCi0qKiogQ2FsbGluZyBtZWRpYURl
dmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aXRob3V0IHBlcnNpc3RlbnQgYWNjZXNzLCB3aXRoIGEg
bWVkaWEgc3RyZWFtIHRyYWNrCi0KLVBBU1MgY2FwdHVyZURldmljZXMubGVuZ3RoIGlzIG5vbi16
ZXJvLgotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVy
ZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBp
cyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKLVBBU1MgY2Fw
dHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotUEFTUyBkZXZpY2VJZHMuaW5kZXhPZihj
YXB0dXJlRGV2aWNlLmRldmljZUlkKSBpcyBub3QgLTEKLQotUEFTUyBjYXB0dXJlRGV2aWNlLmtp
bmQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwu
Ci1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZp
Y2UubGFiZWwgaXMgbm90ICIiCi1QQVNTIGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVs
bC4KLVBBU1MgZGV2aWNlSWRzLmluZGV4T2YoY2FwdHVyZURldmljZS5kZXZpY2VJZCkgaXMgbm90
IC0xCi0KLVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJl
RGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlz
IG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vdCAiIgotUEFTUyBjYXB0
dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi1QQVNTIGRldmljZUlkcy5pbmRleE9mKGNh
cHR1cmVEZXZpY2UuZGV2aWNlSWQpIGlzIG5vdCAtMQotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2lu
ZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4K
LVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmlj
ZS5sYWJlbCBpcyBub3QgIiIKLVBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxs
LgotUEFTUyBkZXZpY2VJZHMuaW5kZXhPZihjYXB0dXJlRGV2aWNlLmRldmljZUlkKSBpcyBub3Qg
LTEKLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0
ZURldmljZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWwJKHJldmlzaW9uIDIxNjg2MikKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmlj
ZXMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDk1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgot
PGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAg
ICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci0gICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotICAgICAgICA8c2NyaXB0PgotICAgICAgICAgICAgdmFyIGNhcHR1cmVEZXZpY2VzOwot
ICAgICAgICAgICAgdmFyIGNhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICB2YXIgaGF2ZVBlcm1p
c3Npb247Ci0gICAgICAgICAgICB2YXIgZGV2aWNlSWRzID0gW107Ci0KLSAgICAgICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyBNZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpIik7Ci0gICAg
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICAgICAgICAgIHNob3Vs
ZEJlVHlwZSgibmF2aWdhdG9yLm1lZGlhRGV2aWNlcyIsICJPYmplY3QiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlVHlwZSgibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIiwg
IkZ1bmN0aW9uIik7Ci0gICAgICAgICAgICBkZWJ1ZygiIik7Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIGVudW1lcmF0ZShuZXh0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG5hdmln
YXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCi0gICAgICAgICAgICAgICAgICAg
IC50aGVuKGZ1bmN0aW9uKGRldmljZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1
cmVEZXZpY2VzID0gZGV2aWNlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9u
WmVybygiY2FwdHVyZURldmljZXMubGVuZ3RoIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rp
b24oZGV2aWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZURldmljZSA9
IGRldmljZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoImNh
cHR1cmVEZXZpY2Uua2luZCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
Tm9uTnVsbCgiY2FwdHVyZURldmljZS5kZXZpY2VJZCIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURldmljZS5sYWJlbCIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXZlUGVybWlzc2lvbikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkTm90QmVFcXVhbFRvU3RyaW5nKCJjYXB0dXJlRGV2aWNlLmxh
YmVsIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFbXB0eVN0cmluZygiY2FwdHVyZURldmljZS5s
YWJlbCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2Fw
dHVyZURldmljZS5ncm91cElkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldmljZUlkcy5sZW5ndGggPCA0KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VJZHMucHVzaChjYXB0dXJlRGV2aWNlLmRl
dmljZUlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJkZXZpY2VJZHMuaW5kZXhPZihjYXB0dXJl
RGV2aWNlLmRldmljZUlkKSIsICItMSIpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobmV4dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAg
ICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoZXJyLm5hbWUgKyAiOiAiICsgZXJyLm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZnVuY3Rpb24g
Y3JlYXRlU3RyZWFtKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVk
aWFQZXJtaXNzaW9uKHRydWUpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVz
ZXJNZWRpYVBlcnNpc3RlbnRQZXJtaXNzaW9uRm9yT3JpZ2luKGZhbHNlLCBkb2N1bWVudC5sb2Nh
dGlvbi5ocmVmLCAiIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcwotICAgICAgICAgICAgICAgICAgICAuZ2V0VXNlck1lZGlhKHth
dWRpbzp7fSwgdmlkZW86e319KQotICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihz
dHJlYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGA8YnI+KioqIENhbGxpbmcg
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2l0aG91dCBwZXJzaXN0ZW50IGFjY2Vzcywg
d2l0aCBhIG1lZGlhIHN0cmVhbSB0cmFjazxicj5gKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGhhdmVQZXJtaXNzaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0
ZShudWxsKTsgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgfSkK
LSAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpIGZhaWxl
ZCB3aXRoICR7ZXJyLm5hbWV9OiAke2Vyci5tZXNzYWdlfWApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmdW5jdGlvbiBncmFudFBlcm1pc3Npb24o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJzaXN0ZW50UGVy
bWlzc2lvbkZvck9yaWdpbih0cnVlLCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmLCAiIik7Ci0KLSAg
ICAgICAgICAgICAgICBkZWJ1ZyhgPGJyPioqKiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJh
dGVEZXZpY2VzIHdpdGggcGVyc2lzdGVudCBhY2Nlc3MsIGFuZCB3aXRob3V0IGEgbWVkaWEgc3Ry
ZWFtIHRyYWNrPGJyPmApOwotICAgICAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBlbnVtZXJhdGUoY3JlYXRlU3RyZWFtKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGRlYnVn
KGA8YnI+KioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2l0aG91dCBw
ZXJzaXN0ZW50IGFjY2VzcywgYW5kIHdpdGhvdXQgYSBtZWRpYSBzdHJlYW0gdHJhY2s8YnI+YCk7
Ci0gICAgICAgICAgICBlbnVtZXJhdGUoZ3JhbnRQZXJtaXNzaW9uKTsKLQotICAgICAgICAgICAg
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0gICAgICAgIDwvc2NyaXB0PgotICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21lZGlhLWRldmljZXMtZW51bWVy
YXRlLWRldmljZXMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlcy1lbnVtZXJhdGUtZGV2aWNlcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgRW51bWVyYXRlIGRldmlj
ZXMgd2l0aG91dCBwZXJtaXNzaW9uIAorUEFTUyBFbnVtZXJhdGUgZGV2aWNlcyB3aXRoIHBlcnNp
c3RlbnQgYWNjZXNzIAorUEFTUyBFbnVtZXJhdGUgZGV2aWNlcyBhZnRlciBhdXRoZW50aWNhdGlv
biwgd2l0aG91dCBwZXJzaXN0ZW50IGFjY2VzcyAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0
ZS1kZXZpY2VzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0bGU+aU9TIHNwZWNpZmlj
IGNvbnN0cmFpbnRzIG9mIG9uZSBhY3RpdmUgY2FwdHVyZSBzb3VyY2UgYXQgYSB0aW1lPC90aXRs
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBsZXQgZGV2
aWNlQ291bnQgPSAwOworICAgICAgICBmdW5jdGlvbiBjaGVja0RldmljZXMoZGV2aWNlcywgaGF2
ZVBlcm1pc3Npb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGRl
dmljZXMubGVuZ3RoLCAwLCAiY2FwdHVyZURldmljZXMubGVuZ3RoICE9IDAiKTsKKyAgICAgICAg
ICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZpY2UpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhkZXZpY2Uua2luZCwgbnVsbCwgImRldmljZS5raW5kIGlzIG5vbi1u
dWxsIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZGV2aWNlLmRldmljZUlk
LCBudWxsLCAiZGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsIik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoZGV2aWNlLmxhYmVsLCBudWxsLCAiZGV2aWNlLmxhYmVsIGlzIG5v
bi1udWxsIik7CisgICAgICAgICAgICAgICAgaWYgKGhhdmVQZXJtaXNzaW9uKQorICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhkZXZpY2UubGFiZWwsICIiLCAiZGV2aWNlLmxh
YmVsIGlzIG5vdCBlbXB0eSIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2UubGFiZWwsICIiLCAiZGV2aWNlLmxhYmVsIGlzIGVt
cHR5Iik7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhkZXZpY2Uua2luZCwg
bnVsbCwgImRldmljZS5ncm91cElkIGlzIG5vbi1udWxsIik7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworCisgICAgICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKKyAgICAgICAgICAgICAgICAu
dGhlbigoZGV2aWNlcykgPT4geworICAgICAgICAgICAgICAgICAgICBkZXZpY2VDb3VudCA9IGRl
dmljZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBjaGVja0RldmljZXMoZGV2aWNlcywg
ZmFsc2UpOworICAgICAgICAgICAgICAgIH0pCisgICAgICAgIH0sICJFbnVtZXJhdGUgZGV2aWNl
cyB3aXRob3V0IHBlcm1pc3Npb24iKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKHRlc3QpID0+
IHsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVyc2lzdGVudFBlcm1pc3Npb25Gb3JPcmlnaW4odHJ1
ZSwgZG9jdW1lbnQubG9jYXRpb24uaHJlZiwgIiIpOworCisgICAgICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKKyAgICAgICAgICAgICAgICAu
dGhlbigoZGV2aWNlcykgPT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyhkZXZpY2VDb3VudCwgZGV2aWNlcy5sZW5ndGgsICJtb3JlIGRldmljZXMgcmV2ZWFsZWQgd2l0
aCBwZXJzaXN0ZW50IGFjY2VzcyIpOworICAgICAgICAgICAgICAgICAgICBkZXZpY2VDb3VudCA9
IGRldmljZXMubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBjaGVja0RldmljZXMoZGV2aWNl
cywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgfSwgIkVudW1lcmF0ZSBkZXZp
Y2VzIHdpdGggcGVyc2lzdGVudCBhY2Nlc3MiKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QoKHRl
c3QpID0+IHsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVyc2lzdGVudFBlcm1pc3Npb25Gb3JPcmln
aW4oZmFsc2UsIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYsICIiKTsKKworICAgICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86
e319KQorICAgICAgICAgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCisg
ICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoZGV2aWNlcykgPT4geworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2aWNlQ291bnQsIGRldmljZXMubGVuZ3Ro
LCAic2FtZSBkZXZpY2VzIHJldmVhbGVkIHdoZW4gYXV0aGVudGljYXRlZCBhcyB3aXRoIHBlcnNp
c3RlbnQgYWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tEZXZpY2Vz
KGRldmljZXMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAg
ICAgICB9KQorICAgICAgICB9LCAiRW51bWVyYXRlIGRldmljZXMgYWZ0ZXIgYXV0aGVudGljYXRp
b24sIHdpdGhvdXQgcGVyc2lzdGVudCBhY2Nlc3MiKTsKKworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+Cis8L2JvZHk+Cg==
</data>
<flag name="review"
          id="331349"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310273</attachid>
            <date>2017-05-16 10:47:21 -0700</date>
            <delta_ts>2017-05-16 11:27:34 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>default_devices_patch_3.txt</filename>
            <type>text/plain</type>
            <size>16383</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjkzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTE2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
UmV0dXJuIGRlZmF1bHQgZGV2aWNlIGxpc3QgdW50aWwgdXNlciBnaXZlcyBwZXJtaXNzaW9uIHRv
IGNhcHR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MjE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE4MTY4ODQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFt
L21lZGlhLWRldmljZXMtZW51bWVyYXRlLWRldmljZXMuaHRtbAorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmZpbHRlckRldmljZUxpc3QpOiBSZW1vdmUgYWxsIGJ1dCB0
aGUgImRlZmF1bHQiIG51bWJlciBvZgorICAgICAgICBkZXZpY2VzIG9mIGVhY2ggdHlwZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KTogQ2FsbCBmaWx0ZXJE
ZXZpY2VMaXN0LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVx
dWVzdC5oOgorCiAyMDE3LTA1LTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBHTENvbnRleHRFR0w6OmNyZWF0ZVdQRUNvbnRleHQoKSBzaG91
bGQgZmFsbCBiYWNrIHRvIHBidWZmZXItYmFzZWQgY29udGV4dHMgd2hlbiBvZmZzY3JlZW4gdGFy
Z2V0IHByb3ZpZGVzIG5vIG5hdGl2ZSB3aW5kb3cKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAko
cmV2aXNpb24gMjE2OTMyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXNSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMzQgQEAg
dm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveQogICAgIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKK3ZvaWQgTWVkaWFEZXZp
Y2VzUmVxdWVzdDo6ZmlsdGVyRGV2aWNlTGlzdChWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5m
bz4+JiBkZXZpY2VzKQoreworI2lmICFQTEFURk9STShDT0NPQSkKKyAgICBVTlVTRURfUEFSQU0o
ZGV2aWNlcyk7CisjZWxzZQorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBjb25zdCBp
bnQgZGVmYXVsdENhbWVyYUNvdW50ID0gMjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRDYW1lcmFDb3VudCA9IDE7CisjZW5kaWYKKyAgICBz
dGF0aWMgY29uc3QgaW50IGRlZmF1bHRNaWNyb3Bob25lQ291bnQgPSAxOworCisgICAgaW50IGNh
bWVyYUNvdW50ID0gMDsKKyAgICBpbnQgbWljcm9waG9uZUNvdW50ID0gMDsKKyAgICBkZXZpY2Vz
LnJlbW92ZUFsbE1hdGNoaW5nKFsmXShjb25zdCBSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPiYgZGV2
aWNlKSAtPiBib29sIHsKKyAgICAgICAgaWYgKGRldmljZS0+a2luZCgpID09IE1lZGlhRGV2aWNl
SW5mbzo6S2luZDo6VmlkZW9pbnB1dCAmJiArK2NhbWVyYUNvdW50ID4gZGVmYXVsdENhbWVyYUNv
dW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChkZXZpY2UtPmtpbmQo
KSA9PSBNZWRpYURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgJiYgKyttaWNyb3Bob25lQ291
bnQgPiBkZWZhdWx0TWljcm9waG9uZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworCisjZW5kaWYKK30KKwogdm9pZCBNZWRp
YURldmljZXNSZXF1ZXN0OjpzdGFydCgpCiB7CiAgICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVl
c3Q+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwpAQCAtMTA0LDYgKzEzMiw5IEBAIHZvaWQgTWVkaWFE
ZXZpY2VzUmVxdWVzdDo6c3RhcnQoKQogICAgICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFE
ZXZpY2VJbmZvOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdy
b3VwSWQsIGRldmljZVR5cGUpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICghb3JpZ2luSGFz
UGVyc2lzdGVudEFjY2VzcyAmJiAhZG9jdW1lbnQuaGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFj
aygpKQorICAgICAgICAgICAgZmlsdGVyRGV2aWNlTGlzdChkZXZpY2VzKTsKKwogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRldmljZXMg
PSBXVEZNb3ZlKGRldmljZXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV9wcm9taXNlLnJlc29sdmUoZGV2aWNlcyk7CiAgICAgICAgIH0pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNS
ZXF1ZXN0LmgJKHJldmlzaW9uIDIxNjkzMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKIAor
ICAgIHZvaWQgZmlsdGVyRGV2aWNlTGlzdChWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+
Jik7CisKICAgICBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlIG1fcHJvbWlz
ZTsKICAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gbV9wcm90ZWN0b3I7CiAgICAgUmVm
UHRyPE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdD4gbV9lbnVtZXJhdGlvblJlcXVlc3Q7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTY5MzIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNS0xNiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIFJldHVybiBk
ZWZhdWx0IGRldmljZSBsaXN0IHVudGlsIHVzZXIgZ2l2ZXMgcGVybWlzc2lvbiB0byBjYXB0dXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxNjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxODE2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZp
Y2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9tZWRp
YS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA1LTE2ICBD
bGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
VGVzdHMgdGhhdCBhbHdheXMgcGFzcyB3aGVuIHJ1biBhbG9uZSwgYnV0IGZhaWwgaW4gdGhlIGJv
dHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1l
cmF0ZURldmljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyMTY5MzIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDEw
NyArMCwwIEBACi1UZXN0cyBNZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMgaXMg
YW4gaW5zdGFuY2Ugb2YgT2JqZWN0Ci1QQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVy
YXRlRGV2aWNlcyBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgotCi0KLSoqKiBDYWxsaW5nIG1l
ZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdpdGhvdXQgcGVyc2lzdGVudCBhY2Nlc3MsIGFu
ZCB3aXRob3V0IGEgbWVkaWEgc3RyZWFtIHRyYWNrCi0KLVBBU1MgY2FwdHVyZURldmljZXMubGVu
Z3RoIGlzIG5vbi16ZXJvLgotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4K
LVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURl
dmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyAiIgot
UEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi0KLVBBU1MgY2FwdHVyZURl
dmljZS5raW5kIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5v
bi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0
dXJlRGV2aWNlLmxhYmVsIGlzICIiCi1QQVNTIGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24t
bnVsbC4KLQotUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1
cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwg
aXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgIiIKLVBBU1MgY2FwdHVy
ZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBp
cyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBB
U1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5s
YWJlbCBpcyAiIgotUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi0KLQot
KioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2l0aCBwZXJzaXN0ZW50
IGFjY2VzcywgYW5kIHdpdGhvdXQgYSBtZWRpYSBzdHJlYW0gdHJhY2sKLQotUEFTUyBjYXB0dXJl
RGV2aWNlcy5sZW5ndGggaXMgbm9uLXplcm8uCi0KLVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlz
IG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFT
UyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxh
YmVsIGlzIG5vdCAiIgotUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi1Q
QVNTIGRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQpIGlzIG5vdCAtMQot
Ci1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmlj
ZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub24t
bnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJlbCBpcyBub3QgIiIKLVBBU1MgY2FwdHVyZURl
dmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotUEFTUyBkZXZpY2VJZHMuaW5kZXhPZihjYXB0dXJl
RGV2aWNlLmRldmljZUlkKSBpcyBub3QgLTEKLQotUEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMg
bm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwuCi1QQVNT
IGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFi
ZWwgaXMgbm90ICIiCi1QQVNTIGNhcHR1cmVEZXZpY2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KLVBB
U1MgZGV2aWNlSWRzLmluZGV4T2YoY2FwdHVyZURldmljZS5kZXZpY2VJZCkgaXMgbm90IC0xCi0K
LVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNl
LmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1u
dWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vdCAiIgotUEFTUyBjYXB0dXJlRGV2
aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi1QQVNTIGRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVE
ZXZpY2UuZGV2aWNlSWQpIGlzIG5vdCAtMQotCi0KLSoqKiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5l
bnVtZXJhdGVEZXZpY2VzIHdpdGhvdXQgcGVyc2lzdGVudCBhY2Nlc3MsIHdpdGggYSBtZWRpYSBz
dHJlYW0gdHJhY2sKLQotUEFTUyBjYXB0dXJlRGV2aWNlcy5sZW5ndGggaXMgbm9uLXplcm8uCi0K
LVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNl
LmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1u
dWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vdCAiIgotUEFTUyBjYXB0dXJlRGV2
aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi1QQVNTIGRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVE
ZXZpY2UuZGV2aWNlSWQpIGlzIG5vdCAtMQotCi1QQVNTIGNhcHR1cmVEZXZpY2Uua2luZCBpcyBu
b24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5kZXZpY2VJZCBpcyBub24tbnVsbC4KLVBBU1Mg
Y2FwdHVyZURldmljZS5sYWJlbCBpcyBub24tbnVsbC4KLVBBU1MgY2FwdHVyZURldmljZS5sYWJl
bCBpcyBub3QgIiIKLVBBU1MgY2FwdHVyZURldmljZS5ncm91cElkIGlzIG5vbi1udWxsLgotUEFT
UyBkZXZpY2VJZHMuaW5kZXhPZihjYXB0dXJlRGV2aWNlLmRldmljZUlkKSBpcyBub3QgLTEKLQot
UEFTUyBjYXB0dXJlRGV2aWNlLmtpbmQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2Uu
ZGV2aWNlSWQgaXMgbm9uLW51bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm9uLW51
bGwuCi1QQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgbm90ICIiCi1QQVNTIGNhcHR1cmVEZXZp
Y2UuZ3JvdXBJZCBpcyBub24tbnVsbC4KLVBBU1MgZGV2aWNlSWRzLmluZGV4T2YoY2FwdHVyZURl
dmljZS5kZXZpY2VJZCkgaXMgbm90IC0xCi0KLVBBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5v
bi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgotUEFTUyBj
YXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgotUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVs
IGlzIG5vdCAiIgotUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCi1QQVNT
IGRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQpIGlzIG5vdCAtMQotCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLWVudW1lcmF0ZURldmljZXMuaHRtbAkocmV2aXNpb24gMjE2OTMyKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5odG1s
CShub25leGlzdGVudCkKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4K
LSAgICA8aGVhZD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLSAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0g
ICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICB2YXIgY2FwdHVyZURldmljZXM7Ci0gICAgICAg
ICAgICB2YXIgY2FwdHVyZURldmljZTsKLSAgICAgICAgICAgIHZhciBoYXZlUGVybWlzc2lvbjsK
LSAgICAgICAgICAgIHZhciBkZXZpY2VJZHMgPSBbXTsKLQotICAgICAgICAgICAgZGVzY3JpcHRp
b24oIlRlc3RzIE1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkiKTsKLSAgICAgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgICAgICAgICAgc2hvdWxkQmVUeXBl
KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIiwgIk9iamVjdCIpOwotICAgICAgICAgICAgc2hvdWxk
QmVUeXBlKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMiLCAiRnVuY3Rp
b24iKTsKLSAgICAgICAgICAgIGRlYnVnKCIiKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gZW51
bWVyYXRlKG5leHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKLSAgICAgICAgICAgICAgICAgICAgLnRoZW4o
ZnVuY3Rpb24oZGV2aWNlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZURldmlj
ZXMgPSBkZXZpY2VzOwotICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJj
YXB0dXJlRGV2aWNlcy5sZW5ndGgiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZp
Y2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlID0gZGV2aWNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY2FwdHVyZURl
dmljZS5raW5kIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJjYXB0dXJlRGV2aWNlLmRldmljZUlkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2aWNlLmxhYmVsIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhhdmVQZXJtaXNzaW9uKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGROb3RCZUVxdWFsVG9TdHJpbmcoImNhcHR1cmVEZXZpY2UubGFiZWwiLCAi
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZUVtcHR5U3RyaW5nKCJjYXB0dXJlRGV2aWNlLmxhYmVsIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJjYXB0dXJlRGV2
aWNlLmdyb3VwSWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlSWRzLmxlbmd0aCA8IDQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUlkcy5wdXNoKGNhcHR1cmVEZXZpY2UuZGV2aWNlSWQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkTm90QmUoImRldmljZUlkcy5pbmRleE9mKGNhcHR1cmVEZXZpY2Uu
ZGV2aWNlSWQpIiwgIi0xIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgLmNh
dGNoKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChl
cnIubmFtZSArICI6ICIgKyBlcnIubWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVT
dHJlYW0oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1p
c3Npb24odHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlh
UGVyc2lzdGVudFBlcm1pc3Npb25Gb3JPcmlnaW4oZmFsc2UsIGRvY3VtZW50LmxvY2F0aW9uLmhy
ZWYsICIiKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzCi0gICAgICAgICAgICAgICAgICAgIC5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9
LCB2aWRlbzp7fX0pCi0gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHN0cmVhbSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoYDxicj4qKiogQ2FsbGluZyBtZWRpYURl
dmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aXRob3V0IHBlcnNpc3RlbnQgYWNjZXNzLCB3aXRoIGEg
bWVkaWEgc3RyZWFtIHRyYWNrPGJyPmApOwotICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZVBl
cm1pc3Npb24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRlKG51bGwp
OyAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB9KQotICAgICAg
ICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgZmFpbGVkIHdpdGgg
JHtlcnIubmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGdyYW50UGVybWlzc2lvbigpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcnNpc3RlbnRQZXJtaXNzaW9u
Rm9yT3JpZ2luKHRydWUsIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYsICIiKTsKLQotICAgICAgICAg
ICAgICAgIGRlYnVnKGA8YnI+KioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmlj
ZXMgd2l0aCBwZXJzaXN0ZW50IGFjY2VzcywgYW5kIHdpdGhvdXQgYSBtZWRpYSBzdHJlYW0gdHJh
Y2s8YnI+YCk7Ci0gICAgICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGVudW1lcmF0ZShjcmVhdGVTdHJlYW0pOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBoYXZlUGVybWlzc2lvbiA9IGZhbHNlOwotICAgICAgICAgICAgZGVidWcoYDxicj4q
KiogQ2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3aXRob3V0IHBlcnNpc3Rl
bnQgYWNjZXNzLCBhbmQgd2l0aG91dCBhIG1lZGlhIHN0cmVhbSB0cmFjazxicj5gKTsKLSAgICAg
ICAgICAgIGVudW1lcmF0ZShncmFudFBlcm1pc3Npb24pOwotCi0gICAgICAgICAgICB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSAg
ICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21l
ZGlhLWRldmljZXMtZW51bWVyYXRlLWRldmljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZGV2aWNlcy1lbnVtZXJhdGUtZGV2
aWNlcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9tZWRpYS1kZXZpY2VzLWVudW1lcmF0ZS1kZXZpY2VzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKworUEFTUyBFbnVtZXJhdGUgZGV2aWNlcyB3aXRo
b3V0IHBlcm1pc3Npb24gCitQQVNTIEVudW1lcmF0ZSBkZXZpY2VzIHdpdGggcGVyc2lzdGVudCBh
Y2Nlc3MgCitQQVNTIEVudW1lcmF0ZSBkZXZpY2VzIGFmdGVyIGF1dGhlbnRpY2F0aW9uLCB3aXRo
b3V0IHBlcnNpc3RlbnQgYWNjZXNzIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL21lZGlhLWRldmljZXMtZW51bWVyYXRlLWRldmljZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21lZGlhLWRldmljZXMtZW51bWVyYXRlLWRldmlj
ZXMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL21l
ZGlhLWRldmljZXMtZW51bWVyYXRlLWRldmljZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDY4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5pT1Mgc3BlY2lmaWMgY29uc3Ry
YWludHMgb2Ygb25lIGFjdGl2ZSBjYXB0dXJlIHNvdXJjZSBhdCBhIHRpbWU8L3RpdGxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGxldCBkZXZpY2VDb3Vu
dCA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRGV2aWNlcyhkZXZpY2VzLCBoYXZlUGVybWlz
c2lvbikKKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZGV2aWNlcy5s
ZW5ndGgsIDAsICJjYXB0dXJlRGV2aWNlcy5sZW5ndGggIT0gMCIpOworICAgICAgICAgICAgZGV2
aWNlcy5mb3JFYWNoKGZ1bmN0aW9uKGRldmljZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGRldmljZS5raW5kLCBudWxsLCAiZGV2aWNlLmtpbmQgaXMgbm9uLW51bGwiKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhkZXZpY2UuZGV2aWNlSWQsIG51bGws
ICJkZXZpY2UuZGV2aWNlSWQgaXMgbm9uLW51bGwiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhkZXZpY2UubGFiZWwsIG51bGwsICJkZXZpY2UubGFiZWwgaXMgbm9uLW51bGwi
KTsKKyAgICAgICAgICAgICAgICBpZiAoaGF2ZVBlcm1pc3Npb24pCisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGRldmljZS5sYWJlbCwgIiIsICJkZXZpY2UubGFiZWwgaXMg
bm90IGVtcHR5Iik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGRldmljZS5sYWJlbCwgIiIsICJkZXZpY2UubGFiZWwgaXMgZW1wdHkiKTsK
KworICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGRldmljZS5raW5kLCBudWxsLCAi
ZGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVz
ZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKQorICAgICAgICAgICAgICAgIC50aGVuKChk
ZXZpY2VzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGRldmljZUNvdW50ID0gZGV2aWNlcy5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrRGV2aWNlcyhkZXZpY2VzLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgfSwgIkVudW1lcmF0ZSBkZXZpY2VzIHdpdGhv
dXQgcGVybWlzc2lvbiIpOworCisgICAgICAgIHByb21pc2VfdGVzdCgodGVzdCkgPT4geworCisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRVc2VyTWVkaWFQZXJzaXN0ZW50UGVybWlzc2lvbkZvck9yaWdpbih0cnVlLCBkb2N1
bWVudC5sb2NhdGlvbi5ocmVmLCAiIik7CisKKyAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKQorICAgICAgICAgICAgICAgIC50aGVuKChk
ZXZpY2VzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGRldmlj
ZUNvdW50LCBkZXZpY2VzLmxlbmd0aCwgIm1vcmUgZGV2aWNlcyByZXZlYWxlZCB3aXRoIHBlcnNp
c3RlbnQgYWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgIGRldmljZUNvdW50ID0gZGV2aWNl
cy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrRGV2aWNlcyhkZXZpY2VzLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICB9LCAiRW51bWVyYXRlIGRldmljZXMgd2l0
aCBwZXJzaXN0ZW50IGFjY2VzcyIpOworCisgICAgICAgIHByb21pc2VfdGVzdCgodGVzdCkgPT4g
eworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJzaXN0ZW50UGVybWlzc2lvbkZvck9yaWdpbihmYWxz
ZSwgZG9jdW1lbnQubG9jYXRpb24uaHJlZiwgIiIpOworCisgICAgICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pCisg
ICAgICAgICAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4geworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC50aGVuKChkZXZpY2VzKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXZpY2VDb3VudCwgZGV2aWNlcy5sZW5ndGgsICJzYW1l
IGRldmljZXMgcmV2ZWFsZWQgd2hlbiBhdXRoZW50aWNhdGVkIGFzIHdpdGggcGVyc2lzdGVudCBh
Y2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0RldmljZXMoZGV2aWNl
cywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIH0p
CisgICAgICAgIH0sICJFbnVtZXJhdGUgZGV2aWNlcyBhZnRlciBhdXRoZW50aWNhdGlvbiwgd2l0
aG91dCBwZXJzaXN0ZW50IGFjY2VzcyIpOworCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>