<?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>146461</bug_id>
          
          <creation_ts>2015-06-30 10:50:25 -0700</creation_ts>
          <short_desc>Implement platform specific part of enumerateDevices</short_desc>
          <delta_ts>2015-07-09 13:48:25 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Daiter">mdaiter</reporter>
          <assigned_to name="Matthew Daiter">mdaiter</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>mdaiter</cc>
    
    <cc>mrajca</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105725</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-06-30 10:50:25 -0700</bug_when>
    <thetext>Need to get platform specific code in for enumerateDevices. Should be the first code committed: everything depends on it and nothing is necessary to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105726</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-06-30 10:56:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/21614466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105924</commentid>
    <comment_count>2</comment_count>
      <attachid>255887</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-06-30 18:37:22 -0700</bug_when>
    <thetext>Created attachment 255887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106096</commentid>
    <comment_count>3</comment_count>
      <attachid>255887</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-07-01 10:05:25 -0700</bug_when>
    <thetext>Comment on attachment 255887
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDevicesPrivate.cpp:49
&gt; +    Vector&lt;RefPtr&lt;TrackSourceInfo&gt;&gt; capturedDevices = AVCaptureDeviceManager::singleton().getSourcesInfo(&quot;&quot;);

Nit: I think you mean &quot;captureDevices&quot;, not &quot;capturedDevices&quot;.

&gt; Source/WebCore/Modules/mediastream/MediaDevicesPrivate.cpp:57
&gt; +            RefPtr&lt;MediaDeviceInfo&gt; mediaDeviceInfo = MediaDeviceInfo::create(context, capturedDevices[i].get()-&gt;label(), capturedDevices[i].get()-&gt;deviceId(), capturedDevices[i].get()-&gt;groupId(), &quot;audioinput&quot;);
&gt; +            mediaDevicesInfo.append(mediaDeviceInfo);
&gt; +        } else {
&gt; +            RefPtr&lt;MediaDeviceInfo&gt; mediaDeviceInfo = MediaDeviceInfo::create(context, capturedDevices[i].get()-&gt;label(), capturedDevices[i].get()-&gt;deviceId(), capturedDevices[i].get()-&gt;groupId(), &quot;videoinput&quot;);
&gt; +            mediaDevicesInfo.append(mediaDeviceInfo);

1) you should put capturedDevices[i].get() into a local instead of calling it four times.

2) the MediaDeviceKind string values should be constants exported by the MediaDeviceInfo class

3) this would be easier to understand if you rewrote it to get rid of the &quot;else&quot;

   TrackSourceInfo* trackInfo = capturedDevices[i].get();
   String deviceType = trackInfo-&gt;kind() == TrackSourceInfo::SourceKind::Audio ? MediaDeviceInfo::audioInputType() : MediaDeviceInfo::videoInputType();
   mediaDevicesInfo.append(MediaDeviceInfo::create(context, trackInfo-&gt;label(), trackInfo-&gt;deviceId(), trackInfo-&gt;groupId(), deviceType));

&gt; Source/WebCore/Modules/mediastream/MediaDevicesPrivate.h:39
&gt; +

Nit: don&apos;t need this extra blank line here.

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:342
&gt; +            sourcesInfo.append(TrackSourceInfo::create(devices[i].m_videoSourceId, TrackSourceInfo::Video, device.localizedName, device.localizedName, devices[i].m_captureDeviceID));
&gt;          if (devices[i].m_audioSource)
&gt; -            sourcesInfo.append(TrackSourceInfo::create(devices[i].m_audioSourceId, TrackSourceInfo::Audio, device.localizedName));
&gt; +            sourcesInfo.append(TrackSourceInfo::create(devices[i].m_audioSourceId, TrackSourceInfo::Audio, device.localizedName, device.localizedName, devices[i].m_captureDeviceID));

It is probably not always correct to use the localized name for the groupID. I don&apos;t know what we should use for group ID, but please add a FIXME here and we can talk about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106113</commentid>
    <comment_count>4</comment_count>
      <attachid>255932</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:01:49 -0700</bug_when>
    <thetext>Created attachment 255932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106118</commentid>
    <comment_count>5</comment_count>
      <attachid>255934</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:20:22 -0700</bug_when>
    <thetext>Created attachment 255934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106120</commentid>
    <comment_count>6</comment_count>
      <attachid>255935</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:22:57 -0700</bug_when>
    <thetext>Created attachment 255935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106122</commentid>
    <comment_count>7</comment_count>
      <attachid>255935</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-07-01 11:28:30 -0700</bug_when>
    <thetext>Comment on attachment 255935
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDeviceInfo.h:52
&gt; +    static const String audioInputType() { return &quot;audioinput&quot;; }
&gt; +    static const String audioOutputType() { return &quot;audiooutput&quot;; }
&gt; +    static const String videoInputType() { return &quot;videoinput&quot;; }

These create a new String each time they are called. It would be much more efficient to create and return a static AtomicString reference, see TextTrack::subtitlesKeyword for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106124</commentid>
    <comment_count>8</comment_count>
      <attachid>255937</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:40:43 -0700</bug_when>
    <thetext>Created attachment 255937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106129</commentid>
    <comment_count>9</comment_count>
      <attachid>255937</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-01 11:47:23 -0700</bug_when>
    <thetext>Comment on attachment 255937
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDeviceInfo.cpp:52
&gt; +    DEPRECATED_DEFINE_STATIC_LOCAL(const AtomicString, audioinput, (&quot;audioinput&quot;, AtomicString::ConstructFromLiteral));

We aren&apos;t supposed to use DEPRECATED_DEFINE_STATIC_LOCAL anymore. I think you want the NeverDestroy&lt;&gt; template. Talk to andersca if you want more details.

&gt; Source/WebCore/Modules/mediastream/MediaDevicesPrivate.cpp:51
&gt; +    for (size_t i = 0; i &lt; capturedDevices.size(); i++) {

This should be a modern C++ loop:

for (auto&amp; trackInfo : capturedDevices) ....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106130</commentid>
    <comment_count>10</comment_count>
      <attachid>255937</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-01 11:48:12 -0700</bug_when>
    <thetext>Comment on attachment 255937
Patch

Looks great. Get rid of the deprecated DEPRECATED_DEFINE_STATIC_LOCAL and switch to a modern C++ iterator, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106133</commentid>
    <comment_count>11</comment_count>
      <attachid>255939</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:52:24 -0700</bug_when>
    <thetext>Created attachment 255939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106134</commentid>
    <comment_count>12</comment_count>
      <attachid>255940</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:53:33 -0700</bug_when>
    <thetext>Created attachment 255940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106135</commentid>
    <comment_count>13</comment_count>
      <attachid>255941</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 11:54:38 -0700</bug_when>
    <thetext>Created attachment 255941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106253</commentid>
    <comment_count>14</comment_count>
      <attachid>255973</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-01 17:11:43 -0700</bug_when>
    <thetext>Created attachment 255973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106421</commentid>
    <comment_count>15</comment_count>
      <attachid>256020</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-02 11:19:01 -0700</bug_when>
    <thetext>Created attachment 256020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106482</commentid>
    <comment_count>16</comment_count>
      <attachid>256020</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-02 15:02:00 -0700</bug_when>
    <thetext>Comment on attachment 256020
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDeviceInfo.cpp:34
&gt;  #include &quot;ScriptWrappable.h&quot;
&gt;  
&gt; +#include &lt;wtf/NeverDestroyed.h&gt;

No blank line here in WebKit coding style.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.cpp:44
&gt; +    return adoptRef(*new MediaDevicesPrivate());

I normally leave off the parentheses when there are no arguments like this.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:35
&gt; +#include &quot;MediaDeviceInfo.h&quot;
&gt; +
&gt; +#include &lt;wtf/RefCounted.h&gt;

No blank spaces needed for this.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:36
&gt; +#include &lt;wtf/RefPtr.h&gt;

Should probably include &lt;wtf/Forward.h&gt; instead since we don’t actually need to work with a RefPtr.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:41
&gt; +class MediaDevicesPrivate : public RefCounted&lt;MediaDevicesPrivate&gt; {

Why does this need to be reference counted? Is there more than one owner for this? Since we need polymorphism but not sharing, then please use std::unique_ptr for this. Lets not reference count things unless there is actually some benefit.

I’m concerned that there are other classes already in the media stream implementation that are also unnecessarily reference counted.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:45
&gt; +    static RefPtr&lt;MediaDevicesPrivate&gt; create();

Return type should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:49
&gt; +    virtual Vector&lt;RefPtr&lt;MediaDeviceInfo&gt;&gt; availableMediaDevices(ScriptExecutionContext*);

Argument type should be Document&amp; or, if this is being made to work with worker threads, then perhaps ScriptExecutionContext&amp;.

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:56
&gt; +#endif /* MediaDevicesPrivate_h */

We don’t use /* */ for this in WebKit coding style.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h:46
&gt; +    static PassRefPtr&lt;TrackSourceInfo&gt; create(const AtomicString&amp; id, SourceKind kind, const AtomicString&amp; label, const AtomicString&amp; groupId, const AtomicString&amp; deviceId)

Return type should be Ref, not PassRefPtr. Please see &lt;http://www.webkit.org/coding/RefPtr.html&gt;.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h:72
&gt; +    TrackSourceInfo(const AtomicString&amp; id, SourceKind kind, const AtomicString&amp; label, const AtomicString&amp; groupId, const AtomicString&amp; deviceId)
&gt; +        : m_groupId(groupId)
&gt; +        , m_deviceId(deviceId)
&gt; +        , m_id(id)
&gt; +        , m_kind(kind)
&gt; +        , m_label(label)
&gt; +    {
&gt; +    }

Strange that the order in the constructor doesn’t match the order of the data members. Really we want a single order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108264</commentid>
    <comment_count>17</comment_count>
      <attachid>256020</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-09 11:39:51 -0700</bug_when>
    <thetext>Comment on attachment 256020
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:35
&gt;&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; 
&gt; No blank spaces needed for this.

Fixed

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:36
&gt;&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; 
&gt; Should probably include &lt;wtf/Forward.h&gt; instead since we don’t actually need to work with a RefPtr.

Fixed

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:41
&gt;&gt; +class MediaDevicesPrivate : public RefCounted&lt;MediaDevicesPrivate&gt; {
&gt; 
&gt; Why does this need to be reference counted? Is there more than one owner for this? Since we need polymorphism but not sharing, then please use std::unique_ptr for this. Lets not reference count things unless there is actually some benefit.
&gt; 
&gt; I’m concerned that there are other classes already in the media stream implementation that are also unnecessarily reference counted.

Just thought it&apos;d conform to how the rest of the codebase was laid out. Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:45
&gt;&gt; +    static RefPtr&lt;MediaDevicesPrivate&gt; create();
&gt; 
&gt; Return type should be Ref, not RefPtr.

Done

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:49
&gt;&gt; +    virtual Vector&lt;RefPtr&lt;MediaDeviceInfo&gt;&gt; availableMediaDevices(ScriptExecutionContext*);
&gt; 
&gt; Argument type should be Document&amp; or, if this is being made to work with worker threads, then perhaps ScriptExecutionContext&amp;.

Changed to ScriptExecutionContext&amp;

&gt;&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.h:56
&gt;&gt; +#endif /* MediaDevicesPrivate_h */
&gt; 
&gt; We don’t use /* */ for this in WebKit coding style.

Fixed

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h:46
&gt;&gt; +    static PassRefPtr&lt;TrackSourceInfo&gt; create(const AtomicString&amp; id, SourceKind kind, const AtomicString&amp; label, const AtomicString&amp; groupId, const AtomicString&amp; deviceId)
&gt; 
&gt; Return type should be Ref, not PassRefPtr. Please see &lt;http://www.webkit.org/coding/RefPtr.html&gt;.

Fixed

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamTrackSourcesRequestClient.h:72
&gt;&gt; +    }
&gt; 
&gt; Strange that the order in the constructor doesn’t match the order of the data members. Really we want a single order.

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108270</commentid>
    <comment_count>18</comment_count>
      <attachid>256497</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-09 11:49:18 -0700</bug_when>
    <thetext>Created attachment 256497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108279</commentid>
    <comment_count>19</comment_count>
      <attachid>256499</attachid>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-09 12:08:22 -0700</bug_when>
    <thetext>Created attachment 256499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108304</commentid>
    <comment_count>20</comment_count>
      <attachid>256499</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-07-09 12:56:14 -0700</bug_when>
    <thetext>Comment on attachment 256499
Patch

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

r=me

&gt; Source/WebCore/platform/mediastream/MediaDevicesPrivate.cpp:47
&gt; +        TrackSourceInfo* trackInfo = device.get();

Do you really need this temporary? I would have expected &quot;trackInfo-&gt;kind()&quot; and &quot;device-&gt;kind()&quot; to be the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108330</commentid>
    <comment_count>21</comment_count>
      <attachid>256499</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 13:48:22 -0700</bug_when>
    <thetext>Comment on attachment 256499
Patch

Clearing flags on attachment: 256499

Committed r186608: &lt;http://trac.webkit.org/changeset/186608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108331</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 13:48:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255887</attachid>
            <date>2015-06-30 18:37:22 -0700</date>
            <delta_ts>2015-07-01 11:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150630183628.patch</filename>
            <type>text/plain</type>
            <size>15528</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYmQxNGQ0MjA1YzYzZTNkOTgzM2IxNTQ4MmQwNWY2
MmVjOTI2MTFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxl
TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZUluZm8uaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGU6On5NZWRpYURldmljZXNQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZGVkIHNvdXJjZXMgdG8gYnVpbGQgZmlsZQorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tTb3VyY2VJbmZvOjpncm91cElkKTogQWRkZWQgZ3JvdXBJZCBzdHJpbmcK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6ZGV2aWNlSWQpOiBBZGRlZCBkZXZp
Y2VJZCBzdHJpbmcKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6VHJhY2tTb3Vy
Y2VJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdldFNvdXJjZXNJbmZvKToKKwogMjAxNS0wNi0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IEd0ayBhbmQgRUZMIGJ1aWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
SW5mby5oCmluZGV4IDM3ZTllMGIzZTdiYjYwYzE3NDNjMmM0YWU3N2Y4ZTFiNmE5ZmQzMWIuLmZj
MjVjZmNmY2E1YjBjZWNhYzQ5Mzg5OTU4YTNkOTRiNmYyMjhlOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFEZXZpY2VJbmZvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbV9sYWJlbDsKLSAg
ICBjb25zdCBTdHJpbmcmIG1fZGV2aWNlSWQ7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2dyb3VwSWQ7
Ci0gICAgY29uc3QgU3RyaW5nJiBtX2tpbmQ7CisgICAgY29uc3QgU3RyaW5nIG1fbGFiZWw7Cisg
ICAgY29uc3QgU3RyaW5nIG1fZGV2aWNlSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fZ3JvdXBJZDsK
KyAgICBjb25zdCBTdHJpbmcgbV9raW5kOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThiOWQ3NWU0NWRhYWNiYTJjZmRkOGNmZDQ0MTVkZjMwN2U1ZWI3NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlc1ByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYURldmljZXNQcml2YXRlOjpNZWRp
YURldmljZXNQcml2YXRlKCkKK3sKK30KKworUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IE1l
ZGlhRGV2aWNlc1ByaXZhdGU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFEZXZpY2VzUHJpdmF0ZSgpKTsKK30KKworVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUlu
Zm8+PiBNZWRpYURldmljZXNQcml2YXRlOjphdmFpbGFibGVNZWRpYURldmljZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNl
SW5mbz4+IGNhcHR1cmVkRGV2aWNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmdldFNvdXJjZXNJbmZvKCIiKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5m
bz4+IG1lZGlhRGV2aWNlc0luZm87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYXB0dXJl
ZERldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGNhcHR1cmVkRGV2aWNlc1tpXS5n
ZXQoKS0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8pIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxNZWRpYURldmljZUluZm8+IG1lZGlhRGV2aWNlSW5mbyA9IE1lZGlh
RGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIGNhcHR1cmVkRGV2aWNlc1tpXS5nZXQoKS0+bGFi
ZWwoKSwgY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpLT5kZXZpY2VJZCgpLCBjYXB0dXJlZERldmlj
ZXNbaV0uZ2V0KCktPmdyb3VwSWQoKSwgImF1ZGlvaW5wdXQiKTsKKyAgICAgICAgICAgIG1lZGlh
RGV2aWNlc0luZm8uYXBwZW5kKG1lZGlhRGV2aWNlSW5mbyk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPiBtZWRpYURldmljZUluZm8gPSBNZWRp
YURldmljZUluZm86OmNyZWF0ZShjb250ZXh0LCBjYXB0dXJlZERldmljZXNbaV0uZ2V0KCktPmxh
YmVsKCksIGNhcHR1cmVkRGV2aWNlc1tpXS5nZXQoKS0+ZGV2aWNlSWQoKSwgY2FwdHVyZWREZXZp
Y2VzW2ldLmdldCgpLT5ncm91cElkKCksICJ2aWRlb2lucHV0Iik7CisgICAgICAgICAgICBtZWRp
YURldmljZXNJbmZvLmFwcGVuZChtZWRpYURldmljZUluZm8pOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBtZWRpYURldmljZXNJbmZvOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYjZhN2Q3M2YyMjZhYzg4MDVjNzY4NTQwMTc5MDA0NWRhYWYzYzBj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXNQcml2YXRlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYURldmljZXNQcml2
YXRlX2gKKyNkZWZpbmUgTWVkaWFEZXZpY2VzUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlSW5mby5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFEZXZpY2VzUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhRGV2aWNlc1ByaXZhdGU+IHsKK3B1YmxpYzoKKyAgICBNZWRpYURldmljZXNQcml2
YXRlKCk7CisKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IGNyZWF0ZSgp
OworCisgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VzUHJpdmF0ZSgpIHsgfQorCisgICAgdmlydHVh
bCBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGF2YWlsYWJsZU1lZGlhRGV2aWNlcyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjZW5kaWYgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZV9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTQx
NDVlZjY3MGI3M2ViMmI5NmVmNzZkYjU3YjY4ZTM2Y2Y5NzRjMS4uNzU5ZjU1ZmM2ZDczN2I2N2Ey
YzBhMzY0OWU2OGUzZGRkODVjNWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM2LDYgKzYzNiw4IEBACiAJCTE0RkZFMzFE
MEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1
IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHAgKi87IH07CiAJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MTQ1QjhG
MUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKKwkJMTU5MzlGOTYx
QjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFE
IC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovOyB9OworCQkxNTkzOUY5NzFCNDMyRjJGMDBE
MkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTU5MzlGOTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2
aWNlc1ByaXZhdGUuaCAqLzsgfTsKIAkJMTU5QUU4MkIxQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlh
RGV2aWNlSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNTlBRTgyQTFCM0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZvLmNwcCAqLzsg
fTsKIAkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDhBMTAwRDNDNkEw
MDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi87IH07CiAJCTE1Qzc3MDkzMTAwRDNDQTgwMDVC
QTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3Rh
dGUuaCAqLzsgfTsKQEAgLTc3NDksNiArNzc1MSw4IEBACiAJCTE0RkZFMzFDMEFFMTk2MzMwMDEz
NkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE1MTQ1QjhGMUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE1MTQ1QjkxMUIzQTFENEMwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmlj
ZXNQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwOyBwYXRoID0gLi4vLi4vTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXNQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTU5MzlG
OTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBwYXRoID0gLi4vLi4v
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE1OUFFODJBMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUlu
Zm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFEZXZpY2VJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwODkxMDBEM0M2QTAw
NUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZhbGlk
aXR5U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzA4QTEwMEQz
QzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWxpZGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDgwMyw2ICsxNDgwNyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0Ew
MDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRp
YUNvbnN0cmFpbnRzLmggKi8sCisJCQkJMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwICovLAorCQkJCTE1OTM5Rjk1MUI0MzJGMkYwMEQyQzFBRCAvKiBN
ZWRpYURldmljZXNQcml2YXRlLmggKi8sCiAJCQkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8q
IE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi8sCiAJCQkJMDcyMjFC
QTAxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCAqLywKIAkJ
CQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLywK
QEAgLTIzODI3LDYgKzIzODMzLDcgQEAKIAkJCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyog
QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM2MEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNh
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNTkzOUY5NzFCNDMyRjJGMDBEMkMxQUQgLyogTWVk
aWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAw
NTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1NTgsNiArMjg1NjUsNyBAQAogCQkJ
CUE0M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJFNEUwMDE1NzI4OCAvKiBI
VE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTU5MzlGOTYxQjQz
MkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3N0IzODc0MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVu
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUQ5MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBI
VE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKaW5kZXggYmUxZjJjNWNhZTg0OGM2ODQyNmUw
NmU0OGM2MjU2NWMwYWFhOTVlMi4uODE5ODkxMTQ0MDNjOWM3OGQ1YTRjMWFlMzZlZDVmZGI2YTgw
MzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
LmgKQEAgLTQzLDggKzQzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQsIGxhYmVsKSk7CiAgICAgfQogCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwgbGFi
ZWwsIGdyb3VwSWQsIGRldmljZUlkKSk7CisgICAgfQorCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxh
YmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Z3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAgU291cmNl
S2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAKIHByaXZhdGU6CkBAIC01NCw3
ICs2MSwxOCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgewogICAg
IH0KLSAgICAKKworICAgIFRyYWNrU291cmNlSW5mbyhjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBT
b3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0
cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCkKKyAgICAgICAgOiBt
X2dyb3VwSWQoZ3JvdXBJZCkKKyAgICAgICAgLCBtX2RldmljZUlkKGRldmljZUlkKQorICAgICAg
ICAsIG1faWQoaWQpCisgICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgICwgbV9sYWJlbChs
YWJlbCkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKKyAgICBB
dG9taWNTdHJpbmcgbV9kZXZpY2VJZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBTb3Vy
Y2VLaW5kIG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0KaW5kZXggZmQ0NTA1ZGM3MWMwOWM5MWY3NzhjMzU4MzUxMTQwMDY2
NjNhZjA4Zi4uMzZhYzRjMzljZDcyZmIxYjdlZDlkZDE0YzA0Yjc1NmI0YjA1ZjJlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTMzNyw5ICszMzcsOSBAQCBWZWN0b3I8
UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJj
ZXNJbmZvKGNvbnN0IFN0cgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGRl
dmljZXNbaV0ubV92aWRlb1NvdXJjZSkKLSAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChU
cmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2VJZCwgVHJhY2tT
b3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUpKTsKKyAgICAgICAgICAgIHNv
dXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fdmlk
ZW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUs
IGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlEKSk7CiAg
ICAgICAgIGlmIChkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2UpCi0gICAgICAgICAgICBzb3VyY2Vz
SW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX2F1ZGlvU291
cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRldmljZS5sb2NhbGl6ZWROYW1lKSk7Cisg
ICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2
aWNlc1tpXS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRldmljZS5s
b2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlc1tpXS5tX2NhcHR1cmVE
ZXZpY2VJRCkpOwogICAgIH0KICAgICAKICAgICBMT0coTWVkaWEsICJBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyglcCksIGZvdW5kICVkIGFjdGl2ZSBkZXZpY2VzIiwgdGhp
cywgc291cmNlc0luZm8uc2l6ZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255932</attachid>
            <date>2015-07-01 11:01:49 -0700</date>
            <delta_ts>2015-07-01 11:20:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701110056.patch</filename>
            <type>text/plain</type>
            <size>15648</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYmQxNGQ0MjA1YzYzZTNkOTgzM2IxNTQ4MmQwNWY2
MmVjOTI2MTFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxl
TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZUluZm8uaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGU6On5NZWRpYURldmljZXNQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZGVkIHNvdXJjZXMgdG8gYnVpbGQgZmlsZQorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tTb3VyY2VJbmZvOjpncm91cElkKTogQWRkZWQgZ3JvdXBJZCBzdHJpbmcK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6ZGV2aWNlSWQpOiBBZGRlZCBkZXZp
Y2VJZCBzdHJpbmcKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6VHJhY2tTb3Vy
Y2VJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdldFNvdXJjZXNJbmZvKToKKwogMjAxNS0wNi0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IEd0ayBhbmQgRUZMIGJ1aWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
SW5mby5oCmluZGV4IDM3ZTllMGIzZTdiYjYwYzE3NDNjMmM0YWU3N2Y4ZTFiNmE5ZmQzMWIuLmZj
MjVjZmNmY2E1YjBjZWNhYzQ5Mzg5OTU4YTNkOTRiNmYyMjhlOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFEZXZpY2VJbmZvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbV9sYWJlbDsKLSAg
ICBjb25zdCBTdHJpbmcmIG1fZGV2aWNlSWQ7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2dyb3VwSWQ7
Ci0gICAgY29uc3QgU3RyaW5nJiBtX2tpbmQ7CisgICAgY29uc3QgU3RyaW5nIG1fbGFiZWw7Cisg
ICAgY29uc3QgU3RyaW5nIG1fZGV2aWNlSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fZ3JvdXBJZDsK
KyAgICBjb25zdCBTdHJpbmcgbV9raW5kOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThiOWQ3NWU0NWRhYWNiYTJjZmRkOGNmZDQ0MTVkZjMwN2U1ZWI3NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlc1ByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYURldmljZXNQcml2YXRlOjpNZWRp
YURldmljZXNQcml2YXRlKCkKK3sKK30KKworUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IE1l
ZGlhRGV2aWNlc1ByaXZhdGU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFEZXZpY2VzUHJpdmF0ZSgpKTsKK30KKworVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUlu
Zm8+PiBNZWRpYURldmljZXNQcml2YXRlOjphdmFpbGFibGVNZWRpYURldmljZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNl
SW5mbz4+IGNhcHR1cmVkRGV2aWNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmdldFNvdXJjZXNJbmZvKCIiKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5m
bz4+IG1lZGlhRGV2aWNlc0luZm87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYXB0dXJl
ZERldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGNhcHR1cmVkRGV2aWNlc1tpXS5n
ZXQoKS0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8pIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxNZWRpYURldmljZUluZm8+IG1lZGlhRGV2aWNlSW5mbyA9IE1lZGlh
RGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIGNhcHR1cmVkRGV2aWNlc1tpXS5nZXQoKS0+bGFi
ZWwoKSwgY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpLT5kZXZpY2VJZCgpLCBjYXB0dXJlZERldmlj
ZXNbaV0uZ2V0KCktPmdyb3VwSWQoKSwgImF1ZGlvaW5wdXQiKTsKKyAgICAgICAgICAgIG1lZGlh
RGV2aWNlc0luZm8uYXBwZW5kKG1lZGlhRGV2aWNlSW5mbyk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPiBtZWRpYURldmljZUluZm8gPSBNZWRp
YURldmljZUluZm86OmNyZWF0ZShjb250ZXh0LCBjYXB0dXJlZERldmljZXNbaV0uZ2V0KCktPmxh
YmVsKCksIGNhcHR1cmVkRGV2aWNlc1tpXS5nZXQoKS0+ZGV2aWNlSWQoKSwgY2FwdHVyZWREZXZp
Y2VzW2ldLmdldCgpLT5ncm91cElkKCksICJ2aWRlb2lucHV0Iik7CisgICAgICAgICAgICBtZWRp
YURldmljZXNJbmZvLmFwcGVuZChtZWRpYURldmljZUluZm8pOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBtZWRpYURldmljZXNJbmZvOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYWViNGM1NGVkNjc5OTBkZGM5MjlhMzczOGM4MTExZTQyZWQ5NzJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXNQcml2YXRlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYURldmljZXNQcml2
YXRlX2gKKyNkZWZpbmUgTWVkaWFEZXZpY2VzUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlSW5mby5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhRGV2aWNlc1ByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYURldmljZXNQcml2YXRlPiB7CitwdWJsaWM6CisgICAgTWVkaWFEZXZpY2VzUHJpdmF0
ZSgpOworCisgICAgc3RhdGljIFJlZlB0cjxNZWRpYURldmljZXNQcml2YXRlPiBjcmVhdGUoKTsK
KworICAgIHZpcnR1YWwgfk1lZGlhRGV2aWNlc1ByaXZhdGUoKSB7IH0KKworICAgIHZpcnR1YWwg
VmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBhdmFpbGFibGVNZWRpYURldmljZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0MTQ1
ZWY2NzBiNzNlYjJiOTZlZjc2ZGI1N2I2OGUzNmNmOTc0YzEuLjc1OWY1NWZjNmQ3MzdiNjdhMmMw
YTM2NDllNjhlM2RkZDg1YzVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzNiw2ICs2MzYsOCBAQAogCQkxNEZGRTMxRDBB
RTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJGNSAv
KiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
ICovOyB9OwogCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTE0NUI4RjFC
M0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggKi87IH07CisJCTE1OTM5Rjk2MUI0
MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAv
KiBNZWRpYURldmljZXNQcml2YXRlLmNwcCAqLzsgfTsKKwkJMTU5MzlGOTcxQjQzMkYyRjAwRDJD
MUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE1OTM5Rjk1MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmlj
ZXNQcml2YXRlLmggKi87IH07CiAJCTE1OUFFODJCMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURl
dmljZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi87IH07
CiAJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA4QTEwMEQzQzZBMDA1
QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovOyB9OwogCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEy
NjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNUM3NzA5MTEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRl
LmggKi87IH07CkBAIC03NzQ5LDYgKzc3NTEsOCBAQAogCQkxNEZGRTMxQzBBRTE5NjMzMDAxMzZC
RjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNTE0NUI4RjFCM0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNTE0NUI5MTFCM0ExRDRDMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYURldmljZUluZm8uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNTkzOUY5NDFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2Vz
UHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYURl
dmljZXNQcml2YXRlLmNwcDsgcGF0aCA9IC4uLy4uL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1OTM5Rjk1
MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRGV2aWNlc1ByaXZhdGUuaDsgcGF0aCA9IC4uLy4uL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNTlBRTgyQTFCM0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5m
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1Qzc3MDg5MTAwRDNDNkEwMDVC
QTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWYWxpZGl0
eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwOEExMDBEM0M2
QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmFsaWRpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4
MDMsNiArMTQ4MDcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAw
NEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFD
b25zdHJhaW50cy5oICovLAorCQkJCTE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURl
dmljZXNQcml2YXRlLmNwcCAqLywKKwkJCQkxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQgLyogTWVk
aWFEZXZpY2VzUHJpdmF0ZS5oICovLAogCQkJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAvKiBN
ZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovLAogCQkJCTA3MjIxQkEw
MTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJ
MDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgKi8sCkBA
IC0yMzgyNyw2ICsyMzgzMyw3IEBACiAJCQkJMjlBQ0IyMTIxNDNFNzEyODAwNkJDQTVGIC8qIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzNjBGQkI5
QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTQwOUM5ODUxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTU5MzlGOTcxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlh
RGV2aWNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM5MEZCQjlDMUQwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjk0ODlGQzcxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTU4LDYgKzI4NTY1LDcgQEAKIAkJCQlB
NDNCRjU5ODExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOENGRjdBNTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3RlRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQyMjNGRDE2QjUyRTRFMDAxNTcyODggLyogSFRN
TFJlc291cmNlUHJlbG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1OTM5Rjk2MUI0MzJG
MkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4NzFEQzIyMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzdCMzg3NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlEOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCmluZGV4IGJlMWYyYzVjYWU4NDhjNjg0MjZlMDZl
NDhjNjI1NjVjMGFhYTk1ZTIuLjgxOTg5MTE0NDAzYzljNzhkNWE0YzFhZTM2ZWQ1ZmRiNmE4MDM0
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
CkBAIC00Myw4ICs0MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VHJhY2tTb3VyY2VJbmZvKGlkLCBraW5kLCBsYWJlbCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQsIGxhYmVs
LCBncm91cElkLCBkZXZpY2VJZCkpOworICAgIH0KKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdy
b3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQogICAgIFNvdXJjZUtp
bmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogCiBwcml2YXRlOgpAQCAtNTQsNyAr
NjEsMTggQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgIHsKICAgICB9
Ci0gICAgCisKKyAgICBUcmFja1NvdXJjZUluZm8oY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU291
cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJp
bmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpCisgICAgICAgIDogbV9n
cm91cElkKGdyb3VwSWQpCisgICAgICAgICwgbV9kZXZpY2VJZChkZXZpY2VJZCkKKyAgICAgICAg
LCBtX2lkKGlkKQorICAgICAgICAsIG1fa2luZChraW5kKQorICAgICAgICAsIG1fbGFiZWwobGFi
ZWwpCisgICAgeworICAgIH0KKworICAgIEF0b21pY1N0cmluZyBtX2dyb3VwSWQ7CisgICAgQXRv
bWljU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAgU291cmNl
S2luZCBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGZkNDUwNWRjNzFjMDljOTFmNzc4YzM1ODM1MTE0MDA2NjYz
YWYwOGYuLjFhZGIyMWY4ZWRkNTRlODA1ZjJmYzQwNDQyZTEzYjJhMTMwZTJlY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0zMzUsMTEgKzMzNSwxMSBAQCBWZWN0b3I8
UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJj
ZXNJbmZvKGNvbnN0IFN0cgogCiAgICAgICAgIGlmICghZGV2aWNlc1tpXS5tX2VuYWJsZWQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAvLyBGSVhNRTogQ2hhbmdlIGdyb3VwSUQg
ZnJvbSBsb2NhbGl6ZWROYW1lIHRvIHNvbWV0aGluZyBtb3JlIG1lYW5pbmdmdWwKICAgICAgICAg
aWYgKGRldmljZXNbaV0ubV92aWRlb1NvdXJjZSkKLSAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFw
cGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2VJZCwg
VHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUpKTsKKyAgICAgICAg
ICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ld
Lm1fdmlkZW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXpl
ZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlE
KSk7CiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2UpCi0gICAgICAgICAgICBz
b3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX2F1
ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRldmljZS5sb2NhbGl6ZWROYW1l
KSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVh
dGUoZGV2aWNlc1tpXS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRl
dmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlc1tpXS5tX2Nh
cHR1cmVEZXZpY2VJRCkpOwogICAgIH0KICAgICAKICAgICBMT0coTWVkaWEsICJBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyglcCksIGZvdW5kICVkIGFjdGl2ZSBkZXZpY2Vz
IiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255934</attachid>
            <date>2015-07-01 11:20:22 -0700</date>
            <delta_ts>2015-07-01 11:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701111929.patch</filename>
            <type>text/plain</type>
            <size>17902</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAppbmRl
eCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi43YjQ1NDlhODA4N2Qw
NGRkODI5NTIyNjA3NjhhYTE5ZWZiMTIzYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQyLDE4ICs0MiwyMiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZvKCkgeyB9CiAgICAg
Ci0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9sYWJlbDsgfQotICAg
IGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2aWNlSWQ7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3JvdXBJZDsgfQotICAg
IGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9Ci0gICAgCisgICAg
Y29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBhdWRpb0lucHV0VHlwZSgpIHsgcmV0dXJuICJhdWRpb2lucHV0IjsgfQor
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXVkaW9PdXRwdXRUeXBlKCkgeyByZXR1cm4gImF1ZGlv
b3V0cHV0IjsgfQorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgdmlkZW9JbnB1dFR5cGUoKSB7IHJl
dHVybiAidmlkZW9pbnB1dCI7IH0KKwogcHJpdmF0ZToKICAgICBNZWRpYURldmljZUluZm8oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtX2xhYmVsOwot
ICAgIGNvbnN0IFN0cmluZyYgbV9kZXZpY2VJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fZ3JvdXBJ
ZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV9sYWJlbDsK
KyAgICBjb25zdCBTdHJpbmcgbV9kZXZpY2VJZDsKKyAgICBjb25zdCBTdHJpbmcgbV9ncm91cElk
OworICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggNTNhMTc2ZTdj
ZGYxY2Y5MWNlNmJkYmZhOWNkNGY4NWFhOWIzZDRlOS4uYjc3NjNjNjdlZTFmZGQ4NTk0MjE2NzNl
OGIyMGQ4MTY4ZTM5MGIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBNZWRpYURl
dmljZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQcm9taXNlJiYg
cHJvbWlzZSwgRXgKICAgICBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydChkb2N1bWVudCgpLCBvcHRp
b25zLCBXVEY6Om1vdmUocHJvbWlzZSksIGVjKTsKIH0KIAordm9pZCBNZWRpYURldmljZXM6OmVu
dW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0Cit7CisgICAgCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCAzNzU4YTEwODEyM2JkM2EwN2Y5Y2FjM2FmZjQ3
NDVkZDk3ZmJlNjRiLi5iZDkwZjRlNTE3YjY0OWYyYzA0ZDIwNGFkOGNmMmJkYjQ5NTkyNjhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VJ
bmZvLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTksNiArNjAsOSBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiBET01Qcm9taXNlV2l0aENhbGxiYWNrPFJlZlB0cjxNZWRpYVN0cmVhbT4s
IFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj4+IFByb21pc2U7CiAgICAgdm9pZCBnZXRV
c2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYsIFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpIGNv
bnN0OwogCisgICAgdHlwZWRlZiBET01Qcm9taXNlV2l0aENhbGxiYWNrPFJlZlB0cjxWZWN0b3I8
UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+PiwgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Pj4gRW51bWVyYXRlRGV2aWNlc1Byb21pc2U7CisgICAgdm9pZCBlbnVtZXJhdGVEZXZpY2VzKEVu
dW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBNZWRpYURldmljZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlc1ByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZmUzNjU3ZTNkYjg1ZjgwNjJiNTZk
MjhiYWYwOGM3ODk0NzY0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
IgorI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisKK1JlZlB0
cjxNZWRpYURldmljZXNQcml2YXRlPiBNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlc1ByaXZhdGUoKSk7Cit9CisKK1Zl
Y3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxh
YmxlTWVkaWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
VmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBjYXB0dXJlZERldmljZXMgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbygiIik7CisgICAgVmVj
dG9yPFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBtZWRpYURldmljZXNJbmZvOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2FwdHVyZWREZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAg
IFRyYWNrU291cmNlSW5mbyogdHJhY2tJbmZvID0gY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpOwor
ICAgICAgICBTdHJpbmcgZGV2aWNlVHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291
cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRU
eXBlKCkgOiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlh
RGV2aWNlc0luZm8uYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIHRyYWNr
SW5mby0+bGFiZWwoKSwgdHJhY2tJbmZvLT5kZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQo
KSwgZGV2aWNlVHlwZSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5m
bzsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlYjRjNTRl
ZDY3OTkwZGRjOTI5YTM3MzhjODExMWU0MmVkOTcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisKKyNpZm5kZWYgTWVkaWFEZXZpY2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNl
c1ByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURl
dmljZXNQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzUHJpdmF0ZT4gewor
cHVibGljOgorICAgIE1lZGlhRGV2aWNlc1ByaXZhdGUoKTsKKworICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFEZXZpY2VzUHJpdmF0ZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYURldmlj
ZXNQcml2YXRlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJ
bmZvPj4gYXZhaWxhYmxlTWVkaWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBNZWRp
YURldmljZXNQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NDE0NWVmNjcwYjczZWIyYjk2ZWY3NmRiNTdiNjhl
MzZjZjk3NGMxLi43NTlmNTVmYzZkNzM3YjY3YTJjMGEzNjQ5ZTY4ZTNkZGQ4NWM1ZDE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02MzYsNiArNjM2LDggQEAKIAkJMTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEZGRTMx
RTBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUMwQUUxOTYzMzAwMTM2
QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJMTUxNDVCOTAxQjNBMUNF
MDAwNjYyQkY3IC8qIE1lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTUxNDVCOEYxQjNBMUIzRTAwNjYyQkY3IC8qIE1lZGlhRGV2
aWNlSW5mby5oICovOyB9OworCQkxNTkzOUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNTkzOUY5NDFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAg
Ki87IH07CisJCTE1OTM5Rjk3MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTkzOUY5
NTFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovOyB9OwogCQkxNTlB
RTgyQjFCM0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZvLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1OUFFODJBMUIzQTQwMkYwMDM3NDc4
QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovOyB9OwogCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEy
NjcgLyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTVDNzcwOEExMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAq
LzsgfTsKIAkJMTVDNzcwOTMxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOTExMDBE
M0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oICovOyB9OwpAQCAtNzc0OSw2ICs3NzUx
LDggQEAKIAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOEYxQjNBMUIz
RTAwNjYyQkY3IC8qIE1lZGlhRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmlj
ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOTExQjNBMUQ0QzAw
NjYyQkY3IC8qIE1lZGlhRGV2aWNlSW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVk
aWFEZXZpY2VJbmZvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTU5MzlGOTQx
QjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHA7IHBhdGggPSAu
Li8uLi9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYURl
dmljZXNQcml2YXRlLmg7IHBhdGggPSAuLi8uLi9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU5QUU4MkExQjNB
NDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNUM3NzA4OTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmFsaWRpdHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE1Qzc3MDhBMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkaXR5U3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODAzLDYgKzE0ODA3LDggQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDcy
MjFCOTkxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKKwkJCQkxNTkz
OUY5NDFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi8sCisJCQkJ
MTU5MzlGOTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLywKIAkJ
CQkwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlk
YXRpb25DbGllbnQuaCAqLywKIAkJCQkwNzIyMUJBMDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudC5oICovLAogCQkJCTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAv
KiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovLApAQCAtMjM4MjcsNiArMjM4MzMsNyBAQAogCQkJ
CTI5QUNCMjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxp
dHlPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAv
KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE1
OTM5Rjk3MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8q
IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NDg5RkM3MTJD
MDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODU1OCw2ICsyODU2NSw3IEBACiAJCQkJQTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8q
IEhUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1
Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThEMjIzRkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxNTkzOUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2Vz
UHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyMjBBMTUyMDU3MDBCMTJBNjgg
LyogSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzQxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgxMzY5RDkwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aAppbmRleCBiZTFmMmM1Y2FlODQ4YzY4NDI2ZTA2ZTQ4YzYyNTY1YzBhYWE5NWUyLi44MTk4OTEx
NDQwM2M5Yzc4ZDVhNGMxYWUzNmVkNWZkYjZhODAzNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaApAQCAtNDMsOCArNDMsMTUgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwg
bGFiZWwpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBkZXZpY2VJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VHJhY2tTb3VyY2VJbmZvKGlkLCBraW5kLCBsYWJlbCwgZ3JvdXBJZCwgZGV2aWNlSWQpKTsKKyAg
ICB9CisKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVs
OyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9n
cm91cElkOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlSWQ7IH0KICAgICBTb3VyY2VLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KIAogcHJpdmF0ZToKQEAgLTU0LDcgKzYxLDE4IEBAIHByaXZhdGU6CiAgICAgICAg
ICwgbV9sYWJlbChsYWJlbCkKICAgICB7CiAgICAgfQotICAgIAorCisgICAgVHJhY2tTb3VyY2VJ
bmZvKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNT
dHJpbmcmIGRldmljZUlkKQorICAgICAgICA6IG1fZ3JvdXBJZChncm91cElkKQorICAgICAgICAs
IG1fZGV2aWNlSWQoZGV2aWNlSWQpCisgICAgICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBtX2tp
bmQoa2luZCkKKyAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQorICAgIHsKKyAgICB9CisKKyAgICBB
dG9taWNTdHJpbmcgbV9ncm91cElkOworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwogICAg
IEF0b21pY1N0cmluZyBtX2lkOwogICAgIFNvdXJjZUtpbmQgbV9raW5kOwogICAgIEF0b21pY1N0
cmluZyBtX2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBmZDQ1
MDVkYzcxYzA5YzkxZjc3OGMzNTgzNTExNDAwNjY2M2FmMDhmLi4xYWRiMjFmOGVkZDU0ZTgwNWYy
ZmM0MDQ0MmUxM2IyYTEzMGUyZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQpAQCAtMzM1LDExICszMzUsMTEgQEAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHIKIAogICAgICAg
ICBpZiAoIWRldmljZXNbaV0ubV9lbmFibGVkKQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAg
ICAgICAgLy8gRklYTUU6IENoYW5nZSBncm91cElEIGZyb20gbG9jYWxpemVkTmFtZSB0byBzb21l
dGhpbmcgbW9yZSBtZWFuaW5nZnVsCiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fdmlkZW9Tb3Vy
Y2UpCi0gICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVh
dGUoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sIGRl
dmljZS5sb2NhbGl6ZWROYW1lKSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJh
Y2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291
cmNlSW5mbzo6VmlkZW8sIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFt
ZSwgZGV2aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRCkpOwogICAgICAgICBpZiAoZGV2aWNlc1tp
XS5tX2F1ZGlvU291cmNlKQotICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291
cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJjZUlu
Zm86OkF1ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0lu
Zm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJj
ZUlkLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNl
LmxvY2FsaXplZE5hbWUsIGRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICB9CiAg
ICAgCiAgICAgTE9HKE1lZGlhLCAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0lu
Zm8oJXApLCBmb3VuZCAlZCBhY3RpdmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJbmZvLnNpemUo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255935</attachid>
            <date>2015-07-01 11:22:57 -0700</date>
            <delta_ts>2015-07-01 11:40:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701112204.patch</filename>
            <type>text/plain</type>
            <size>16226</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAppbmRl
eCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi43YjQ1NDlhODA4N2Qw
NGRkODI5NTIyNjA3NjhhYTE5ZWZiMTIzYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQyLDE4ICs0MiwyMiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZvKCkgeyB9CiAgICAg
Ci0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9sYWJlbDsgfQotICAg
IGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2aWNlSWQ7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3JvdXBJZDsgfQotICAg
IGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9Ci0gICAgCisgICAg
Y29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBhdWRpb0lucHV0VHlwZSgpIHsgcmV0dXJuICJhdWRpb2lucHV0IjsgfQor
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYXVkaW9PdXRwdXRUeXBlKCkgeyByZXR1cm4gImF1ZGlv
b3V0cHV0IjsgfQorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgdmlkZW9JbnB1dFR5cGUoKSB7IHJl
dHVybiAidmlkZW9pbnB1dCI7IH0KKwogcHJpdmF0ZToKICAgICBNZWRpYURldmljZUluZm8oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtX2xhYmVsOwot
ICAgIGNvbnN0IFN0cmluZyYgbV9kZXZpY2VJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fZ3JvdXBJ
ZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV9sYWJlbDsK
KyAgICBjb25zdCBTdHJpbmcgbV9kZXZpY2VJZDsKKyAgICBjb25zdCBTdHJpbmcgbV9ncm91cElk
OworICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40M2ZlMzY1N2UzZGI4NWY4MDYyYjU2ZDI4YmFmMDhjNzg5NDc2NDgyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNQcml2YXRlLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJBVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhRGV2aWNlc1ByaXZhdGU6Ok1l
ZGlhRGV2aWNlc1ByaXZhdGUoKQoreworfQorCitSZWZQdHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4g
TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYURldmljZXNQcml2YXRlKCkpOworfQorCitWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNl
SW5mbz4+IE1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNlcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPj4gY2FwdHVyZWREZXZpY2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuZ2V0U291cmNlc0luZm8oIiIpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJ
bmZvPj4gbWVkaWFEZXZpY2VzSW5mbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhcHR1
cmVkRGV2aWNlcy5zaXplKCk7IGkrKykgeworICAgICAgICBUcmFja1NvdXJjZUluZm8qIHRyYWNr
SW5mbyA9IGNhcHR1cmVkRGV2aWNlc1tpXS5nZXQoKTsKKyAgICAgICAgU3RyaW5nIGRldmljZVR5
cGUgPSB0cmFja0luZm8tPmtpbmQoKSA9PSBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1
ZGlvID8gTWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSgpIDogTWVkaWFEZXZpY2VJbmZv
Ojp2aWRlb0lucHV0VHlwZSgpOworICAgICAgICBtZWRpYURldmljZXNJbmZvLmFwcGVuZChNZWRp
YURldmljZUluZm86OmNyZWF0ZShjb250ZXh0LCB0cmFja0luZm8tPmxhYmVsKCksIHRyYWNrSW5m
by0+ZGV2aWNlSWQoKSwgdHJhY2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIG1lZGlhRGV2aWNlc0luZm87Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZWI0YzU0ZWQ2Nzk5MGRkYzkyOWEzNzM4YzgxMTFl
NDJlZDk3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIE1lZGlhRGV2
aWNlc1ByaXZhdGVfaAorI2RlZmluZSBNZWRpYURldmljZXNQcml2YXRlX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiTWVkaWFEZXZpY2VJbmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFEZXZpY2VzUHJpdmF0ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhRGV2aWNlc1ByaXZhdGU+IHsKK3B1YmxpYzoKKyAgICBNZWRpYURldmlj
ZXNQcml2YXRlKCk7CisKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IGNy
ZWF0ZSgpOworCisgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VzUHJpdmF0ZSgpIHsgfQorCisgICAg
dmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGF2YWlsYWJsZU1lZGlhRGV2
aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZV9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOTQxNDVlZjY3MGI3M2ViMmI5NmVmNzZkYjU3YjY4ZTM2Y2Y5NzRjMS4uNzU5ZjU1ZmM2ZDcz
N2I2N2EyYzBhMzY0OWU2OGUzZGRkODVjNWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM2LDYgKzYzNiw4IEBACiAJCTE0
RkZFMzFEMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAw
MTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAgKi87IH07CiAJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmlj
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1
MTQ1QjhGMUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKKwkJMTU5
MzlGOTYxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU5MzlGOTQxQjQzMkYyRjAw
RDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovOyB9OworCQkxNTkzOUY5NzFCNDMy
RjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU5MzlGOTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1l
ZGlhRGV2aWNlc1ByaXZhdGUuaCAqLzsgfTsKIAkJMTU5QUU4MkIxQjNBNDAyRjAwMzc0NzhCIC8q
IE1lZGlhRGV2aWNlSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNTlBRTgyQTFCM0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZvLmNw
cCAqLzsgfTsKIAkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDhBMTAw
RDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi87IH07CiAJCTE1Qzc3MDkzMTAwRDND
QTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlk
aXR5U3RhdGUuaCAqLzsgfTsKQEAgLTc3NDksNiArNzc1MSw4IEBACiAJCTE0RkZFMzFDMEFFMTk2
MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE1MTQ1QjhGMUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmlj
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE1MTQ1QjkxMUIzQTFENEMwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRp
YURldmljZXNQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOyBwYXRoID0gLi4vLi4vTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTU5MzlGOTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBwYXRoID0g
Li4vLi4vTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1OUFFODJBMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURl
dmljZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFE
ZXZpY2VJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwODkxMDBE
M0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFZhbGlkaXR5U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzA4
QTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWYWxpZGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDgwMyw2ICsxNDgwNyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwNzI5QjE0RDE3
Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQwMDg0OEU1MSAv
KiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCisJCQkJMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFEIC8q
IE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovLAorCQkJCTE1OTM5Rjk1MUI0MzJGMkYwMEQyQzFB
RCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggKi8sCiAJCQkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5
RTA0IC8qIE1lZGlhU3RyZWFtQ29uc3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi8sCiAJCQkJ
MDcyMjFCQTAxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCAq
LywKIAkJCQkwNzExNTg4RjE3REY2MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cCAqLywKQEAgLTIzODI3LDYgKzIzODMzLDcgQEAKIAkJCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNB
NUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNDA5Qzk4NTExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNTkzOUY5NzFCNDMyRjJGMDBEMkMxQUQg
LyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1NTgsNiArMjg1NjUsNyBA
QAogCQkJCUE0M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVv
dGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJFNEUwMDE1NzI4
OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTU5MzlG
OTYxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODc0MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2Ny
aXB0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUQ5MDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKaW5kZXggYmUxZjJjNWNhZTg0OGM2
ODQyNmUwNmU0OGM2MjU2NWMwYWFhOTVlMi4uODE5ODkxMTQ0MDNjOWM3OGQ1YTRjMWFlMzZlZDVm
ZGI2YTgwMzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50LmgKQEAgLTQzLDggKzQzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQsIGxhYmVsKSk7CiAgICAgfQogCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25z
dCBBdG9taWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2lu
ZCwgbGFiZWwsIGdyb3VwSWQsIGRldmljZUlkKSk7CisgICAgfQorCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAg
U291cmNlS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAKIHByaXZhdGU6CkBA
IC01NCw3ICs2MSwxOCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAg
ewogICAgIH0KLSAgICAKKworICAgIFRyYWNrU291cmNlSW5mbyhjb25zdCBBdG9taWNTdHJpbmcm
IGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCkKKyAgICAg
ICAgOiBtX2dyb3VwSWQoZ3JvdXBJZCkKKyAgICAgICAgLCBtX2RldmljZUlkKGRldmljZUlkKQor
ICAgICAgICAsIG1faWQoaWQpCisgICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgICwgbV9s
YWJlbChsYWJlbCkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsK
KyAgICBBdG9taWNTdHJpbmcgbV9kZXZpY2VJZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAg
ICBTb3VyY2VLaW5kIG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggZmQ0NTA1ZGM3MWMwOWM5MWY3NzhjMzU4MzUx
MTQwMDY2NjNhZjA4Zi4uMWFkYjIxZjhlZGQ1NGU4MDVmMmZjNDA0NDJlMTNiMmExMzBlMmVjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTMzNSwxMSArMzM1LDExIEBA
IFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
Z2V0U291cmNlc0luZm8oY29uc3QgU3RyCiAKICAgICAgICAgaWYgKCFkZXZpY2VzW2ldLm1fZW5h
YmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2Ug
Z3JvdXBJRCBmcm9tIGxvY2FsaXplZE5hbWUgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmluZ2Z1bAog
ICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlKQotICAgICAgICAgICAgc291cmNl
c0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV92aWRlb1Nv
dXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkpOwor
ICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRl
dmljZXNbaV0ubV92aWRlb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZpY2Uu
bG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZXNbaV0ubV9jYXB0dXJl
RGV2aWNlSUQpKTsKICAgICAgICAgaWYgKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZSkKLSAgICAg
ICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2Vz
W2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgZGV2aWNlLmxvY2Fs
aXplZE5hbWUpKTsKKyAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUlu
Zm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpB
dWRpbywgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2Vz
W2ldLm1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgfQogICAgIAogICAgIExPRyhNZWRpYSwgIkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJWQgYWN0aXZl
IGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5mby5zaXplKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255937</attachid>
            <date>2015-07-01 11:40:43 -0700</date>
            <delta_ts>2015-07-01 11:52:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701113950.patch</filename>
            <type>text/plain</type>
            <size>17288</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
aW5kZXggZWQ2OGEyYTFhNDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uY2NiNTljODcy
ZjE0NTRmZDVmYzJkMDJhY2QzNGRlNGU1ZTBlOWExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtNDcsNiAr
NDcsMjQgQEAgTWVkaWFEZXZpY2VJbmZvOjpNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogewogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhRGV2aWNlSW5mbzo6YXVkaW9JbnB1dFR5cGUoKQoreworICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1ZGlvaW5wdXQsICgiYXVk
aW9pbnB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gYXVkaW9pbnB1dDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86
OmF1ZGlvT3V0cHV0VHlwZSgpCit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgYXVkaW9vdXRwdXQsICgiYXVkaW9vdXRwdXQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGF1ZGlvb3V0cHV0Owor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhRGV2aWNlSW5mbzo6dmlkZW9JbnB1dFR5cGUo
KQoreworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHZpZGVvb3V0cHV0LCAoInZpZGVvaW5wdXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIHZpZGVvb3V0cHV0OworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKaW5kZXggMzdlOWUwYjNlN2JiNjBjMTc0M2MyYzRh
ZTc3ZjhlMWI2YTlmZDMxYi4uMjI3NjhkYzc0ZmE5ODc3M2NjZmY2NWZjNzJmMTkwZGI0ZTYzYjE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlSW5mby5oCkBAIC00MiwxOCArNDIsMjIgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgfk1lZGlhRGV2aWNlSW5mbygpIHsgfQogICAgIAotICAgIGNvbnN0IFN0cmluZyYgbGFiZWwo
KSBjb25zdCB7cmV0dXJuIG1fbGFiZWw7IH0KLSAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkg
Y29uc3Qge3JldHVybiBtX2RldmljZUlkOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBncm91cElkKCkg
Y29uc3Qge3JldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIGtpbmQoKSBjb25z
dCB7cmV0dXJuIG1fa2luZDsgfQotICAgIAorICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1ZGlv
SW5wdXRUeXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXVkaW9PdXRwdXRU
eXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdmlkZW9JbnB1dFR5cGUoKTsK
KwogcHJpdmF0ZToKICAgICBNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtX2xhYmVsOwotICAgIGNvbnN0IFN0cmluZyYgbV9k
ZXZpY2VJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fZ3JvdXBJZDsKLSAgICBjb25zdCBTdHJpbmcm
IG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV9sYWJlbDsKKyAgICBjb25zdCBTdHJpbmcgbV9k
ZXZpY2VJZDsKKyAgICBjb25zdCBTdHJpbmcgbV9ncm91cElkOworICAgIGNvbnN0IFN0cmluZyBt
X2tpbmQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2ZlMzY1N2Uz
ZGI4NWY4MDYyYjU2ZDI4YmFmMDhjNzg5NDc2NDgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcApAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VzUHJpdmF0
ZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK01lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZhdGUoKQor
eworfQorCitSZWZQdHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURldmljZXNQcml2YXRl
KCkpOworfQorCitWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlc1By
aXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQoreworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gY2FwdHVyZWREZXZp
Y2VzID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8o
IiIpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gbWVkaWFEZXZpY2VzSW5m
bzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhcHR1cmVkRGV2aWNlcy5zaXplKCk7IGkr
KykgeworICAgICAgICBUcmFja1NvdXJjZUluZm8qIHRyYWNrSW5mbyA9IGNhcHR1cmVkRGV2aWNl
c1tpXS5nZXQoKTsKKyAgICAgICAgU3RyaW5nIGRldmljZVR5cGUgPSB0cmFja0luZm8tPmtpbmQo
KSA9PSBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvID8gTWVkaWFEZXZpY2VJbmZv
OjphdWRpb0lucHV0VHlwZSgpIDogTWVkaWFEZXZpY2VJbmZvOjp2aWRlb0lucHV0VHlwZSgpOwor
ICAgICAgICBtZWRpYURldmljZXNJbmZvLmFwcGVuZChNZWRpYURldmljZUluZm86OmNyZWF0ZShj
b250ZXh0LCB0cmFja0luZm8tPmxhYmVsKCksIHRyYWNrSW5mby0+ZGV2aWNlSWQoKSwgdHJhY2tJ
bmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1l
ZGlhRGV2aWNlc0luZm87Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhZWI0YzU0ZWQ2Nzk5MGRkYzkyOWEzNzM4YzgxMTFlNDJlZDk3MmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1By
aXZhdGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIE1lZGlhRGV2aWNlc1ByaXZhdGVfaAorI2RlZmlu
ZSBNZWRpYURldmljZXNQcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VJ
bmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTWVkaWFEZXZpY2VzUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNl
c1ByaXZhdGU+IHsKK3B1YmxpYzoKKyAgICBNZWRpYURldmljZXNQcml2YXRlKCk7CisKKyAgICBz
dGF0aWMgUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IGNyZWF0ZSgpOworCisgICAgdmlydHVh
bCB+TWVkaWFEZXZpY2VzUHJpdmF0ZSgpIHsgfQorCisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRy
PE1lZGlhRGV2aWNlSW5mbz4+IGF2YWlsYWJsZU1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTQxNDVlZjY3MGI3M2ViMmI5
NmVmNzZkYjU3YjY4ZTM2Y2Y5NzRjMS4uNzU5ZjU1ZmM2ZDczN2I2N2EyYzBhMzY0OWU2OGUzZGRk
ODVjNWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjM2LDYgKzYzNiw4IEBACiAJCTE0RkZFMzFEMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFD
MEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi87IH07CiAJCTE1
MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MTQ1QjhGMUIzQTFCM0UwMDY2MkJG
NyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKKwkJMTU5MzlGOTYxQjQzMkYyRjAwRDJDMUFE
IC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNl
c1ByaXZhdGUuY3BwICovOyB9OworCQkxNTkzOUY5NzFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTU5MzlGOTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAq
LzsgfTsKIAkJMTU5QUU4MkIxQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTlBRTgyQTFC
M0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZvLmNwcCAqLzsgfTsKIAkJMTVDNzcwOEQx
MDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDhBMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxp
ZGl0eVN0YXRlLmggKi87IH07CiAJCTE1Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlk
aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKQEAg
LTc3NDksNiArNzc1MSw4IEBACiAJCTE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
VE1MRnJhbWVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1
MTQ1QjhGMUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFEZXZpY2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1MTQ1
QjkxMUIzQTFENEMwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhRGV2aWNlc1ByaXZhdGUu
Y3BwOyBwYXRoID0gLi4vLi4vTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTU5MzlGOTUxQjQzMkYyRjAwRDJD
MUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBwYXRoID0gLi4vLi4vTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE1OUFFODJBMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFEZXZpY2VJbmZvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwODkxMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlk
aXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZhbGlkaXR5U3RhdGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzA4QTEwMEQzQzZBMDA1QkEyNjcgLyog
VmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGl0
eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgwMyw2ICsxNDgwNyw4
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFj
ICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmgg
Ki8sCisJCQkJMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUu
Y3BwICovLAorCQkJCTE1OTM5Rjk1MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2
YXRlLmggKi8sCiAJCQkJMDcwRjU0OTcxN0YxMkY2QjAwMTY5RTA0IC8qIE1lZGlhU3RyZWFtQ29u
c3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggKi8sCiAJCQkJMDcyMjFCQTAxN0NGMEFENDAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCAqLywKIAkJCQkwNzExNTg4RjE3REY2
MzM3MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLywKQEAgLTIzODI3LDYgKzIz
ODMzLDcgQEAKIAkJCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1v
Y2tPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDA5Qzk4NTExNkQw
REREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNTkzOUY5NzFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5
QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTQ4OUZDNzEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMjg1NTgsNiArMjg1NjUsNyBAQAogCQkJCUE0M0JGNTk4MTE0OTI5
MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVs
b2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTU5MzlGOTYxQjQzMkYyRjAwRDJDMUFEIC8q
IE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURDMjIwQTE1
MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3N0IzODc0MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4MTM2OUQ5MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MU2VsZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmgKaW5kZXggYmUxZjJjNWNhZTg0OGM2ODQyNmUwNmU0OGM2MjU2NWMwYWFh
OTVlMi4uODE5ODkxMTQ0MDNjOWM3OGQ1YTRjMWFlMzZlZDVmZGI2YTgwMzQzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKQEAgLTQzLDggKzQz
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUlu
Zm8oaWQsIGtpbmQsIGxhYmVsKSk7CiAgICAgfQogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJh
Y2tTb3VyY2VJbmZvPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU291cmNlS2luZCBr
aW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3Vw
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwgbGFiZWwsIGdyb3VwSWQsIGRl
dmljZUlkKSk7CisgICAgfQorCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYWJlbDsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQo
KSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAgU291cmNlS2luZCBraW5kKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kOyB9CiAKIHByaXZhdGU6CkBAIC01NCw3ICs2MSwxOCBAQCBwcml2
YXRlOgogICAgICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgewogICAgIH0KLSAgICAKKworICAg
IFRyYWNrU291cmNlSW5mbyhjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCkKKyAgICAgICAgOiBtX2dyb3VwSWQoZ3JvdXBJ
ZCkKKyAgICAgICAgLCBtX2RldmljZUlkKGRldmljZUlkKQorICAgICAgICAsIG1faWQoaWQpCisg
ICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICB7Cisg
ICAgfQorCisgICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKKyAgICBBdG9taWNTdHJpbmcgbV9k
ZXZpY2VJZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBTb3VyY2VLaW5kIG1fa2luZDsK
ICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0KaW5kZXggZmQ0NTA1ZGM3MWMwOWM5MWY3NzhjMzU4MzUxMTQwMDY2NjNhZjA4Zi4uMWFkYjIx
ZjhlZGQ1NGU4MDVmMmZjNDA0NDJlMTNiMmExMzBlMmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0KQEAgLTMzNSwxMSArMzM1LDExIEBAIFZlY3RvcjxSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPj4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3Qg
U3RyCiAKICAgICAgICAgaWYgKCFkZXZpY2VzW2ldLm1fZW5hYmxlZCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotCisgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgZ3JvdXBJRCBmcm9tIGxvY2FsaXpl
ZE5hbWUgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmluZ2Z1bAogICAgICAgICBpZiAoZGV2aWNlc1tp
XS5tX3ZpZGVvU291cmNlKQotICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291
cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV92aWRlb1NvdXJjZUlkLCBUcmFja1NvdXJjZUlu
Zm86OlZpZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0lu
Zm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV92aWRlb1NvdXJj
ZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNl
LmxvY2FsaXplZE5hbWUsIGRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICAgICAg
aWYgKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZSkKLSAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFw
cGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwg
VHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgZGV2aWNlLmxvY2FsaXplZE5hbWUpKTsKKyAgICAgICAg
ICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ld
Lm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgZGV2aWNlLmxvY2FsaXpl
ZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlE
KSk7CiAgICAgfQogICAgIAogICAgIExPRyhNZWRpYSwgIkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJWQgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3Vy
Y2VzSW5mby5zaXplKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255939</attachid>
            <date>2015-07-01 11:52:24 -0700</date>
            <delta_ts>2015-07-01 11:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701115131.patch</filename>
            <type>text/plain</type>
            <size>18447</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
aW5kZXggZWQ2OGEyYTFhNDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uMzQyM2FjZjJh
MjU2OWNmZjQ5N2IxNWIyYzRjMjM0YjQ4MTg5ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzEsNiAr
MzEsOCBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmlj
ZUluZm86OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQs
IGNvbnN0IFN0cmluZyYga2luZCkKQEAgLTQ3LDYgKzQ5LDI0IEBAIE1lZGlhRGV2aWNlSW5mbzo6
TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86OmF1ZGlv
SW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBh
dWRpb2lucHV0KCJhdWRpb2lucHV0Iik7CisgICAgcmV0dXJuIGF1ZGlvaW5wdXQ7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb091dHB1dFR5cGUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvb3V0cHV0KCJhdWRp
b291dHB1dCIpOworICAgIHJldHVybiBhdWRpb291dHB1dDsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb2lucHV0KCJ2aWRlb2lucHV0Iik7CisgICAg
cmV0dXJuIHZpZGVvaW5wdXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZUluZm8uaAppbmRleCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi4y
Mjc2OGRjNzRmYTk4NzczY2NmZjY1ZmM3MmYxOTBkYjRlNjNiMTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQy
LDE4ICs0MiwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZv
KCkgeyB9CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9s
YWJlbDsgfQotICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2
aWNlSWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3Jv
dXBJZDsgfQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9
Ci0gICAgCisgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQor
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXVkaW9JbnB1dFR5cGUoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdWRpb091dHB1dFR5cGUoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB2aWRlb0lucHV0VHlwZSgpOworCiBwcml2YXRlOgogICAgIE1l
ZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBT
dHJpbmcmIG1fbGFiZWw7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2RldmljZUlkOwotICAgIGNvbnN0
IFN0cmluZyYgbV9ncm91cElkOwotICAgIGNvbnN0IFN0cmluZyYgbV9raW5kOworICAgIGNvbnN0
IFN0cmluZyBtX2xhYmVsOworICAgIGNvbnN0IFN0cmluZyBtX2RldmljZUlkOworICAgIGNvbnN0
IFN0cmluZyBtX2dyb3VwSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmlu
ZGV4IDM3NThhMTA4MTIzYmQzYTA3ZjljYWMzYWZmNDc0NWRkOTdmYmU2NGIuLmJkOTBmNGU1MTdi
NjQ5ZjJjMDRkMjA0YWQ4Y2YyYmRiNDk1OTI2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKICNpbmNsdWRlICJTY3JpcHRX
cmFwcGFibGUuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC01OSw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTVByb21pc2VX
aXRoQ2FsbGJhY2s8UmVmUHRyPE1lZGlhU3RyZWFtPiwgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yPj4gUHJvbWlzZTsKICAgICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5
JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKKyAgICB0eXBlZGVmIERPTVBy
b21pc2VXaXRoQ2FsbGJhY2s8UmVmUHRyPFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4+
LCBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+PiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlz
ZTsKKyAgICB2b2lkIGVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwg
RXhjZXB0aW9uQ29kZSYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhRGV2
aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDNmZTM2NTdlM2RiODVmODA2MmI1NmQyOGJhZjA4Yzc4OTQ3NjQ4MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhRGV2aWNlc1ByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYURldmljZXNQcml2YXRlOjpNZWRp
YURldmljZXNQcml2YXRlKCkKK3sKK30KKworUmVmUHRyPE1lZGlhRGV2aWNlc1ByaXZhdGU+IE1l
ZGlhRGV2aWNlc1ByaXZhdGU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFEZXZpY2VzUHJpdmF0ZSgpKTsKK30KKworVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUlu
Zm8+PiBNZWRpYURldmljZXNQcml2YXRlOjphdmFpbGFibGVNZWRpYURldmljZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNl
SW5mbz4+IGNhcHR1cmVkRGV2aWNlcyA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmdldFNvdXJjZXNJbmZvKCIiKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5m
bz4+IG1lZGlhRGV2aWNlc0luZm87CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYXB0dXJl
ZERldmljZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgVHJhY2tTb3VyY2VJbmZvKiB0cmFja0lu
Zm8gPSBjYXB0dXJlZERldmljZXNbaV0uZ2V0KCk7CisgICAgICAgIFN0cmluZyBkZXZpY2VUeXBl
ID0gdHJhY2tJbmZvLT5raW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRp
byA/IE1lZGlhRGV2aWNlSW5mbzo6YXVkaW9JbnB1dFR5cGUoKSA6IE1lZGlhRGV2aWNlSW5mbzo6
dmlkZW9JbnB1dFR5cGUoKTsKKyAgICAgICAgbWVkaWFEZXZpY2VzSW5mby5hcHBlbmQoTWVkaWFE
ZXZpY2VJbmZvOjpjcmVhdGUoY29udGV4dCwgdHJhY2tJbmZvLT5sYWJlbCgpLCB0cmFja0luZm8t
PmRldmljZUlkKCksIHRyYWNrSW5mby0+Z3JvdXBJZCgpLCBkZXZpY2VUeXBlKSk7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBtZWRpYURldmljZXNJbmZvOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWViNGM1NGVkNjc5OTBkZGM5MjlhMzczOGM4MTExZTQy
ZWQ5NzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYURldmlj
ZXNQcml2YXRlX2gKKyNkZWZpbmUgTWVkaWFEZXZpY2VzUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIk1lZGlhRGV2aWNlSW5mby5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhRGV2aWNlc1ByaXZhdGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYURldmljZXNQcml2YXRlPiB7CitwdWJsaWM6CisgICAgTWVkaWFEZXZpY2Vz
UHJpdmF0ZSgpOworCisgICAgc3RhdGljIFJlZlB0cjxNZWRpYURldmljZXNQcml2YXRlPiBjcmVh
dGUoKTsKKworICAgIHZpcnR1YWwgfk1lZGlhRGV2aWNlc1ByaXZhdGUoKSB7IH0KKworICAgIHZp
cnR1YWwgVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBhdmFpbGFibGVNZWRpYURldmlj
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGVfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk0MTQ1ZWY2NzBiNzNlYjJiOTZlZjc2ZGI1N2I2OGUzNmNmOTc0YzEuLjc1OWY1NWZjNmQ3Mzdi
NjdhMmMwYTM2NDllNjhlM2RkZDg1YzVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzNiw2ICs2MzYsOCBAQAogCQkxNEZG
RTMxRDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEz
NkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJh
c2UuY3BwICovOyB9OwogCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTE0
NUI4RjFCM0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggKi87IH07CisJCTE1OTM5
Rjk2MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1OTM5Rjk0MUI0MzJGMkYwMEQy
QzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCAqLzsgfTsKKwkJMTU5MzlGOTcxQjQzMkYy
RjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1OTM5Rjk1MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRp
YURldmljZXNQcml2YXRlLmggKi87IH07CiAJCTE1OUFFODJCMUIzQTQwMkYwMDM3NDc4QiAvKiBN
ZWRpYURldmljZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAg
Ki87IH07CiAJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA4QTEwMEQz
QzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovOyB9OwogCQkxNUM3NzA5MzEwMEQzQ0E4
MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA5MTEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0
eVN0YXRlLmggKi87IH07CkBAIC03NzQ5LDYgKzc3NTEsOCBAQAogCQkxNEZGRTMxQzBBRTE5NjMz
MDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNTE0NUI4RjFCM0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNTE0NUI5MTFCM0ExRDRDMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZv
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYURldmljZUluZm8uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNTkzOUY5NDFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBN
ZWRpYURldmljZXNQcml2YXRlLmNwcDsgcGF0aCA9IC4uLy4uL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1
OTM5Rjk1MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRGV2aWNlc1ByaXZhdGUuaDsgcGF0aCA9IC4u
Ly4uL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNTlBRTgyQTFCM0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZp
Y2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRGV2
aWNlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1Qzc3MDg5MTAwRDND
NkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBW
YWxpZGl0eVN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwOEEx
MDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmFsaWRpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQ4MDMsNiArMTQ4MDcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDcyOUIxNEQxN0NG
Q0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4NDhFNTEgLyog
TWVkaWFDb25zdHJhaW50cy5oICovLAorCQkJCTE1OTM5Rjk0MUI0MzJGMkYwMEQyQzFBRCAvKiBN
ZWRpYURldmljZXNQcml2YXRlLmNwcCAqLywKKwkJCQkxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQg
LyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovLAogCQkJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUw
NCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovLAogCQkJCTA3
MjIxQkEwMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmggKi8s
CiAJCQkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAg
Ki8sCkBAIC0yMzgyNyw2ICsyMzgzMyw3IEBACiAJCQkJMjlBQ0IyMTIxNDNFNzEyODAwNkJDQTVG
IC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIz
NjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTQwOUM5ODUxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTU5MzlGOTcxQjQzMkYyRjAwRDJDMUFEIC8q
IE1lZGlhRGV2aWNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM5MEZCQjlD
MUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk0ODlGQzcxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTU4LDYgKzI4NTY1LDcgQEAK
IAkJCQlBNDNCRjU5ODExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBNTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3Rl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQyMjNGRDE2QjUyRTRFMDAxNTcyODgg
LyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1OTM5Rjk2
MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NzFEQzIyMEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlw
dFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlEOTA5NzM3NEY2MDBENzQ0NjMg
LyogSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCmluZGV4IGJlMWYyYzVjYWU4NDhjNjg0
MjZlMDZlNDhjNjI1NjVjMGFhYTk1ZTIuLjgxOTg5MTE0NDAzYzljNzhkNWE0YzFhZTM2ZWQ1ZmRi
NmE4MDM0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oCkBAIC00Myw4ICs0MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVHJhY2tTb3VyY2VJbmZvKGlkLCBraW5kLCBsYWJlbCkpOwogICAgIH0KIAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlkKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQs
IGxhYmVsLCBncm91cElkLCBkZXZpY2VJZCkpOworICAgIH0KKwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQogICAgIFNv
dXJjZUtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogCiBwcml2YXRlOgpAQCAt
NTQsNyArNjEsMTggQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgIHsK
ICAgICB9Ci0gICAgCisKKyAgICBUcmFja1NvdXJjZUluZm8oY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpCisgICAgICAg
IDogbV9ncm91cElkKGdyb3VwSWQpCisgICAgICAgICwgbV9kZXZpY2VJZChkZXZpY2VJZCkKKyAg
ICAgICAgLCBtX2lkKGlkKQorICAgICAgICAsIG1fa2luZChraW5kKQorICAgICAgICAsIG1fbGFi
ZWwobGFiZWwpCisgICAgeworICAgIH0KKworICAgIEF0b21pY1N0cmluZyBtX2dyb3VwSWQ7Cisg
ICAgQXRvbWljU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAg
U291cmNlS2luZCBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGZkNDUwNWRjNzFjMDljOTFmNzc4YzM1ODM1MTE0
MDA2NjYzYWYwOGYuLjFhZGIyMWY4ZWRkNTRlODA1ZjJmYzQwNDQyZTEzYjJhMTMwZTJlY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0zMzUsMTEgKzMzNSwxMSBAQCBW
ZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6Omdl
dFNvdXJjZXNJbmZvKGNvbnN0IFN0cgogCiAgICAgICAgIGlmICghZGV2aWNlc1tpXS5tX2VuYWJs
ZWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAvLyBGSVhNRTogQ2hhbmdlIGdy
b3VwSUQgZnJvbSBsb2NhbGl6ZWROYW1lIHRvIHNvbWV0aGluZyBtb3JlIG1lYW5pbmdmdWwKICAg
ICAgICAgaWYgKGRldmljZXNbaV0ubV92aWRlb1NvdXJjZSkKLSAgICAgICAgICAgIHNvdXJjZXNJ
bmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fdmlkZW9Tb3Vy
Y2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUpKTsKKyAg
ICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZp
Y2VzW2ldLm1fdmlkZW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxv
Y2FsaXplZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2VzW2ldLm1fY2FwdHVyZURl
dmljZUlEKSk7CiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2UpCi0gICAgICAg
ICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tp
XS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRldmljZS5sb2NhbGl6
ZWROYW1lKSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZv
OjpjcmVhdGUoZGV2aWNlc1tpXS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVk
aW8sIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlc1tp
XS5tX2NhcHR1cmVEZXZpY2VJRCkpOwogICAgIH0KICAgICAKICAgICBMT0coTWVkaWEsICJBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyglcCksIGZvdW5kICVkIGFjdGl2ZSBk
ZXZpY2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255940</attachid>
            <date>2015-07-01 11:53:33 -0700</date>
            <delta_ts>2015-07-01 11:54:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701115240.patch</filename>
            <type>text/plain</type>
            <size>18109</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
aW5kZXggZWQ2OGEyYTFhNDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uMzQyM2FjZjJh
MjU2OWNmZjQ5N2IxNWIyYzRjMjM0YjQ4MTg5ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzEsNiAr
MzEsOCBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmlj
ZUluZm86OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQs
IGNvbnN0IFN0cmluZyYga2luZCkKQEAgLTQ3LDYgKzQ5LDI0IEBAIE1lZGlhRGV2aWNlSW5mbzo6
TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86OmF1ZGlv
SW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBh
dWRpb2lucHV0KCJhdWRpb2lucHV0Iik7CisgICAgcmV0dXJuIGF1ZGlvaW5wdXQ7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb091dHB1dFR5cGUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvb3V0cHV0KCJhdWRp
b291dHB1dCIpOworICAgIHJldHVybiBhdWRpb291dHB1dDsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb2lucHV0KCJ2aWRlb2lucHV0Iik7CisgICAg
cmV0dXJuIHZpZGVvaW5wdXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZUluZm8uaAppbmRleCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi4y
Mjc2OGRjNzRmYTk4NzczY2NmZjY1ZmM3MmYxOTBkYjRlNjNiMTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQy
LDE4ICs0MiwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZv
KCkgeyB9CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9s
YWJlbDsgfQotICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2
aWNlSWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3Jv
dXBJZDsgfQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9
Ci0gICAgCisgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQor
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXVkaW9JbnB1dFR5cGUoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdWRpb091dHB1dFR5cGUoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB2aWRlb0lucHV0VHlwZSgpOworCiBwcml2YXRlOgogICAgIE1l
ZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBT
dHJpbmcmIG1fbGFiZWw7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2RldmljZUlkOwotICAgIGNvbnN0
IFN0cmluZyYgbV9ncm91cElkOwotICAgIGNvbnN0IFN0cmluZyYgbV9raW5kOworICAgIGNvbnN0
IFN0cmluZyBtX2xhYmVsOworICAgIGNvbnN0IFN0cmluZyBtX2RldmljZUlkOworICAgIGNvbnN0
IFN0cmluZyBtX2dyb3VwSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNw
cAppbmRleCA1M2ExNzZlN2NkZjFjZjkxY2U2YmRiZmE5Y2Q0Zjg1YWE5YjNkNGU5Li5iNzc2M2M2
N2VlMWZkZDg1OTQyMTY3M2U4YjIwZDgxNjhlMzkwYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCkBAIC02NSw2ICs2NSwx
MSBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMsIFByb21pc2UmJiBwcm9taXNlLCBFeAogICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0
KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURjo6bW92ZShwcm9taXNlKSwgZWMpOwogfQogCit2b2lk
IE1lZGlhRGV2aWNlczo6ZW51bWVyYXRlRGV2aWNlcyhFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYm
LCBFeGNlcHRpb25Db2RlJikgY29uc3QKK3sKKyAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQzZmUzNjU3ZTNkYjg1ZjgwNjJiNTZkMjhiYWYwOGM3ODk0NzY0ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2luY2x1ZGUgIkFWTWVkaWFD
YXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFEZXZpY2VzUHJpdmF0ZTo6
TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisKK1JlZlB0cjxNZWRpYURldmljZXNQcml2YXRl
PiBNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhRGV2aWNlc1ByaXZhdGUoKSk7Cit9CisKK1ZlY3RvcjxSZWZQdHI8TWVkaWFEZXZp
Y2VJbmZvPj4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVkaWFEZXZpY2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVmVjdG9yPFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+PiBjYXB0dXJlZERldmljZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5n
bGV0b24oKS5nZXRTb3VyY2VzSW5mbygiIik7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYURldmlj
ZUluZm8+PiBtZWRpYURldmljZXNJbmZvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Fw
dHVyZWREZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIFRyYWNrU291cmNlSW5mbyogdHJh
Y2tJbmZvID0gY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpOworICAgICAgICBTdHJpbmcgZGV2aWNl
VHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6
QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkgOiBNZWRpYURldmljZUlu
Zm86OnZpZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlhRGV2aWNlc0luZm8uYXBwZW5kKE1l
ZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIHRyYWNrSW5mby0+bGFiZWwoKSwgdHJhY2tJ
bmZvLT5kZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5mbzsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlYjRjNTRlZDY3OTkwZGRjOTI5YTM3MzhjODEx
MWU0MmVkOTcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFE
ZXZpY2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNlc1ByaXZhdGVfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURldmljZXNQcml2YXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzUHJpdmF0ZT4geworcHVibGljOgorICAgIE1lZGlhRGV2
aWNlc1ByaXZhdGUoKTsKKworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4g
Y3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYURldmljZXNQcml2YXRlKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gYXZhaWxhYmxlTWVkaWFE
ZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBNZWRpYURldmljZXNQcml2YXRlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5NDE0NWVmNjcwYjczZWIyYjk2ZWY3NmRiNTdiNjhlMzZjZjk3NGMxLi43NTlmNTVmYzZk
NzM3YjY3YTJjMGEzNjQ5ZTY4ZTNkZGQ4NWM1ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzYsNiArNjM2LDggQEAKIAkJ
MTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRTMxQjBBRTE5NjMz
MDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEZGRTMxRTBBRTE5NjMzMDAxMzZCRjUgLyog
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcCAqLzsgfTsKIAkJMTUxNDVCOTAxQjNBMUNFMDAwNjYyQkY3IC8qIE1lZGlhRGV2
aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTUxNDVCOEYxQjNBMUIzRTAwNjYyQkY3IC8qIE1lZGlhRGV2aWNlSW5mby5oICovOyB9OworCQkx
NTkzOUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTkzOUY5NDFCNDMyRjJG
MDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi87IH07CisJCTE1OTM5Rjk3MUI0
MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQgLyog
TWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovOyB9OwogCQkxNTlBRTgyQjFCM0E0MDJGMDAzNzQ3OEIg
LyogTWVkaWFEZXZpY2VJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE1OUFFODJBMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8u
Y3BwICovOyB9OwogCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOEEx
MDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKIAkJMTVDNzcwOTMxMDBE
M0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOTExMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFs
aWRpdHlTdGF0ZS5oICovOyB9OwpAQCAtNzc0OSw2ICs3NzUxLDggQEAKIAkJMTRGRkUzMUMwQUUx
OTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOEYxQjNBMUIzRTAwNjYyQkY3IC8qIE1lZGlhRGV2
aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOTExQjNBMUQ0QzAwNjYyQkY3IC8qIE1lZGlhRGV2aWNl
SW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFEZXZpY2VJbmZvLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTU5MzlGOTQxQjQzMkYyRjAwRDJDMUFEIC8qIE1l
ZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHA7IHBhdGggPSAuLi8uLi9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYURldmljZXNQcml2YXRlLmg7IHBhdGgg
PSAuLi8uLi9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlh
RGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YURldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNUM3NzA4OTEw
MEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVmFsaWRpdHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE1Qzc3
MDhBMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZhbGlkaXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0ODAzLDYgKzE0ODA3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTA3MjlCMTRE
MTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUx
IC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKKwkJCQkxNTkzOUY5NDFCNDMyRjJGMDBEMkMxQUQg
LyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi8sCisJCQkJMTU5MzlGOTUxQjQzMkYyRjAwRDJD
MUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLywKIAkJCQkwNzBGNTQ5NzE3RjEyRjZCMDAx
NjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLywKIAkJ
CQkwNzIyMUJBMDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5o
ICovLAogCQkJCTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUu
Y3BwICovLApAQCAtMjM4MjcsNiArMjM4MzMsNyBAQAogCQkJCTI5QUNCMjEyMTQzRTcxMjgwMDZC
Q0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlB
ODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE1OTM5Rjk3MUI0MzJGMkYwMEQyQzFB
RCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzOTBG
QkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxi
YXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NDg5RkM3MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU1OCw2ICsyODU2NSw3
IEBACiAJCQkJQTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxR
dW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMjIzRkQxNkI1MkU0RTAwMTU3
Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNTkz
OUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBODcxREMyMjBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxT
Y3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RDkwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAppbmRleCBiZTFmMmM1Y2FlODQ4
YzY4NDI2ZTA2ZTQ4YzYyNTY1YzBhYWE5NWUyLi44MTk4OTExNDQwM2M5Yzc4ZDVhNGMxYWUzNmVk
NWZkYjZhODAzNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQuaApAQCAtNDMsOCArNDMsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwgbGFiZWwpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNv
bnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tTb3VyY2VJbmZvKGlkLCBr
aW5kLCBsYWJlbCwgZ3JvdXBJZCwgZGV2aWNlSWQpKTsKKyAgICB9CisKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAg
ICBTb3VyY2VLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KIAogcHJpdmF0ZToK
QEAgLTU0LDcgKzYxLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9sYWJlbChsYWJlbCkKICAg
ICB7CiAgICAgfQotICAgIAorCisgICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlkKQorICAg
ICAgICA6IG1fZ3JvdXBJZChncm91cElkKQorICAgICAgICAsIG1fZGV2aWNlSWQoZGV2aWNlSWQp
CisgICAgICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBt
X2xhYmVsKGxhYmVsKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNTdHJpbmcgbV9ncm91cElk
OworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwogICAgIEF0b21pY1N0cmluZyBtX2lkOwog
ICAgIFNvdXJjZUtpbmQgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBmZDQ1MDVkYzcxYzA5YzkxZjc3OGMzNTgz
NTExNDAwNjY2M2FmMDhmLi4xYWRiMjFmOGVkZDU0ZTgwNWYyZmM0MDQ0MmUxM2IyYTEzMGUyZWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMzM1LDExICszMzUsMTEg
QEAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHIKIAogICAgICAgICBpZiAoIWRldmljZXNbaV0ubV9l
bmFibGVkKQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgLy8gRklYTUU6IENoYW5n
ZSBncm91cElEIGZyb20gbG9jYWxpemVkTmFtZSB0byBzb21ldGhpbmcgbW9yZSBtZWFuaW5nZnVs
CiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2UpCi0gICAgICAgICAgICBzb3Vy
Y2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX3ZpZGVv
U291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sIGRldmljZS5sb2NhbGl6ZWROYW1lKSk7
CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUo
ZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sIGRldmlj
ZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlc1tpXS5tX2NhcHR1
cmVEZXZpY2VJRCkpOwogICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX2F1ZGlvU291cmNlKQotICAg
ICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmlj
ZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCBkZXZpY2UubG9j
YWxpemVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNl
SW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86
OkF1ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmlj
ZXNbaV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICB9CiAgICAgCiAgICAgTE9HKE1lZGlhLCAi
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oJXApLCBmb3VuZCAlZCBhY3Rp
dmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJbmZvLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255941</attachid>
            <date>2015-07-01 11:54:38 -0700</date>
            <delta_ts>2015-07-01 17:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701115345.patch</filename>
            <type>text/plain</type>
            <size>17440</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ5ODk3NzllMTNkYmYx
YzA1ZTU1ZTJjYTdiNzNmMDM3ZjdmMGYxNi4uYTNlN2JmZTkxNzU5MmU5MWVlOTQxZjViYmExOTk2
NTJiZWUwZjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTMwICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBHdGsgYW5kIEVGTCBidWlsZHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAK
aW5kZXggZWQ2OGEyYTFhNDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uMzQyM2FjZjJh
MjU2OWNmZjQ5N2IxNWIyYzRjMjM0YjQ4MTg5ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzEsNiAr
MzEsOCBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmlj
ZUluZm86OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQs
IGNvbnN0IFN0cmluZyYga2luZCkKQEAgLTQ3LDYgKzQ5LDI0IEBAIE1lZGlhRGV2aWNlSW5mbzo6
TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86OmF1ZGlv
SW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBh
dWRpb2lucHV0KCJhdWRpb2lucHV0Iik7CisgICAgcmV0dXJuIGF1ZGlvaW5wdXQ7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb091dHB1dFR5cGUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvb3V0cHV0KCJhdWRp
b291dHB1dCIpOworICAgIHJldHVybiBhdWRpb291dHB1dDsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb2lucHV0KCJ2aWRlb2lucHV0Iik7CisgICAg
cmV0dXJuIHZpZGVvaW5wdXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZUluZm8uaAppbmRleCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi4y
Mjc2OGRjNzRmYTk4NzczY2NmZjY1ZmM3MmYxOTBkYjRlNjNiMTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQy
LDE4ICs0MiwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZv
KCkgeyB9CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9s
YWJlbDsgfQotICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2
aWNlSWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3Jv
dXBJZDsgfQotICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9
Ci0gICAgCisgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJ
ZDsgfQorICAgIGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQor
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXVkaW9JbnB1dFR5cGUoKTsKKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdWRpb091dHB1dFR5cGUoKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB2aWRlb0lucHV0VHlwZSgpOworCiBwcml2YXRlOgogICAgIE1l
ZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBT
dHJpbmcmIG1fbGFiZWw7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2RldmljZUlkOwotICAgIGNvbnN0
IFN0cmluZyYgbV9ncm91cElkOwotICAgIGNvbnN0IFN0cmluZyYgbV9raW5kOworICAgIGNvbnN0
IFN0cmluZyBtX2xhYmVsOworICAgIGNvbnN0IFN0cmluZyBtX2RldmljZUlkOworICAgIGNvbnN0
IFN0cmluZyBtX2dyb3VwSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1ByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZmUzNjU3ZTNkYjg1ZjgwNjJiNTZkMjhiYWYw
OGM3ODk0NzY0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFE
ZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisKK1JlZlB0cjxNZWRp
YURldmljZXNQcml2YXRlPiBNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlc1ByaXZhdGUoKSk7Cit9CisKK1ZlY3RvcjxS
ZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVk
aWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVmVjdG9y
PFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBjYXB0dXJlZERldmljZXMgPSBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbygiIik7CisgICAgVmVjdG9yPFJl
ZlB0cjxNZWRpYURldmljZUluZm8+PiBtZWRpYURldmljZXNJbmZvOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2FwdHVyZWREZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIFRyYWNr
U291cmNlSW5mbyogdHJhY2tJbmZvID0gY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpOworICAgICAg
ICBTdHJpbmcgZGV2aWNlVHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5m
bzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkg
OiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlhRGV2aWNl
c0luZm8uYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIHRyYWNrSW5mby0+
bGFiZWwoKSwgdHJhY2tJbmZvLT5kZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2
aWNlVHlwZSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5mbzsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlYjRjNTRlZDY3OTkw
ZGRjOTI5YTM3MzhjODExMWU0MmVkOTcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpZm5kZWYgTWVkaWFEZXZpY2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNlc1ByaXZh
dGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURldmljZXNQ
cml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzUHJpdmF0ZT4geworcHVibGlj
OgorICAgIE1lZGlhRGV2aWNlc1ByaXZhdGUoKTsKKworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFE
ZXZpY2VzUHJpdmF0ZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYURldmljZXNQcml2
YXRlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4g
YXZhaWxhYmxlTWVkaWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBNZWRpYURldmlj
ZXNQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA5NDE0NWVmNjcwYjczZWIyYjk2ZWY3NmRiNTdiNjhlMzZjZjk3
NGMxLi43NTlmNTVmYzZkNzM3YjY3YTJjMGEzNjQ5ZTY4ZTNkZGQ4NWM1ZDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzYs
NiArNjM2LDggQEAKIAkJMTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1l
bnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEZGRTMxRTBBRTE5
NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8q
IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJMTUxNDVCOTAxQjNBMUNFMDAwNjYy
QkY3IC8qIE1lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTUxNDVCOEYxQjNBMUIzRTAwNjYyQkY3IC8qIE1lZGlhRGV2aWNlSW5m
by5oICovOyB9OworCQkxNTkzOUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJp
dmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NTkzOUY5NDFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi87IH07
CisJCTE1OTM5Rjk3MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNTkzOUY5NTFCNDMy
RjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovOyB9OwogCQkxNTlBRTgyQjFC
M0E0MDJGMDAzNzQ3OEIgLyogTWVkaWFEZXZpY2VJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1OUFFODJBMUIzQTQwMkYwMDM3NDc4QiAvKiBN
ZWRpYURldmljZUluZm8uY3BwICovOyB9OwogCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyog
VmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTVDNzcwOEExMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLzsgfTsK
IAkJMTVDNzcwOTMxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOTExMDBEM0NBODAw
NUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oICovOyB9OwpAQCAtNzc0OSw2ICs3NzUxLDggQEAK
IAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOEYxQjNBMUIzRTAwNjYy
QkY3IC8qIE1lZGlhRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOTExQjNBMUQ0QzAwNjYyQkY3
IC8qIE1lZGlhRGV2aWNlSW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFEZXZp
Y2VJbmZvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTU5MzlGOTQxQjQzMkYy
RjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHA7IHBhdGggPSAuLi8uLi9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNTkzOUY5NTFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2Vz
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYURldmljZXNQ
cml2YXRlLmg7IHBhdGggPSAuLi8uLi9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU5QUU4MkExQjNBNDAyRjAw
Mzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYURldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNUM3NzA4OTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVmFsaWRpdHlTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE1Qzc3MDhBMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkaXR5U3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODAzLDYgKzE0ODA3LDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDcyMjFCOTkx
N0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKKwkJCQkxNTkzOUY5NDFC
NDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi8sCisJCQkJMTU5MzlG
OTUxQjQzMkYyRjAwRDJDMUFEIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLywKIAkJCQkwNzBG
NTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25D
bGllbnQuaCAqLywKIAkJCQkwNzIyMUJBMDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudC5oICovLAogCQkJCTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRp
YVN0cmVhbVByaXZhdGUuY3BwICovLApAQCAtMjM4MjcsNiArMjM4MzMsNyBAQAogCQkJCTI5QUNC
MjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyMzYwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE1OTM5Rjk3
MUI0MzJGMkYwMEQyQzFBRCAvKiBNZWRpYURldmljZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyOUE4MTIzOTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vz
c2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NDg5RkM3MTJDMDBGMDMw
MEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODU1OCw2ICsyODU2NSw3IEBACiAJCQkJQTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQ
cm9ncmVzc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1Njk3ODAw
MEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMjIz
RkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkxNTkzOUY5NjFCNDMyRjJGMDBEMkMxQUQgLyogTWVkaWFEZXZpY2VzUHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyMjBBMTUyMDU3MDBCMTJBNjggLyogSFRN
TFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzQxMjI4ODNFOTAw
QjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5
RDkwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAppbmRl
eCBiZTFmMmM1Y2FlODQ4YzY4NDI2ZTA2ZTQ4YzYyNTY1YzBhYWE5NWUyLi44MTk4OTExNDQwM2M5
Yzc4ZDVhNGMxYWUzNmVkNWZkYjZhODAzNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrU291cmNlc1JlcXVlc3RDbGllbnQuaApAQCAtNDMsOCArNDMsMTUgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwgbGFiZWwp
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBkZXZpY2VJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tT
b3VyY2VJbmZvKGlkLCBraW5kLCBsYWJlbCwgZ3JvdXBJZCwgZGV2aWNlSWQpKTsKKyAgICB9CisK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElk
OyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGV2aWNlSWQ7IH0KICAgICBTb3VyY2VLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KIAogcHJpdmF0ZToKQEAgLTU0LDcgKzYxLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9s
YWJlbChsYWJlbCkKICAgICB7CiAgICAgfQotICAgIAorCisgICAgVHJhY2tTb3VyY2VJbmZvKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcm
IGRldmljZUlkKQorICAgICAgICA6IG1fZ3JvdXBJZChncm91cElkKQorICAgICAgICAsIG1fZGV2
aWNlSWQoZGV2aWNlSWQpCisgICAgICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBtX2tpbmQoa2lu
ZCkKKyAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNT
dHJpbmcgbV9ncm91cElkOworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwogICAgIEF0b21p
Y1N0cmluZyBtX2lkOwogICAgIFNvdXJjZUtpbmQgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBt
X2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBmZDQ1MDVkYzcx
YzA5YzkxZjc3OGMzNTgzNTExNDAwNjY2M2FmMDhmLi4xYWRiMjFmOGVkZDU0ZTgwNWYyZmM0MDQ0
MmUxM2IyYTEzMGUyZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAt
MzM1LDExICszMzUsMTEgQEAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHIKIAogICAgICAgICBpZiAo
IWRldmljZXNbaV0ubV9lbmFibGVkKQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAg
Ly8gRklYTUU6IENoYW5nZSBncm91cElEIGZyb20gbG9jYWxpemVkTmFtZSB0byBzb21ldGhpbmcg
bW9yZSBtZWFuaW5nZnVsCiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2UpCi0g
ICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2
aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sIGRldmljZS5s
b2NhbGl6ZWROYW1lKSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3Vy
Y2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5m
bzo6VmlkZW8sIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2
aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRCkpOwogICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX2F1
ZGlvU291cmNlKQotICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5m
bzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OkF1
ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0luZm8uYXBw
ZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBU
cmFja1NvdXJjZUluZm86OkF1ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2Fs
aXplZE5hbWUsIGRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICB9CiAgICAgCiAg
ICAgTE9HKE1lZGlhLCAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oJXAp
LCBmb3VuZCAlZCBhY3RpdmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJbmZvLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255973</attachid>
            <date>2015-07-01 17:11:43 -0700</date>
            <delta_ts>2015-07-02 11:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150701171050.patch</filename>
            <type>text/plain</type>
            <size>17260</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2NGJhMzFlMmUwZGIw
NzMzOGY1OGUyNWViYmQ0OGQwNzJhY2JhMi4uOGQzYTFhNjY2MDNkZTY1MzZkMWZmZjE3YWU5N2M5
OTUyMTFhM2IxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA3LTAxICBNYXR0
IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGluZyBpbiBwcml2YXRl
IGNsYXNzZXMgZm9yIE1lZGlhRGV2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTYxNDQ2
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6IENoYW5nZWQgdG8gU3RyaW5nIHZh
bHVlcworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OmF1ZGlvT3V0cHV0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWlsYWJsZU1lZGlhRGV2aWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFE
ZXZpY2VzUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBzb3VyY2VzIHRvIGJ1aWxkIGZpbGUKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrU291cmNlSW5mbzo6Z3JvdXBJZCk6IEFkZGVkIGdyb3VwSWQgc3RyaW5nCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmRldmljZUlkKTogQWRkZWQgZGV2aWNlSWQgc3RyaW5n
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2Vz
SW5mbyk6CisKIDIwMTUtMDctMDEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gQnVpbGQgZml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKaW5kZXggZWQ2OGEyYTFh
NDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uMzQyM2FjZjJhMjU2OWNmZjQ5N2IxNWIy
YzRjMjM0YjQ4MTg5ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1
ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmljZUluZm86OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IFN0cmluZyYg
a2luZCkKQEAgLTQ3LDYgKzQ5LDI0IEBAIE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZv
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKIHsKIH0KIAor
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdWRpb2lucHV0KCJhdWRp
b2lucHV0Iik7CisgICAgcmV0dXJuIGF1ZGlvaW5wdXQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb091dHB1dFR5cGUoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvb3V0cHV0KCJhdWRpb291dHB1dCIpOworICAg
IHJldHVybiBhdWRpb291dHB1dDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmlj
ZUluZm86OnZpZGVvSW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiB2aWRlb2lucHV0KCJ2aWRlb2lucHV0Iik7CisgICAgcmV0dXJuIHZpZGVvaW5w
dXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAppbmRleCAz
N2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi4yMjc2OGRjNzRmYTk4Nzcz
Y2NmZjY1ZmM3MmYxOTBkYjRlNjNiMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQyLDE4ICs0MiwyMiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZvKCkgeyB9CiAgICAgCi0g
ICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9sYWJlbDsgfQotICAgIGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2aWNlSWQ7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3JvdXBJZDsgfQotICAgIGNv
bnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9Ci0gICAgCisgICAgY29u
c3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25zdCBT
dHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIGNvbnN0
IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNvbnN0
IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgYXVkaW9JbnB1dFR5cGUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBhdWRpb091dHB1dFR5cGUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiB2aWRlb0lucHV0VHlwZSgpOworCiBwcml2YXRlOgogICAgIE1lZGlhRGV2aWNlSW5mbyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBTdHJpbmcmIG1fbGFiZWw7
Ci0gICAgY29uc3QgU3RyaW5nJiBtX2RldmljZUlkOwotICAgIGNvbnN0IFN0cmluZyYgbV9ncm91
cElkOwotICAgIGNvbnN0IFN0cmluZyYgbV9raW5kOworICAgIGNvbnN0IFN0cmluZyBtX2xhYmVs
OworICAgIGNvbnN0IFN0cmluZyBtX2RldmljZUlkOworICAgIGNvbnN0IFN0cmluZyBtX2dyb3Vw
SWQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQzZmUzNjU3ZTNkYjg1ZjgwNjJiNTZkMjhiYWYwOGM3ODk0NzY0ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorI2luY2x1ZGUgIkFWTWVkaWFD
YXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFEZXZpY2VzUHJpdmF0ZTo6
TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisKK1JlZlB0cjxNZWRpYURldmljZXNQcml2YXRl
PiBNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhRGV2aWNlc1ByaXZhdGUoKSk7Cit9CisKK1ZlY3RvcjxSZWZQdHI8TWVkaWFEZXZp
Y2VJbmZvPj4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVkaWFEZXZpY2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVmVjdG9yPFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+PiBjYXB0dXJlZERldmljZXMgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5n
bGV0b24oKS5nZXRTb3VyY2VzSW5mbygiIik7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYURldmlj
ZUluZm8+PiBtZWRpYURldmljZXNJbmZvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Fw
dHVyZWREZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIFRyYWNrU291cmNlSW5mbyogdHJh
Y2tJbmZvID0gY2FwdHVyZWREZXZpY2VzW2ldLmdldCgpOworICAgICAgICBTdHJpbmcgZGV2aWNl
VHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6
QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkgOiBNZWRpYURldmljZUlu
Zm86OnZpZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlhRGV2aWNlc0luZm8uYXBwZW5kKE1l
ZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIHRyYWNrSW5mby0+bGFiZWwoKSwgdHJhY2tJ
bmZvLT5kZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5mbzsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlYjRjNTRlZDY3OTkwZGRjOTI5YTM3MzhjODEx
MWU0MmVkOTcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFE
ZXZpY2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNlc1ByaXZhdGVfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURldmljZXNQcml2YXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VzUHJpdmF0ZT4geworcHVibGljOgorICAgIE1lZGlhRGV2
aWNlc1ByaXZhdGUoKTsKKworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4g
Y3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYURldmljZXNQcml2YXRlKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gYXZhaWxhYmxlTWVkaWFE
ZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBNZWRpYURldmljZXNQcml2YXRlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4ZTQwNDYxZmJhMWU2Y2NmZmU5ZTdlOGVmMDExMDlmMDY1YjNhZmQ4Li5jMTMzNjBkMmU5
M2E1NjM1YWZkNzI4M2RhY2VkOTU3YWRmYTZmYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzUsNiArNjM1LDggQEAKIAkJ
MTRFODM3OEUwOUY4NUQ0RjAwQjg1QUU0IC8qIEpTRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTgzNzhEMDlGODVENEYwMEI4NUFFNCAvKiBK
U0V2ZW50LmggKi87IH07CiAJCTE0RkZFMzFEMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVF
bGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGRkUzMUUw
QUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFDMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi87IH07CisJCTE1MDcxNDkzMUI0NEI4QzQw
MDlCOEJDQiAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MDcxNDkxMUI0NEI4QjAwMDlCOEJDQiAvKiBNZWRp
YURldmljZXNQcml2YXRlLmNwcCAqLzsgfTsKKwkJMTUwNzE0OTQxQjQ0QjhDNzAwOUI4QkNCIC8q
IE1lZGlhRGV2aWNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE1MDcxNDkyMUI0NEI4QjAwMDlCOEJDQiAvKiBNZWRpYURldmljZXNQcml2
YXRlLmggKi87IH07CiAJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MTQ1
QjhGMUIzQTFCM0UwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKIAkJMTU3MzlC
QkExQjQyMDEyQTAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1NzM5QkI4MUI0MjAxMjIwMEQyNThDMSAv
KiBKU01lZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTE1NzM5QkJCMUI0MjAxMkQwMEQyNThDMSAv
KiBKU01lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTU3MzlCQjkxQjQyMDEyMjAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmggKi87
IH07CkBAIC03NzQ5LDYgKzc3NTEsOCBAQAogCQkxNEU4Mzc4RDA5Rjg1RDRGMDBCODVBRTQgLyog
SlNFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyog
SFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRG
RkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTUwNzE0OTExQjQ0QjhCMDAwOUI4QkNCIC8q
IE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE1MDcxNDkyMUI0NEI4QjAwMDlCOEJDQiAvKiBNZWRpYURldmljZXNQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlc1ByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOEYxQjNBMUIzRTAwNjYyQkY3IC8qIE1l
ZGlhRGV2aWNlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTUxNDVCOTExQjNBMUQ0QzAwNjYyQkY3IC8qIE1lZGlh
RGV2aWNlSW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFEZXZpY2VJbmZvLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU3MzlCQjgxQjQyMDEyMjAwRDI1OEMx
IC8qIEpTTWVkaWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
ODA3LDYgKzE0ODExLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTA3MjlCMTREMTdDRkNDQTAw
MDRGMUQ2MCAvKiBtYWMgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlh
Q29uc3RyYWludHMuaCAqLywKKwkJCQkxNTA3MTQ5MTFCNDRCOEIwMDA5QjhCQ0IgLyogTWVkaWFE
ZXZpY2VzUHJpdmF0ZS5jcHAgKi8sCisJCQkJMTUwNzE0OTIxQjQ0QjhCMDAwOUI4QkNCIC8qIE1l
ZGlhRGV2aWNlc1ByaXZhdGUuaCAqLywKIAkJCQkwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyog
TWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLywKIAkJCQkwNzIyMUJB
MDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oICovLAogCQkJ
CTA3MTE1ODhGMTdERjYzMzcwMEVERkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwICovLApA
QCAtMjQyMDQsNiArMjQyMTAsNyBAQAogCQkJCTQwOUVCREIxMTZCN0VFNzEwMENCQTNGQyAvKiBD
U1NGb250RmFjZUxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkQwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0
RDgwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlU291cmNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNTA3MTQ5NDFCNDRCOEM3MDA5QjhCQ0IgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0REEwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNl
U3JjVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNTIwQzdFMUE3MUJGQ0MwMDZCRDJBQSAv
KiBDU1NGb250RmFtaWx5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDNDEzQzE3RDFEMDA0
NkE3RjggLyogQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE2OSw2
ICsyOTE3Niw3IEBACiAJCQkJQkM5OEEyN0QwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVl
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODRFQkQ4NDBDQjhDOTc3MDAwNzk2MDkg
LyogSlNTdHlsZVNoZWV0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODRFQkQ3ODBDQjhD
ODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxNTA3MTQ5MzFCNDRCOEM0MDA5QjhCQ0IgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMUZGOEY2NDE4MDc0NUQ4MDAxMzI2NzQgLyogSlNTdWJ0bGVD
cnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRjhGNjgxODA3NDYwODAwMTMyNjc0IC8q
IEpTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMDExMTA3MEFC
Nzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAppbmRleCBiZTFmMmM1
Y2FlODQ4YzY4NDI2ZTA2ZTQ4YzYyNTY1YzBhYWE5NWUyLi44MTk4OTExNDQwM2M5Yzc4ZDVhNGMx
YWUzNmVkNWZkYjZhODAzNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQuaApAQCAtNDMsOCArNDMsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNlSW5mbyhpZCwga2luZCwgbGFiZWwpKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFi
ZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZp
Y2VJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tTb3VyY2VJbmZv
KGlkLCBraW5kLCBsYWJlbCwgZ3JvdXBJZCwgZGV2aWNlSWQpKTsKKyAgICB9CisKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7
IH0KICAgICBTb3VyY2VLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KIAogcHJp
dmF0ZToKQEAgLTU0LDcgKzYxLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9sYWJlbChsYWJl
bCkKICAgICB7CiAgICAgfQotICAgIAorCisgICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlk
KQorICAgICAgICA6IG1fZ3JvdXBJZChncm91cElkKQorICAgICAgICAsIG1fZGV2aWNlSWQoZGV2
aWNlSWQpCisgICAgICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkKKyAgICAg
ICAgLCBtX2xhYmVsKGxhYmVsKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNTdHJpbmcgbV9n
cm91cElkOworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwogICAgIEF0b21pY1N0cmluZyBt
X2lkOwogICAgIFNvdXJjZUtpbmQgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBkMmNjZWRmYzc5OTg3MTI5NGI2
MjVkM2NhZTVlZTA5YmM2MDNiYTcwLi5kZTc5MTUwYzU1MjBjZjc0YWJlZTQ0ODhmNWQzZmI5M2Ew
MzI2ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMzI5LDExICsz
MjksMTEgQEAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHIKIAogICAgICAgICBpZiAoIWRldmljZXNb
aV0ubV9lbmFibGVkKQogICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgLy8gRklYTUU6
IENoYW5nZSBncm91cElEIGZyb20gbG9jYWxpemVkTmFtZSB0byBzb21ldGhpbmcgbW9yZSBtZWFu
aW5nZnVsCiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2UpCi0gICAgICAgICAg
ICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5t
X3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sIGRldmljZS5sb2NhbGl6ZWRO
YW1lKSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpj
cmVhdGUoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8s
IGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlc1tpXS5t
X2NhcHR1cmVEZXZpY2VJRCkpOwogICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX2F1ZGlvU291cmNl
KQotICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRl
KGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCBkZXZp
Y2UubG9jYWxpemVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNr
U291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZUlkLCBUcmFja1NvdXJj
ZUluZm86OkF1ZGlvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2FsaXplZE5hbWUs
IGRldmljZXNbaV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICB9CiAgICAgCiAgICAgTE9HKE1l
ZGlhLCAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oJXApLCBmb3VuZCAl
ZCBhY3RpdmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJbmZvLnNpemUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256020</attachid>
            <date>2015-07-02 11:19:01 -0700</date>
            <delta_ts>2015-07-09 11:49:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150702111807.patch</filename>
            <type>text/plain</type>
            <size>15383</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY2MDIxMWVkNjIxZmE1
MjAwODgwMGY1ZGZiNWZjYTEzZDAwNTA1Yy4uNWVkZWIyNTZhYjAyYTQ1YmE3YzA5NjI5ZDM1Yjcy
MGUxODNjNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTAyICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudGluZyBw
bGF0Zm9ybS1zcGVjaWZpYyBzZWN0aW9uIG9mIGVudW1lcmF0ZURldmljZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ2MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjE2MTQ0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHA6
IENoYW5nZWQgYWNjZXNzIG1ldGhvZHMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5m
bzo6YXVkaW9JbnB1dFR5cGUpOiBBZGRlZCBBdG9taWNTdHJpbmcKKyAgICAgICAgcGVybWFuZW50
IHJlZnMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6YXVkaW9PdXRwdXRUeXBl
KTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6dmlkZW9JbnB1dFR5
cGUpOiBEaXR0bworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZv
Lmg6IENoYW5nZWQgU3RyaW5nIHJlZnMgdG8gdmFsdWVzCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YURldmljZUluZm86OmxhYmVsKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNl
SW5mbzo6ZGV2aWNlSWQpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZv
Ojpncm91cElkKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6a2lu
ZCk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJp
dmF0ZS5jcHA6IEltcGxlbWVudGVkIHF1ZXJ5IGZvcgorICAgICAgICBhdmFpbGFibGUgZGV2aWNl
cworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVkaWFEZXZp
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFEZXZpY2Vz
UHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudC5oOiBOZWVkZWQKKyAgICAgICAgdG8gdGFjayBvbiBleHRyYSBmaWVsZHMgdG8g
aG9sZCBkYXRhCisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86Omdyb3VwSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tTb3VyY2VJbmZvOjpkZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
a1NvdXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyk6CisKIDIwMTUtMDctMDEgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBBZ2dyZWdhdGUgcHJvZmlsZSBjYWxsIGluZm9ybWF0aW9uIG9uIHRoZSBiYWNrZW5kIHRv
IGRyYXN0aWNhbGx5IHJlZHVjZSBwcm9maWxlIHNpemVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKaW5kZXggZWQ2OGEy
YTFhNDY5MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uMzQyM2FjZjJhMjU2OWNmZjQ5N2Ix
NWIyYzRjMjM0YjQ4MTg5ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmljZUluZm86OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IFN0cmlu
ZyYga2luZCkKQEAgLTQ3LDYgKzQ5LDI0IEBAIE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJ
bmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKIHsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdWRpb2lucHV0KCJh
dWRpb2lucHV0Iik7CisgICAgcmV0dXJuIGF1ZGlvaW5wdXQ7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb091dHB1dFR5cGUoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvb3V0cHV0KCJhdWRpb291dHB1dCIpOwor
ICAgIHJldHVybiBhdWRpb291dHB1dDsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYURl
dmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiB2aWRlb2lucHV0KCJ2aWRlb2lucHV0Iik7CisgICAgcmV0dXJuIHZpZGVv
aW5wdXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAppbmRl
eCAzN2U5ZTBiM2U3YmI2MGMxNzQzYzJjNGFlNzdmOGUxYjZhOWZkMzFiLi4yMjc2OGRjNzRmYTk4
NzczY2NmZjY1ZmM3MmYxOTBkYjRlNjNiMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTQyLDE4ICs0MiwyMiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VJbmZvKCkgeyB9CiAgICAg
Ci0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHtyZXR1cm4gbV9sYWJlbDsgfQotICAg
IGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7cmV0dXJuIG1fZGV2aWNlSWQ7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7cmV0dXJuIG1fZ3JvdXBJZDsgfQotICAg
IGNvbnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHtyZXR1cm4gbV9raW5kOyB9Ci0gICAgCisgICAg
Y29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNv
bnN0IFN0cmluZyYga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgYXVkaW9JbnB1dFR5cGUoKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdWRpb091dHB1dFR5cGUoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiB2aWRlb0lucHV0VHlwZSgpOworCiBwcml2YXRlOgogICAgIE1lZGlhRGV2aWNlSW5m
byhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBTdHJpbmcmIG1fbGFi
ZWw7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2RldmljZUlkOwotICAgIGNvbnN0IFN0cmluZyYgbV9n
cm91cElkOwotICAgIGNvbnN0IFN0cmluZyYgbV9raW5kOworICAgIGNvbnN0IFN0cmluZyBtX2xh
YmVsOworICAgIGNvbnN0IFN0cmluZyBtX2RldmljZUlkOworICAgIGNvbnN0IFN0cmluZyBtX2dy
b3VwSWQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZTQwNDYxZmJh
MWU2Y2NmZmU5ZTdlOGVmMDExMDlmMDY1YjNhZmQ4Li5lYjI2YzMxMzYwZWNmMTAwY2Q0NTUwZjM4
ZmU4MTllMGZlMzJkODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzYwLDYgKzc3NjAsOCBAQAogCQkxNUM3NzA5MjEwMEQz
Q0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVmFsaWRpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE1Qzc3MEEzMTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVmFsaWRpdHlTdGF0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwQTQxMDBENDFDRDAwNUJB
MjY3IC8qIERPTVZhbGlkaXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NVmFsaWRpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNURF
NTgwMjFCNDVCNUNCMDBGQ0FGQzMgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZXNQcml2YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTVERTU4MDMxQjQ1QjVDQjAwRkNBRkMzIC8qIE1l
ZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFEZXZpY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNjNFODhG
NTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg1QkNGMjYwRjMyNzlDRTAwMEVBMjYyIC8q
IFRocmVhZFRpbWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aHJlYWRUaW1lcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODVCQ0YyNzBG
MzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRocmVhZFRpbWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ4MDcsNiArMTQ4MDksOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDcyOUIxNEQxN0NGQ0NB
MDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVk
aWFDb25zdHJhaW50cy5oICovLAorCQkJCTE1REU1ODAyMUI0NUI1Q0IwMEZDQUZDMyAvKiBNZWRp
YURldmljZXNQcml2YXRlLmNwcCAqLywKKwkJCQkxNURFNTgwMzFCNDVCNUNCMDBGQ0FGQzMgLyog
TWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovLAogCQkJCTA3MEY1NDk3MTdGMTJGNkIwMDE2OUUwNCAv
KiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovLAogCQkJCTA3MjIx
QkEwMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmggKi8sCiAJ
CQkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlc1ByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZDYyZmZiM2RhMzkzMDlhNTIzZmMw
N2Y3ZWJjYjAzMTNjZWVjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmNwcApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2VzUHJpdmF0ZS5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K01lZGlhRGV2aWNlc1ByaXZhdGU6Ok1lZGlhRGV2aWNlc1ByaXZhdGUoKQoreworfQorCitSZWZQ
dHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6Y3JlYXRlKCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURldmljZXNQcml2YXRlKCkpOworfQorCitW
ZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWls
YWJsZU1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAg
IFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gY2FwdHVyZWREZXZpY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8oIiIpOworICAgIFZl
Y3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gbWVkaWFEZXZpY2VzSW5mbzsKKyAgICBmb3Ig
KGF1dG8gZGV2aWNlIDogY2FwdHVyZWREZXZpY2VzKSB7CisgICAgICAgIFRyYWNrU291cmNlSW5m
byogdHJhY2tJbmZvID0gZGV2aWNlLmdldCgpOworICAgICAgICBTdHJpbmcgZGV2aWNlVHlwZSA9
IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8g
PyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkgOiBNZWRpYURldmljZUluZm86OnZp
ZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlhRGV2aWNlc0luZm8uYXBwZW5kKE1lZGlhRGV2
aWNlSW5mbzo6Y3JlYXRlKGNvbnRleHQsIHRyYWNrSW5mby0+bGFiZWwoKSwgdHJhY2tJbmZvLT5k
ZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5mbzsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWViNGM1NGVkNjc5OTBkZGM5MjlhMzczOGM4MTExZTQy
ZWQ5NzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFEZXZp
Y2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNlc1ByaXZhdGVfaAorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKyNp
bmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURldmljZXNQcml2YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFEZXZpY2VzUHJpdmF0ZT4geworcHVibGljOgorICAgIE1lZGlhRGV2aWNl
c1ByaXZhdGUoKTsKKworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXZpY2VzUHJpdmF0ZT4gY3Jl
YXRlKCk7CisKKyAgICB2aXJ0dWFsIH5NZWRpYURldmljZXNQcml2YXRlKCkgeyB9CisKKyAgICB2
aXJ0dWFsIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gYXZhaWxhYmxlTWVkaWFEZXZp
Y2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBNZWRpYURldmljZXNQcml2YXRlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKaW5kZXggYmUx
ZjJjNWNhZTg0OGM2ODQyNmUwNmU0OGM2MjU2NWMwYWFhOTVlMi4uODE5ODkxMTQ0MDNjOWM3OGQ1
YTRjMWFlMzZlZDVmZGI2YTgwMzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50LmgKQEAgLTQzLDggKzQzLDE1IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQsIGxhYmVsKSk7CiAg
ICAgfQogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGV2aWNlSWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYWNrU291cmNl
SW5mbyhpZCwga2luZCwgbGFiZWwsIGdyb3VwSWQsIGRldmljZUlkKSk7CisgICAgfQorCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZUlkOyB9CiAgICAgU291cmNlS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAK
IHByaXZhdGU6CkBAIC01NCw3ICs2MSwxOCBAQCBwcml2YXRlOgogICAgICAgICAsIG1fbGFiZWwo
bGFiZWwpCiAgICAgewogICAgIH0KLSAgICAKKworICAgIFRyYWNrU291cmNlSW5mbyhjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFi
ZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZp
Y2VJZCkKKyAgICAgICAgOiBtX2dyb3VwSWQoZ3JvdXBJZCkKKyAgICAgICAgLCBtX2RldmljZUlk
KGRldmljZUlkKQorICAgICAgICAsIG1faWQoaWQpCisgICAgICAgICwgbV9raW5kKGtpbmQpCisg
ICAgICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5n
IG1fZ3JvdXBJZDsKKyAgICBBdG9taWNTdHJpbmcgbV9kZXZpY2VJZDsKICAgICBBdG9taWNTdHJp
bmcgbV9pZDsKICAgICBTb3VyY2VLaW5kIG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJl
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggZDJjY2VkZmM3OTk4NzEy
OTRiNjI1ZDNjYWU1ZWUwOWJjNjAzYmE3MC4uZGU3OTE1MGM1NTIwY2Y3NGFiZWU0NDg4ZjVkM2Zi
OTNhMDMyNmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTMyOSwx
MSArMzI5LDExIEBAIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyCiAKICAgICAgICAgaWYgKCFkZXZp
Y2VzW2ldLm1fZW5hYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIC8vIEZJ
WE1FOiBDaGFuZ2UgZ3JvdXBJRCBmcm9tIGxvY2FsaXplZE5hbWUgdG8gc29tZXRoaW5nIG1vcmUg
bWVhbmluZ2Z1bAogICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlKQotICAgICAg
ICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNb
aV0ubV92aWRlb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZpY2UubG9jYWxp
emVkTmFtZSkpOworICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5m
bzo6Y3JlYXRlKGRldmljZXNbaV0ubV92aWRlb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZp
ZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZXNb
aV0ubV9jYXB0dXJlRGV2aWNlSUQpKTsKICAgICAgICAgaWYgKGRldmljZXNbaV0ubV9hdWRpb1Nv
dXJjZSkKLSAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZShkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywg
ZGV2aWNlLmxvY2FsaXplZE5hbWUpKTsKKyAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChU
cmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tT
b3VyY2VJbmZvOjpBdWRpbywgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZS5sb2NhbGl6ZWRO
YW1lLCBkZXZpY2VzW2ldLm1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgfQogICAgIAogICAgIExP
RyhNZWRpYSwgIkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91
bmQgJWQgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5mby5zaXplKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256497</attachid>
            <date>2015-07-09 11:49:18 -0700</date>
            <delta_ts>2015-07-09 12:08:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150709114818.patch</filename>
            <type>text/plain</type>
            <size>17655</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiZjA0NDgwYmI0YTRi
ODVlMDBmMGI1ZmU1OTk3MGY1MWIxMjlkMy4uMjI3OWM2MDNiNzMyOTdmYzBkYWNkYWVmODIyOWVh
ZDE5MThmODM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTA5ICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudGluZyBw
bGF0Zm9ybS1zcGVjaWZpYyBzZWN0aW9uIG9mIGVudW1lcmF0ZURldmljZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ2MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjE2MTQ0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHA6IENo
YW5nZWQgYWNjZXNzIG1ldGhvZHMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6
YXVkaW9JbnB1dFR5cGUpOiBBZGRlZCBBdG9taWNTdHJpbmcKKyAgICAgICAgcGVybWFuZW50IHJl
ZnMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6YXVkaW9PdXRwdXRUeXBlKTog
RGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6dmlkZW9JbnB1dFR5cGUp
OiBEaXR0bworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6
IENoYW5nZWQgU3RyaW5nIHJlZnMgdG8gdmFsdWVzCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURl
dmljZUluZm86OmxhYmVsKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5m
bzo6ZGV2aWNlSWQpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjpn
cm91cElkKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6a2luZCk6
IERpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0
ZS5jcHA6IEltcGxlbWVudGVkIHF1ZXJ5IGZvcgorICAgICAgICBhdmFpbGFibGUgZGV2aWNlcwor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVkaWFEZXZpY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFEZXZpY2VzUHJp
dmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudC5oOiBOZWVkZWQKKyAgICAgICAgdG8gdGFjayBvbiBleHRyYSBmaWVsZHMgdG8gaG9s
ZCBkYXRhCisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86Omdyb3VwSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tTb3VyY2VJbmZvOjpkZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1Nv
dXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyk6CisKIDIwMTUtMDctMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gSG9ub3IgQ0FD
RkxheWVyIGNvbnRlbnQgc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKaW5kZXggZWQ2OGEyYTFhNDY5
MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uODE4OTBkZDIxM2Q0YmVhYjAxODg3ODI3Y2Y4
ZWJiMDFiY2Y2MDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFi
bGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00Nyw2ICs0OCwyNCBAQCBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5m
byhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmCiB7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXVkaW9pbnB1dCgiYXVk
aW9pbnB1dCIpOworICAgIHJldHVybiBhdWRpb2lucHV0OworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhRGV2aWNlSW5mbzo6YXVkaW9PdXRwdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdWRpb291dHB1dCgiYXVkaW9vdXRwdXQiKTsKKyAg
ICByZXR1cm4gYXVkaW9vdXRwdXQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZp
Y2VJbmZvOjp2aWRlb0lucHV0VHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gdmlkZW9pbnB1dCgidmlkZW9pbnB1dCIpOworICAgIHJldHVybiB2aWRlb2lu
cHV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKaW5kZXgg
MzdlOWUwYjNlN2JiNjBjMTc0M2MyYzRhZTc3ZjhlMWI2YTlmZDMxYi4uMjI3NjhkYzc0ZmE5ODc3
M2NjZmY2NWZjNzJmMTkwZGI0ZTYzYjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCkBAIC00MiwxOCArNDIsMjIgQEAg
cHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfk1lZGlhRGV2aWNlSW5mbygpIHsgfQogICAgIAot
ICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7cmV0dXJuIG1fbGFiZWw7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3Qge3JldHVybiBtX2RldmljZUlkOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBncm91cElkKCkgY29uc3Qge3JldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGtpbmQoKSBjb25zdCB7cmV0dXJuIG1fa2luZDsgfQotICAgIAorICAgIGNv
bnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGF1ZGlvSW5wdXRUeXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgYXVkaW9PdXRwdXRUeXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdmlkZW9JbnB1dFR5cGUoKTsKKwogcHJpdmF0ZToKICAgICBNZWRpYURldmljZUluZm8o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtX2xhYmVs
OwotICAgIGNvbnN0IFN0cmluZyYgbV9kZXZpY2VJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fZ3Jv
dXBJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV9sYWJl
bDsKKyAgICBjb25zdCBTdHJpbmcgbV9kZXZpY2VJZDsKKyAgICBjb25zdCBTdHJpbmcgbV9ncm91
cElkOworICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmM3MzdlN2VmZDQ3
YjA5NmJiNDFmMmVlOTgzNGEyYjdiNGQyMWU2YS4uMTEzMWY4ODI5MDY1MjI2OWY1ODI1OWE4ZTEx
YmEyNDMzZTEwMjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjM2LDYgKzYzNiw4IEBACiAJCTE0RkZFMzFEMEFFMTk2MzMw
MDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxG
cmFtZUVsZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi87IH07
CiAJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MTQ1QjhGMUIzQTFCM0Uw
MDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKKwkJMTUyQTI5QjQxQjRFRjVCNzAw
QjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTUyQTI5QjIxQjRFRjU5NjAwQjUyQUUwIC8qIE1lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwICovOyB9OworCQkxNTJBMjlCNTFCNEVGNUJBMDBCNTJBRTAgLyog
TWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTUyQTI5QjMxQjRFRjU5NjAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZh
dGUuaCAqLzsgfTsKIAkJMTU3MzlCQkExQjQyMDEyQTAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2Vz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1NzM5
QkI4MUI0MjAxMjIwMEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTE1NzM5
QkJCMUI0MjAxMkQwMEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU3MzlCQjkxQjQyMDEyMjAwRDI1OEMxIC8q
IEpTTWVkaWFEZXZpY2VzLmggKi87IH07CiAJCTE1OUFFODJCMUIzQTQwMkYwMDM3NDc4QiAvKiBN
ZWRpYURldmljZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAg
Ki87IH07CkBAIC03NzUxLDYgKzc3NTMsOCBAQAogCQkxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUg
LyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNTE0NUI4RjFCM0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNTE0NUI5MTFCM0ExRDRDMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYURldmljZUluZm8uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNTJBMjlCMjFCNEVGNTk2MDBCNTJBRTAgLyogTWVkaWFEZXZpY2VzUHJp
dmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmlj
ZXNQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTUyQTI5QjMxQjRF
RjU5NjAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNTczOUJCODFCNDIwMTIyMDBEMjU4QzEgLyogSlNNZWRpYURldmljZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNTczOUJCOTFCNDIwMTIyMDBEMjU4QzEg
LyogSlNNZWRpYURldmljZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
ZWRpYURldmljZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU5QUU4MkExQjNB
NDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ4MDcsNiArMTQ4MTEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDcy
OUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4
NDhFNTEgLyogTWVkaWFDb25zdHJhaW50cy5oICovLAorCQkJCTE1MkEyOUIyMUI0RUY1OTYwMEI1
MkFFMCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCAqLywKKwkJCQkxNTJBMjlCMzFCNEVGNTk2
MDBCNTJBRTAgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovLAogCQkJCTA3MEY1NDk3MTdGMTJG
NkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICov
LAogCQkJCTA3MjIxQkEwMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50LmggKi8sCiAJCQkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAgKi8sCkBAIC0yNDIwMiw2ICsyNDIwOCw3IEBACiAJCQkJNDA5RUJEQjExNkI3RUU3
MTAwQ0JBM0ZDIC8qIENTU0ZvbnRGYWNlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODBFNkNGRDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY0QjREODBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTE1MkEyOUI1MUI0RUY1QkEwMEI1MkFFMCAvKiBNZWRpYURldmlj
ZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjREQTBDQjQyOThBMDA1RjJCNjIg
LyogQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1MjBDN0UxQTcx
QkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNkU5
RkM0MTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5MTY3LDYgKzI5MTc0LDcgQEAKIAkJCQlCQ0UwMTM5QTBDMEJFRjE4MDA0Mzg2MEEg
LyogSlNTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOThBMjdEMEMwQzk5NTAw
MDRCRUJGNyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0
RUJEODQwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTUyQTI5QjQxQjRFRjVCNzAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0RUJENzgwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpTU3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRjhGNjQxODA3NDVE
ODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRkY4
RjY4MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ0NTYzY2RjYWUzYjYzOGJk
MDNiYzZhNGZkNTFhMjgyZmZjMmUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5oIgorI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisK
K1JlZjxNZWRpYURldmljZXNQcml2YXRlPiBNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlc1ByaXZhdGUpOworfQorCitW
ZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlc1ByaXZhdGU6OmF2YWls
YWJsZU1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAg
IFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gY2FwdHVyZWREZXZpY2VzID0gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8oIiIpOworICAgIFZl
Y3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gbWVkaWFEZXZpY2VzSW5mbzsKKyAgICBmb3Ig
KGF1dG8gZGV2aWNlIDogY2FwdHVyZWREZXZpY2VzKSB7CisgICAgICAgIFRyYWNrU291cmNlSW5m
byogdHJhY2tJbmZvID0gZGV2aWNlLmdldCgpOworICAgICAgICBTdHJpbmcgZGV2aWNlVHlwZSA9
IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8g
PyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBlKCkgOiBNZWRpYURldmljZUluZm86OnZp
ZGVvSW5wdXRUeXBlKCk7CisgICAgICAgIG1lZGlhRGV2aWNlc0luZm8uYXBwZW5kKE1lZGlhRGV2
aWNlSW5mbzo6Y3JlYXRlKCZjb250ZXh0LCB0cmFja0luZm8tPmxhYmVsKCksIHRyYWNrSW5mby0+
ZGV2aWNlSWQoKSwgdHJhY2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5cGUpKTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIG1lZGlhRGV2aWNlc0luZm87Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIzZjU4ODFiNDM5YTdhNDg3ZTUxZDc0YTMyOTAwYjlj
YWE5MjdkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIE1lZGlhRGV2
aWNlc1ByaXZhdGVfaAorI2RlZmluZSBNZWRpYURldmljZXNQcml2YXRlX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiTWVkaWFEZXZpY2VJbmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFEZXZpY2VzUHJpdmF0ZSB7CitwdWJsaWM6Cisg
ICAgTWVkaWFEZXZpY2VzUHJpdmF0ZSgpOworCisgICAgc3RhdGljIFJlZjxNZWRpYURldmljZXNQ
cml2YXRlPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfk1lZGlhRGV2aWNlc1ByaXZhdGUoKSB7
IH0KKworICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBhdmFpbGFi
bGVNZWRpYURldmljZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhRGV2aWNlc1ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaApp
bmRleCBiZTFmMmM1Y2FlODQ4YzY4NDI2ZTA2ZTQ4YzYyNTY1YzBhYWE5NWUyLi4xNTg2ODRkODNh
YWQ2ODc1YTg4MDMwYzE4M2MzYmI2MDlhZWY2ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC00Myw4ICs0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tTb3VyY2VJbmZvKGlkLCBraW5kLCBsYWJlbCkpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBSZWY8VHJhY2tTb3VyY2VJbmZvPiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVs
LCBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNl
SWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFja1NvdXJjZUluZm8o
aWQsIGtpbmQsIGxhYmVsLCBncm91cElkLCBkZXZpY2VJZCkpOworICAgIH0KKwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsg
fQogICAgIFNvdXJjZUtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogCiBwcml2
YXRlOgpAQCAtNTQsMTAgKzYyLDIxIEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9sYWJlbChsYWJl
bCkKICAgICB7CiAgICAgfQotICAgIAorCisgICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGRldmljZUlk
KQorICAgICAgICA6IG1faWQoaWQpCisgICAgICAgICwgbV9raW5kKGtpbmQpCisgICAgICAgICwg
bV9sYWJlbChsYWJlbCkKKyAgICAgICAgLCBtX2dyb3VwSWQoZ3JvdXBJZCkKKyAgICAgICAgLCBt
X2RldmljZUlkKGRldmljZUlkKQorICAgIHsKKyAgICB9CisKICAgICBBdG9taWNTdHJpbmcgbV9p
ZDsKICAgICBTb3VyY2VLaW5kIG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKKyAg
ICBBdG9taWNTdHJpbmcgbV9ncm91cElkOworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOwog
fTsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGQyY2NlZGZjNzk5ODcxMjk0YjYyNWQz
Y2FlNWVlMDliYzYwM2JhNzAuLmRlNzkxNTBjNTUyMGNmNzRhYmVlNDQ4OGY1ZDNmYjkzYTAzMjZl
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0zMjksMTEgKzMyOSwx
MSBAQCBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cgogCiAgICAgICAgIGlmICghZGV2aWNlc1tpXS5t
X2VuYWJsZWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAvLyBGSVhNRTogQ2hh
bmdlIGdyb3VwSUQgZnJvbSBsb2NhbGl6ZWROYW1lIHRvIHNvbWV0aGluZyBtb3JlIG1lYW5pbmdm
dWwKICAgICAgICAgaWYgKGRldmljZXNbaV0ubV92aWRlb1NvdXJjZSkKLSAgICAgICAgICAgIHNv
dXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fdmlk
ZW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUp
KTsKKyAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0
ZShkZXZpY2VzW2ldLm1fdmlkZW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgZGV2
aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2VzW2ldLm1fY2Fw
dHVyZURldmljZUlEKSk7CiAgICAgICAgIGlmIChkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2UpCi0g
ICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZGV2
aWNlc1tpXS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIGRldmljZS5s
b2NhbGl6ZWROYW1lKSk7CisgICAgICAgICAgICBzb3VyY2VzSW5mby5hcHBlbmQoVHJhY2tTb3Vy
Y2VJbmZvOjpjcmVhdGUoZGV2aWNlc1tpXS5tX2F1ZGlvU291cmNlSWQsIFRyYWNrU291cmNlSW5m
bzo6QXVkaW8sIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZpY2UubG9jYWxpemVkTmFtZSwgZGV2
aWNlc1tpXS5tX2NhcHR1cmVEZXZpY2VJRCkpOwogICAgIH0KICAgICAKICAgICBMT0coTWVkaWEs
ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyglcCksIGZvdW5kICVkIGFj
dGl2ZSBkZXZpY2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256499</attachid>
            <date>2015-07-09 12:08:22 -0700</date>
            <delta_ts>2015-07-09 13:48:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146461-20150709120722.patch</filename>
            <type>text/plain</type>
            <size>17540</size>
            <attacher name="Matthew Daiter">mdaiter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFiZjA0NDgwYmI0YTRi
ODVlMDBmMGI1ZmU1OTk3MGY1MWIxMjlkMy4uMjI3OWM2MDNiNzMyOTdmYzBkYWNkYWVmODIyOWVh
ZDE5MThmODM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTA5ICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudGluZyBw
bGF0Zm9ybS1zcGVjaWZpYyBzZWN0aW9uIG9mIGVudW1lcmF0ZURldmljZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ2MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjE2MTQ0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHA6IENo
YW5nZWQgYWNjZXNzIG1ldGhvZHMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6
YXVkaW9JbnB1dFR5cGUpOiBBZGRlZCBBdG9taWNTdHJpbmcKKyAgICAgICAgcGVybWFuZW50IHJl
ZnMKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6YXVkaW9PdXRwdXRUeXBlKTog
RGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6dmlkZW9JbnB1dFR5cGUp
OiBEaXR0bworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmg6
IENoYW5nZWQgU3RyaW5nIHJlZnMgdG8gdmFsdWVzCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURl
dmljZUluZm86OmxhYmVsKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5m
bzo6ZGV2aWNlSWQpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VJbmZvOjpn
cm91cElkKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlSW5mbzo6a2luZCk6
IERpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0
ZS5jcHA6IEltcGxlbWVudGVkIHF1ZXJ5IGZvcgorICAgICAgICBhdmFpbGFibGUgZGV2aWNlcwor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZhaWxhYmxlTWVkaWFEZXZpY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNQcml2YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNQcml2YXRlOjp+TWVkaWFEZXZpY2VzUHJp
dmF0ZSk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudC5oOiBOZWVkZWQKKyAgICAgICAgdG8gdGFjayBvbiBleHRyYSBmaWVsZHMgdG8gaG9s
ZCBkYXRhCisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86Omdyb3VwSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tTb3VyY2VJbmZvOjpkZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1Nv
dXJjZUluZm86OlRyYWNrU291cmNlSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyk6CisKIDIwMTUtMDctMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gSG9ub3IgQ0FD
RkxheWVyIGNvbnRlbnQgc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKaW5kZXggZWQ2OGEyYTFhNDY5
MjNlYjYyMzM2ZDg0ZTZiMTFmNTFhNjcyZDU1Yi4uODE4OTBkZDIxM2Q0YmVhYjAxODg3ODI3Y2Y4
ZWJiMDFiY2Y2MDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFi
bGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00Nyw2ICs0OCwyNCBAQCBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5m
byhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmCiB7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZpY2VJbmZvOjphdWRpb0lucHV0VHlwZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXVkaW9pbnB1dCgiYXVk
aW9pbnB1dCIpOworICAgIHJldHVybiBhdWRpb2lucHV0OworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhRGV2aWNlSW5mbzo6YXVkaW9PdXRwdXRUeXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdWRpb291dHB1dCgiYXVkaW9vdXRwdXQiKTsKKyAg
ICByZXR1cm4gYXVkaW9vdXRwdXQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFEZXZp
Y2VJbmZvOjp2aWRlb0lucHV0VHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gdmlkZW9pbnB1dCgidmlkZW9pbnB1dCIpOworICAgIHJldHVybiB2aWRlb2lu
cHV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKaW5kZXgg
MzdlOWUwYjNlN2JiNjBjMTc0M2MyYzRhZTc3ZjhlMWI2YTlmZDMxYi4uMjI3NjhkYzc0ZmE5ODc3
M2NjZmY2NWZjNzJmMTkwZGI0ZTYzYjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCkBAIC00MiwxOCArNDIsMjIgQEAg
cHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfk1lZGlhRGV2aWNlSW5mbygpIHsgfQogICAgIAot
ICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7cmV0dXJuIG1fbGFiZWw7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3Qge3JldHVybiBtX2RldmljZUlkOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBncm91cElkKCkgY29uc3Qge3JldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGtpbmQoKSBjb25zdCB7cmV0dXJuIG1fa2luZDsgfQotICAgIAorICAgIGNv
bnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBjb25z
dCBTdHJpbmcmIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGF1ZGlvSW5wdXRUeXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgYXVkaW9PdXRwdXRUeXBlKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdmlkZW9JbnB1dFR5cGUoKTsKKwogcHJpdmF0ZToKICAgICBNZWRpYURldmljZUluZm8o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgY29uc3QgU3RyaW5nJiBtX2xhYmVs
OwotICAgIGNvbnN0IFN0cmluZyYgbV9kZXZpY2VJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fZ3Jv
dXBJZDsKLSAgICBjb25zdCBTdHJpbmcmIG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV9sYWJl
bDsKKyAgICBjb25zdCBTdHJpbmcgbV9kZXZpY2VJZDsKKyAgICBjb25zdCBTdHJpbmcgbV9ncm91
cElkOworICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmM3MzdlN2VmZDQ3
YjA5NmJiNDFmMmVlOTgzNGEyYjdiNGQyMWU2YS4uMTEzMWY4ODI5MDY1MjI2OWY1ODI1OWE4ZTEx
YmEyNDMzZTEwMjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjM2LDYgKzYzNiw4IEBACiAJCTE0RkZFMzFEMEFFMTk2MzMw
MDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxG
cmFtZUVsZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi87IH07
CiAJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MTQ1QjhGMUIzQTFCM0Uw
MDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCAqLzsgfTsKKwkJMTUyQTI5QjQxQjRFRjVCNzAw
QjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTUyQTI5QjIxQjRFRjU5NjAwQjUyQUUwIC8qIE1lZGlh
RGV2aWNlc1ByaXZhdGUuY3BwICovOyB9OworCQkxNTJBMjlCNTFCNEVGNUJBMDBCNTJBRTAgLyog
TWVkaWFEZXZpY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTUyQTI5QjMxQjRFRjU5NjAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZh
dGUuaCAqLzsgfTsKIAkJMTU3MzlCQkExQjQyMDEyQTAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2Vz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1NzM5
QkI4MUI0MjAxMjIwMEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5jcHAgKi87IH07CiAJCTE1NzM5
QkJCMUI0MjAxMkQwMEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU3MzlCQjkxQjQyMDEyMjAwRDI1OEMxIC8q
IEpTTWVkaWFEZXZpY2VzLmggKi87IH07CiAJCTE1OUFFODJCMUIzQTQwMkYwMDM3NDc4QiAvKiBN
ZWRpYURldmljZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAg
Ki87IH07CkBAIC03NzUxLDYgKzc3NTMsOCBAQAogCQkxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUg
LyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNTE0NUI4RjFCM0ExQjNFMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNTE0NUI5MTFCM0ExRDRDMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYURldmljZUluZm8uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNTJBMjlCMjFCNEVGNTk2MDBCNTJBRTAgLyogTWVkaWFEZXZpY2VzUHJp
dmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmlj
ZXNQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTUyQTI5QjMxQjRF
RjU5NjAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNTczOUJCODFCNDIwMTIyMDBEMjU4QzEgLyogSlNNZWRpYURldmljZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYURldmljZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNTczOUJCOTFCNDIwMTIyMDBEMjU4QzEg
LyogSlNNZWRpYURldmljZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
ZWRpYURldmljZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTU5QUU4MkExQjNB
NDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ4MDcsNiArMTQ4MTEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMDcy
OUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4
NDhFNTEgLyogTWVkaWFDb25zdHJhaW50cy5oICovLAorCQkJCTE1MkEyOUIyMUI0RUY1OTYwMEI1
MkFFMCAvKiBNZWRpYURldmljZXNQcml2YXRlLmNwcCAqLywKKwkJCQkxNTJBMjlCMzFCNEVGNTk2
MDBCNTJBRTAgLyogTWVkaWFEZXZpY2VzUHJpdmF0ZS5oICovLAogCQkJCTA3MEY1NDk3MTdGMTJG
NkIwMDE2OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICov
LAogCQkJCTA3MjIxQkEwMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50LmggKi8sCiAJCQkJMDcxMTU4OEYxN0RGNjMzNzAwRURGRTJCIC8qIE1lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAgKi8sCkBAIC0yNDIwMiw2ICsyNDIwOCw3IEBACiAJCQkJNDA5RUJEQjExNkI3RUU3
MTAwQ0JBM0ZDIC8qIENTU0ZvbnRGYWNlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODBFNkNGRDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY0QjREODBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTE1MkEyOUI1MUI0RUY1QkEwMEI1MkFFMCAvKiBNZWRpYURldmlj
ZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjREQTBDQjQyOThBMDA1RjJCNjIg
LyogQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM1MjBDN0UxQTcx
QkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNkU5
RkM0MTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5MTY3LDYgKzI5MTc0LDcgQEAKIAkJCQlCQ0UwMTM5QTBDMEJFRjE4MDA0Mzg2MEEg
LyogSlNTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOThBMjdEMEMwQzk5NTAw
MDRCRUJGNyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0
RUJEODQwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTUyQTI5QjQxQjRFRjVCNzAwQjUyQUUwIC8qIE1lZGlhRGV2aWNlc1ByaXZhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg0RUJENzgwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpTU3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRjhGNjQxODA3NDVE
ODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRkY4
RjY4MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUwNjI1NDQ5ZDBiN2ZiMzgx
MTM0MjMxNjc4ZTZjNjRlMGUwZWIwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZXNQcml2YXRlLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5oIgorI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTWVkaWFEZXZpY2VzUHJpdmF0ZTo6TWVkaWFEZXZpY2VzUHJpdmF0ZSgpCit7Cit9CisK
K1ZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4gTWVkaWFEZXZpY2VzUHJpdmF0ZTo6YXZh
aWxhYmxlTWVkaWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBjYXB0dXJlZERldmljZXMgPSBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbygiIik7CisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBtZWRpYURldmljZXNJbmZvOworICAgIGZv
ciAoYXV0byBkZXZpY2UgOiBjYXB0dXJlZERldmljZXMpIHsKKyAgICAgICAgVHJhY2tTb3VyY2VJ
bmZvKiB0cmFja0luZm8gPSBkZXZpY2UuZ2V0KCk7CisgICAgICAgIFN0cmluZyBkZXZpY2VUeXBl
ID0gdHJhY2tJbmZvLT5raW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRp
byA/IE1lZGlhRGV2aWNlSW5mbzo6YXVkaW9JbnB1dFR5cGUoKSA6IE1lZGlhRGV2aWNlSW5mbzo6
dmlkZW9JbnB1dFR5cGUoKTsKKyAgICAgICAgbWVkaWFEZXZpY2VzSW5mby5hcHBlbmQoTWVkaWFE
ZXZpY2VJbmZvOjpjcmVhdGUoJmNvbnRleHQsIHRyYWNrSW5mby0+bGFiZWwoKSwgdHJhY2tJbmZv
LT5kZXZpY2VJZCgpLCB0cmFja0luZm8tPmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gbWVkaWFEZXZpY2VzSW5mbzsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2M5MmJiMWEyZDhlZjM5NjJlYmQzYWFlZTlkZWRi
Y2M4MjFlZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFE
ZXZpY2VzUHJpdmF0ZV9oCisjZGVmaW5lIE1lZGlhRGV2aWNlc1ByaXZhdGVfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJNZWRpYURldmljZUluZm8uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYURldmljZXNQcml2YXRlIDogcHVibGljIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYURldmljZXNQcml2YXRlPiB7CitwdWJsaWM6CisgICAgTWVkaWFE
ZXZpY2VzUHJpdmF0ZSgpOworCisgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VzUHJpdmF0ZSgpIHsg
fQorCisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGF2YWlsYWJs
ZU1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFEZXZpY2VzUHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCmlu
ZGV4IGJlMWYyYzVjYWU4NDhjNjg0MjZlMDZlNDhjNjI1NjVjMGFhYTk1ZTIuLjE1ODY4NGQ4M2Fh
ZDY4NzVhODgwMzBjMTgzYzNiYjYwOWFlZjZkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTQzLDggKzQ0LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQsIGxhYmVsKSk7CiAg
ICAgfQogCisgICAgc3RhdGljIFJlZjxUcmFja1NvdXJjZUluZm8+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWws
IGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJ
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrU291cmNlSW5mbyhp
ZCwga2luZCwgbGFiZWwsIGdyb3VwSWQsIGRldmljZUlkKSk7CisgICAgfQorCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9
CiAgICAgU291cmNlS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAKIHByaXZh
dGU6CkBAIC01NCwxMCArNjIsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2xhYmVsKGxhYmVs
KQogICAgIHsKICAgICB9Ci0gICAgCisKKyAgICBUcmFja1NvdXJjZUluZm8oY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQp
CisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBt
X2xhYmVsKGxhYmVsKQorICAgICAgICAsIG1fZ3JvdXBJZChncm91cElkKQorICAgICAgICAsIG1f
ZGV2aWNlSWQoZGV2aWNlSWQpCisgICAgeworICAgIH0KKwogICAgIEF0b21pY1N0cmluZyBtX2lk
OwogICAgIFNvdXJjZUtpbmQgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOworICAg
IEF0b21pY1N0cmluZyBtX2dyb3VwSWQ7CisgICAgQXRvbWljU3RyaW5nIG1fZGV2aWNlSWQ7CiB9
OwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggZDJjY2VkZmM3OTk4NzEyOTRiNjI1ZDNj
YWU1ZWUwOWJjNjAzYmE3MC4uZGU3OTE1MGM1NTIwY2Y3NGFiZWU0NDg4ZjVkM2ZiOTNhMDMyNmU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTMyOSwxMSArMzI5LDEx
IEBAIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyCiAKICAgICAgICAgaWYgKCFkZXZpY2VzW2ldLm1f
ZW5hYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIC8vIEZJWE1FOiBDaGFu
Z2UgZ3JvdXBJRCBmcm9tIGxvY2FsaXplZE5hbWUgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmluZ2Z1
bAogICAgICAgICBpZiAoZGV2aWNlc1tpXS5tX3ZpZGVvU291cmNlKQotICAgICAgICAgICAgc291
cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGRldmljZXNbaV0ubV92aWRl
b1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkp
OworICAgICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRl
KGRldmljZXNbaV0ubV92aWRlb1NvdXJjZUlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCBkZXZp
Y2UubG9jYWxpemVkTmFtZSwgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZXNbaV0ubV9jYXB0
dXJlRGV2aWNlSUQpKTsKICAgICAgICAgaWYgKGRldmljZXNbaV0ubV9hdWRpb1NvdXJjZSkKLSAg
ICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShkZXZp
Y2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgZGV2aWNlLmxv
Y2FsaXplZE5hbWUpKTsKKyAgICAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJj
ZUluZm86OmNyZWF0ZShkZXZpY2VzW2ldLm1fYXVkaW9Tb3VyY2VJZCwgVHJhY2tTb3VyY2VJbmZv
OjpBdWRpbywgZGV2aWNlLmxvY2FsaXplZE5hbWUsIGRldmljZS5sb2NhbGl6ZWROYW1lLCBkZXZp
Y2VzW2ldLm1fY2FwdHVyZURldmljZUlEKSk7CiAgICAgfQogICAgIAogICAgIExPRyhNZWRpYSwg
IkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJWQgYWN0
aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5mby5zaXplKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>