<?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>115719</bug_id>
          
          <creation_ts>2013-05-07 02:55:44 -0700</creation_ts>
          <short_desc>[GTK] Add a UPower-based BatteryProvider</short_desc>
          <delta_ts>2013-12-13 03:56:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>115718</dependson>
          <blocked>95582</blocked>
    
    <blocked>115720</blocked>
    
    <blocked>125453</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bugzilla</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885653</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-07 02:55:44 -0700</bug_when>
    <thetext>[GTK] Add a UPower-based BatteryProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885654</commentid>
    <comment_count>1</comment_count>
      <attachid>200885</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-07 03:27:59 -0700</bug_when>
    <thetext>Created attachment 200885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885656</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 03:29:58 -0700</bug_when>
    <thetext>Attachment 200885 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.cpp&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.h&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPowerClient.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;]&quot; exit_code: 1
Source/WebCore/platform/upower/BatteryProviderUPower.cpp:104:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885744</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-07 08:50:46 -0700</bug_when>
    <thetext>Here&apos;s the patch for the BatteryProviderUPower class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885901</commentid>
    <comment_count>4</comment_count>
      <attachid>200885</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-05-07 12:01:41 -0700</bug_when>
    <thetext>Comment on attachment 200885
Patch

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

The UPower bits look okay to me. I&apos;m a bit confused how this hooks into WebCore since both the provider and client are unused. Is this supposed to hook into the WebKit layer somehow? Couple nitty comments follow.

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:71
&gt; +    g_signal_handlers_disconnect_by_func(m_upowerClient.get(), reinterpret_cast&lt;void*&gt;(powerDeviceAlterationCallback), this);
&gt; +    m_upowerClient.clear();

Destroying the client should make disconnecting the functions unnecessary here, I think.

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:90
&gt; +        UpDevice* device = reinterpret_cast&lt;UpDevice*&gt;(g_ptr_array_index(devices, i));

A static cast should be sufficient, I think.

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:111
&gt; +        // energyRate should be signed according to the charging/discharging state.
&gt; +        energyRate = std::abs(energyRate);
&gt; +        energyRate = deviceState == UP_DEVICE_STATE_DISCHARGING ? -energyRate : energyRate;

Why is the sign of the energy rate from UPower unreliable? Could a device be charging, but still losing energy? For instance, if power is being supplied by USB, but the discharge rate is higher?

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:117
&gt; +        combinedDeviceState |= (1 &lt;&lt; deviceState);

combinedDeviceState appears to be unused and I&apos;m not sure I understand what&apos;s going on here.

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:130
&gt; +    if (combinedEnergyRate &gt;= 0) {

How about doing this?

double level = combinedEnergyCapacityFull &gt; 0 ? combinedEnergyCapacityCurrent / combinedEnergyCapacityFull : 1;
if (combinedEnergyRate &gt;= 0) {
    m_client-&gt;notifyBatteryStatusUpdated(true /* charging */,
                                                             3600.0 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate,
                                                             std::numeric_limits&lt;souble&gt;::infinity(), level);
   return;
}

    m_client-&gt;notifyBatteryStatusUpdated(false /* charging */,
                                                             std::numeric_limits&lt;souble&gt;::infinity(),
                                                             3600 * combinedEnergyCapacityCurrent / std::abs(combinedEnergyRate),
                                                             level);

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:132
&gt; +            chargingTime = 3600.0 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate;

I don&apos;t .0 is necessary here to force floating point math.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885912</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-07 12:18:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 200885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200885&amp;action=review
&gt; 
&gt; The UPower bits look okay to me. I&apos;m a bit confused how this hooks into WebCore since both the provider and client are unused. Is this supposed to hook into the WebKit layer somehow? Couple nitty comments follow.

Yes, BatteryProviderUPower is used in the WebKit layer.

In WebKit1, a BatteryClientGtk is required but its implementation is left empty so the feature wouldn&apos;t be available there. I think this is in the general spirit of WebKit1 being in maintenance mode, even though the implementation is quite simple to do. BatteryClientGtk is covered in bug #115628.

In WebKit2, the WebKitBatteryProvider, located in the UIProcess, covers handling the BatteryProviderUPower instance. WebKitBatteryProvider also serves as the client, relaying any status updates to the WebProcess where the WebBatteryClient class passes along the updates to the WebCore battery module. WebKitBatteryProvider is covered in bug #115720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886390</commentid>
    <comment_count>6</comment_count>
      <attachid>200885</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-08 10:46:26 -0700</bug_when>
    <thetext>Comment on attachment 200885
Patch

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

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:71
&gt;&gt; +    m_upowerClient.clear();
&gt; 
&gt; Destroying the client should make disconnecting the functions unnecessary here, I think.

Will remove.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:90
&gt;&gt; +        UpDevice* device = reinterpret_cast&lt;UpDevice*&gt;(g_ptr_array_index(devices, i));
&gt; 
&gt; A static cast should be sufficient, I think.

True.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:111
&gt;&gt; +        energyRate = deviceState == UP_DEVICE_STATE_DISCHARGING ? -energyRate : energyRate;
&gt; 
&gt; Why is the sign of the energy rate from UPower unreliable? Could a device be charging, but still losing energy? For instance, if power is being supplied by USB, but the discharge rate is higher?

The DBus energy rate documentation tells that the energy rate value is positive if the source is discharging and negative if charging.
http://upower.freedesktop.org/docs/Device.html#Device:EnergyRate

The glib wrapper for the device interface specifies the energy rate property with value between 0 and G_MAXDOUBLE.
http://cgit.freedesktop.org/upower/tree/libupower-glib/up-device.c#n1234

Given the latter fact I guess the std::abs call can be removed. OTOH, the issue here is either in the device DBus interface documentation or the glib wrapper.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:117
&gt;&gt; +        combinedDeviceState |= (1 &lt;&lt; deviceState);
&gt; 
&gt; combinedDeviceState appears to be unused and I&apos;m not sure I understand what&apos;s going on here.

This is a leftover from a previous approach to determining the charging state.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:130
&gt;&gt; +    if (combinedEnergyRate &gt;= 0) {
&gt; 
&gt; How about doing this?
&gt; 
&gt; double level = combinedEnergyCapacityFull &gt; 0 ? combinedEnergyCapacityCurrent / combinedEnergyCapacityFull : 1;
&gt; if (combinedEnergyRate &gt;= 0) {
&gt;     m_client-&gt;notifyBatteryStatusUpdated(true /* charging */,
&gt;                                                              3600.0 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate,
&gt;                                                              std::numeric_limits&lt;souble&gt;::infinity(), level);
&gt;    return;
&gt; }
&gt; 
&gt;     m_client-&gt;notifyBatteryStatusUpdated(false /* charging */,
&gt;                                                              std::numeric_limits&lt;souble&gt;::infinity(),
&gt;                                                              3600 * combinedEnergyCapacityCurrent / std::abs(combinedEnergyRate),
&gt;                                                              level);

Works as well.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:132
&gt;&gt; +            chargingTime = 3600.0 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate;
&gt; 
&gt; I don&apos;t .0 is necessary here to force floating point math.

No, it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886392</commentid>
    <comment_count>7</comment_count>
      <attachid>200885</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-08 10:51:54 -0700</bug_when>
    <thetext>Comment on attachment 200885
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:111
&gt;&gt;&gt; +        energyRate = deviceState == UP_DEVICE_STATE_DISCHARGING ? -energyRate : energyRate;
&gt;&gt; 
&gt;&gt; Why is the sign of the energy rate from UPower unreliable? Could a device be charging, but still losing energy? For instance, if power is being supplied by USB, but the discharge rate is higher?
&gt; 
&gt; The DBus energy rate documentation tells that the energy rate value is positive if the source is discharging and negative if charging.
&gt; http://upower.freedesktop.org/docs/Device.html#Device:EnergyRate
&gt; 
&gt; The glib wrapper for the device interface specifies the energy rate property with value between 0 and G_MAXDOUBLE.
&gt; http://cgit.freedesktop.org/upower/tree/libupower-glib/up-device.c#n1234
&gt; 
&gt; Given the latter fact I guess the std::abs call can be removed. OTOH, the issue here is either in the device DBus interface documentation or the glib wrapper.

Testing the UPower.Device DBus interface through dbus-send shows that the rate is positive when both charging and discharging, so I believe that the documentation is wrong here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886398</commentid>
    <comment_count>8</comment_count>
      <attachid>201084</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-08 11:20:30 -0700</bug_when>
    <thetext>Created attachment 201084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886399</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-08 11:22:31 -0700</bug_when>
    <thetext>Attachment 201084 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.cpp&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.h&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPowerClient.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;]&quot; exit_code: 1
Source/WebCore/platform/upower/BatteryProviderUPower.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/upower/BatteryProviderUPower.cpp:105:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886711</commentid>
    <comment_count>10</comment_count>
      <attachid>201084</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-09 02:15:49 -0700</bug_when>
    <thetext>Comment on attachment 201084
Patch

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

From a quick look, it seems this code does nothing. BatteryProviderUPowerClient has no concrete implementations. I do not see BatteryProviderUPower instantiated anywhere.

I am not very excited to see this land in WebCore/platform.

&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:135
&gt; +        double chargingTime = std::numeric_limits&lt;double&gt;::infinity();
&gt; +        if (combinedEnergyRate)
&gt; +            chargingTime = 3600 * (combinedEnergyCapacityFull - combinedEnergyCapacityCurrent) / combinedEnergyRate;
&gt; +        m_client-&gt;notifyBatteryStatusUpdated(true, chargingTime, 0, level);
&gt; +    } else {
&gt; +        double dischargingTime = 3600 * combinedEnergyCapacityCurrent / std::abs(combinedEnergyRate);
&gt; +        m_client-&gt;notifyBatteryStatusUpdated(false, 0, dischargingTime, level);

Once side of the branch protects again dividing by zero, the other does not.

I would be careful about using infinity (or even NaN) as part of an interface. That generally leads to disasters.

&gt; Source/WebCore/platform/upower/BatteryProviderUPowerClient.h:30
&gt; +    virtual void notifyBatteryStatusUpdated(bool charging, double chargingTime, double dischargingTime, double level) = 0;

This is a weird API. You pass both chargingTime and dischargingTime simultaneously but only one of the two make sense at any point.

It would make more sense to have two callback, one for charging, the other for discharge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886784</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-09 07:37:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; From a quick look, it seems this code does nothing. BatteryProviderUPowerClient has no concrete implementations. I do not see BatteryProviderUPower instantiated anywhere.

The WebKitBatteryProvider class does so, currently up for reviewing in bug #115720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886806</commentid>
    <comment_count>12</comment_count>
      <attachid>201084</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-09 08:03:03 -0700</bug_when>
    <thetext>Comment on attachment 201084
Patch

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

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPower.cpp:135
&gt;&gt; +        m_client-&gt;notifyBatteryStatusUpdated(false, 0, dischargingTime, level);
&gt; 
&gt; Once side of the branch protects again dividing by zero, the other does not.
&gt; 
&gt; I would be careful about using infinity (or even NaN) as part of an interface. That generally leads to disasters.

The fist branch covers the positive-or-zero values of the combinedEnergyRate variable, the second the negative ones, so the possible zero value of the combinedEnergyRate needs to be addressed only in the first branch.

&gt;&gt; Source/WebCore/platform/upower/BatteryProviderUPowerClient.h:30
&gt;&gt; +    virtual void notifyBatteryStatusUpdated(bool charging, double chargingTime, double dischargingTime, double level) = 0;
&gt; 
&gt; This is a weird API. You pass both chargingTime and dischargingTime simultaneously but only one of the two make sense at any point.
&gt; 
&gt; It would make more sense to have two callback, one for charging, the other for discharge.

The notifyBatteryStatusUpdated signature follows the BatteryStatus constructor signature[1] and parameter values passed to it reflect the ones the specification[2] suggests.

[1] http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/battery/BatteryStatus.h#L30
[2] http://www.w3.org/TR/battery-status/#attributes-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889179</commentid>
    <comment_count>13</comment_count>
      <attachid>201800</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-15 01:01:09 -0700</bug_when>
    <thetext>Created attachment 201800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889181</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-15 01:03:31 -0700</bug_when>
    <thetext>Attachment 201800 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.cpp&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPower.h&apos;, u&apos;Source/WebCore/platform/upower/BatteryProviderUPowerClient.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;]&quot; exit_code: 1
Source/WebCore/platform/upower/BatteryProviderUPower.cpp:103:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889183</commentid>
    <comment_count>15</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-15 01:12:59 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=201800) [details]
&gt; Patch

This patch simplifies the BatteryProviderUPowerClient interface, only providing one method that can be used to report both unavailability of the battery status and the valid charging and discharging states.

In the first case, only the NotAvailable BatteryProvideUPowerStatus has to be used as the first parameter of the client&apos;s updateBatteryStatus call, the other two parameters have no real meaning when the battery status is not available.

In the second case, the first parameter notes the battery is either charging or discharging, with the second parameter being the time left until the battery is fully charged or completely depleted, depending on the status. The third parameter represents the current battery level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940816</commentid>
    <comment_count>16</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-17 10:09:30 -0700</bug_when>
    <thetext>I don&apos;t like that this adds yet another platform subdirectory. Can&apos;t this go inside platform/glib or platform/gtk or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940821</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-10-17 10:25:18 -0700</bug_when>
    <thetext>GLib probably makes sense since this uses UPower GLib. In the long term, having a single directory for Linuxy/FreeDesktop systems is probably sensible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947653</commentid>
    <comment_count>18</comment_count>
      <attachid>216160</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-06 03:54:41 -0800</bug_when>
    <thetext>Created attachment 216160
Patch

Rebased patch, with the UPower battery provider files moved under Source/WebCore/platform/glib/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957879</commentid>
    <comment_count>19</comment_count>
      <attachid>218758</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-09 07:31:13 -0800</bug_when>
    <thetext>Created attachment 218758
Rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957881</commentid>
    <comment_count>20</comment_count>
      <attachid>218759</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-09 07:32:34 -0800</bug_when>
    <thetext>Created attachment 218759
Rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958694</commentid>
    <comment_count>21</comment_count>
      <attachid>218759</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-11 06:27:21 -0800</bug_when>
    <thetext>Comment on attachment 218759
Rebased patch.

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

&gt; Source/WebCore/platform/glib/BatteryProviderUPower.cpp:92
&gt; +        bool isPresent;

This should be gboolean.

&gt; Source/WebCore/platform/glib/BatteryProviderUPowerClient.h:35
&gt; +    virtual void updateBatteryStatus(BatteryProviderUPowerStatus, double timeRemaining = 0, double level = 0) = 0;

I&apos;d prefer secondsRemaining if that&apos;s the unit here. timeRemaining doesn&apos;t make it clear what the unit of the value is. Likewise level might be better termed fillRatio or something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958775</commentid>
    <comment_count>22</comment_count>
      <attachid>218759</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-11 10:01:31 -0800</bug_when>
    <thetext>Comment on attachment 218759
Rebased patch.

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

&gt;&gt; Source/WebCore/platform/glib/BatteryProviderUPowerClient.h:35
&gt;&gt; +    virtual void updateBatteryStatus(BatteryProviderUPowerStatus, double timeRemaining = 0, double level = 0) = 0;
&gt; 
&gt; I&apos;d prefer secondsRemaining if that&apos;s the unit here. timeRemaining doesn&apos;t make it clear what the unit of the value is. Likewise level might be better termed fillRatio or something similar.

&apos;secondsRemaining&apos; is better. I&apos;ll rename &apos;level&apos; to &apos;batteryLevel&apos; to explicitly tie it to that concept. To me, &apos;fillRatio&apos; is a bit unrelated to battery information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958778</commentid>
    <comment_count>23</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-11 10:13:47 -0800</bug_when>
    <thetext>Committed r160444: &lt;http://trac.webkit.org/changeset/160444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959535</commentid>
    <comment_count>24</comment_count>
    <who name="Bastien Nocera">bugzilla</who>
    <bug_when>2013-12-13 03:56:15 -0800</bug_when>
    <thetext>Why doesn&apos;t this patch use the new UPower API, in particular the /org/freedesktop/UPower/devices/DisplayDevice object that would avoid doing the sketchy things (combinedEnergyRate...) you do in updateBatteryStatus().

Compare your version with the UPower version:
http://cgit.freedesktop.org/upower/tree/src/up-daemon.c#n182</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200885</attachid>
            <date>2013-05-07 03:27:59 -0700</date>
            <delta_ts>2013-05-08 11:20:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115719-20130507122705.patch</filename>
            <type>text/plain</type>
            <size>17045</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNjFlYWJjMDFiNDZi
ZWMzNmM5YTlkMjFlNzBlN2E1ODlkMDZjYTFmLi4wNGM3Yzg2MjQzMjY1YzJkNWJmNzI5MjE4N2Q1
NDM3ZDJmYzFmZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNyAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdXBvd2VyIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBzZWFyY2hlZAor
ICAgICAgICBmb3IgaGVhZGVyIGluY2x1c2lvbi4gQWRkIHRoZSB1cG93ZXItZ2xpYiBkZXBlbmRl
bmN5IENGTEFHUyB0byB0aGUgbGlzdCBvZiBsaWJQbGF0Zm9ybSdzIENQUEZMQUdTLgorCiAyMDEz
LTA1LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBNb3ZlIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlIGludG8gbGliUGxhdGZvcm0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3YTAzYTVhYzUyNjJkYWQxMTBkOTFjOTc2MzdlMjVjZWRhZDFjMGM3Li41YmZi
NDIyZmEzNGY2NDc5OWUzODllYTkyYTQyZGU1MDczNWUwZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNTAgQEAKIDIwMTMtMDUtMDcgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5j
b20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBb
R1RLXSBBZGQgYSBVUG93ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3MTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIEJhdHRlcnlQcm92
aWRlclVQb3dlciwgYSBwcm92aWRlciBvZiB0aGUgc3lzdGVtJ3MgYmF0dGVyeSBzdGF0dXMgdGhh
dCBwcm9kdWNlcyB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgdXNpbmcgdGhlIHVwb3dlci1nbGli
IGxpYnJhcnkuCisKKyAgICAgICAgVGhlIEJhdHRlcnlQcm92aWRlclVQb3dlciBjcmVhdGVzIGEg
bmV3IFVQb3dlciBjbGllbnQgd2hlbiB0aGUgcHJvdmlkZXIgc2hvdWxkIHN0YXJ0IGVtaXR0aW5n
IHVwZGF0ZXMgYW5kIGhvb2tzCisgICAgICAgIHVwIHRvIGRldmljZSBhbHRlcmF0aW9uIHNpZ25h
bHMuIFRoZXNlIG9ubHkgZmlyZSByZWNhbGN1bGF0aW9uIG9mIHRoZSBiYXR0ZXJ5IHN0YXR1cyB3
aGVuIGEgYmF0dGVyeSBkZXZpY2UgaXMgYWx0ZXJlZC4KKworICAgICAgICBXaGVuIHJlY2FsY3Vs
YXRpbmcsIGV2ZXJ5IGJhdHRlcnkgZGV2aWNlIGlzIHRha2VuIGludG8gYWNjb3VudCwgYWNjdW11
bGF0aW5nIHRoZSBlbmVyZ3kgY2FwYWNpdGllcyB3aGVuIGJvdGggZW1wdHkKKyAgICAgICAgYW5k
IGZ1bGwsIHRoZSBjdXJyZW50IHJhdGUgb2YgZW5lcmd5IGNoYXJnaW5nL2Rpc2NoYXJnaW5nLCBh
bmQgdGhlIGJhdHRlcnkgc3RhdHVzICh3aGV0aGVyIHRoZSBkZXZpY2UgaXMgY2hhcmdpbmcgb3IK
KyAgICAgICAgZGlzY2hhcmdpbmcpLiBUaGlzIGdpdmVzIGEgc2V0IG9mIGRhdGEgdGhhdCBjb3Zl
cnMgdGhlIG92ZXJhbGwgYmF0dGVyeSBzdGF0dXMgb2YgdGhlIHN5c3RlbS4KKworICAgICAgICBU
aGlzIGRhdGEgaXMgdGhlbiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYmF0dGVyeSBzdGF0dXMgYXMg
cGVyY2VpdmVkIGJ5IHRoZSBXZWJDb3JlIGltcGxlbWVudGF0aW9uLiBDaGFyZ2luZyBpcyBkZXRl
cm1pbmVkCisgICAgICAgIGJ5IGV4YW1pbmluZyB0aGUgaW50ZWdyYWwgc2lnbiBvZiB0aGUgY3Vy
cmVudCBlbmVyZ3kgcmF0ZS4gQ2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWVzIGFyZSBjYWxj
dWxhdGVkLCB3aGVuCisgICAgICAgIGFwcHJvcHJpYXRlLCBieSBkaXZpZGluZyB0aGUgY2hhcmdh
YmxlL2Rpc2NoYXJnYWJsZSBjYXBhY2l0eSB3aXRoIHRoZSBjdXJyZW50IGVuZXJneSByYXRlLiBU
aGUgYmF0dGVyeSBsZXZlbCBpcyBjYWxjdWxhdGVkCisgICAgICAgIGJ5IGRpdmlkaW5nIHRoZSBj
dXJyZW50IGVuZXJneSBjYXBhY2l0eSB3aXRoIHRoZSBmdWxsIGVuZXJneSBjYXBhY2l0eSAoaS5l
LiB0aGUgY29tYmluZWQgY2FwYWNpdHkgb2YgYWxsIHRoZSBiYXR0ZXJpZXMgdGhhdAorICAgICAg
ICB0aGUgc3lzdGVtIHBvc3Nlc3NlcykuIFRoZSBmaW5hbCBzdGF0dXMgaXMgKGluZGlyZWN0bHkp
IHBhc3NlZCBvbnRvIEJhdHRlcnlNYW5hZ2VyIGJ5IGludm9raW5nIHRoZSBub3RpZnlCYXR0ZXJ5
U3RhdHVzVXBkYXRlZAorICAgICAgICBtZXRob2Qgb24gdGhlIGNsaWVudC4KKworICAgICAgICBX
aGVuZXZlciB0aGUgaW1wbGVtZW50YXRpb24gY2Fubm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9u
IGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cyBvZiB0aGUgc3lzdGVtLCB0aGUgY2xpZW50J3MKKyAg
ICAgICAgbm90aWZ5QmF0dGVyeVN0YXR1c1VuYXZhaWxhYmxlIG1ldGhvZCBpcyBpbnZva2VkLiBJ
biB0aGF0IGNhc2UgdGhlIGNsaWVudCBzaG91bGQgcHJvdmlkZSB0aGUgQmF0dGVyeU1hbmFnZXIg
d2l0aAorICAgICAgICB0aGUgJ2RlZmF1bHQnIGJhdHRlcnkgc3RhdHVzIC0gY2hhcmdpbmcsIHRo
ZSBiYXR0ZXJ5IGxldmVsIGJlaW5nIGF0IDEuMCBhbmQgYm90aCB0aGUgY2hhcmdpbmcgYW5kIGRp
c2NoYXJnaW5nIHRpbWUgaGF2aW5nCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgcG9zaXRpdmUg
aW5maW5pdHkgKGFzIHBlciB0aGUgQmF0dGVyeSBTdGF0dXMgQVBJIHNwZWNpZmljYXRpb24pLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIG5ldyBmdW5jdGlvbmFsaXR5LiBUaGUgZmVhdHVy
ZSBpcyBub3QgeWV0IGVuYWJsZWQuIFdoZW4gZW5hYmxlZCwgdGhlIHJlbGV2YW50IHRlc3RzIHBh
c3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgdGhlIEJhdHRlcnlQcm92
aWRlclVQb3dlcihDbGllbnQpIGJ1aWxkIHRhcmdldHMuCisgICAgICAgICogcGxhdGZvcm0vdXBv
d2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHA6IEFkZGVkLgorICAgICAgICAocG93ZXJEZXZp
Y2VBbHRlcmF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpC
YXR0ZXJ5UHJvdmlkZXJVUG93ZXIpOgorICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpz
dGFydFVwZGF0aW5nKToKKyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RvcFVwZGF0
aW5nKToKKyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcjo6dXBkYXRlQmF0dGVyeVN0YXR1
cyk6CisgICAgICAgICogcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXJDbGllbnQpOgorCisyMDEzLTA1LTA3ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBp
Z2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAg
ICAgICAgW0dUS10gUGx1bWIgdGhlIEF1dG9tYWtlIGJ1aWxkIHN5c3RlbSBmb3IgdGhlIEJhdHRl
cnkgU3RhdHVzIEFQSSBmZWF0dXJlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTU3MTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGU4OTk1YjUwN2Q3MTNl
OWJiNjkyYWY0ZTI5YWU1NDkzZDE2OTBhOTYuLmQ1Y2I4MTI0MGUzMTk4YjUyYzBlNjVhMTE2MDA1
ZDdmMWEwMzg3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNS0w
NyAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1i
YXNlZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTMtMDUtMDYgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgR2VvbG9jYXRp
b25Qcm92aWRlckdlb2NsdWUgaW50byBsaWJQbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU0OTBhYmJj
Y2UyNzc0MWQ5ZGFkYjgwOTAwZTcyNmRjZDFkMjJjYzAuLmQzZjc2NmI0NTE0NDVlMjgzNmI3MWE1
ZTg5NjY4Mjk2YWFhOGRiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNS0w
NyAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1i
YXNlZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTMtMDUtMDYgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPd25QdHIgaW5zdGVhZCBvZiBkZWxl
dGVBbGxWYWx1ZXMgaW4gS2V5ZnJhbWVWYWx1ZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA4MGM0NjE0MGE1ZDU0ZjY0MTgxOWY1ZjUwOTU5ZjRiMGE5MzAzODgyLi45NmNhMzJiNDc4OWMw
Y2FiZmQ0M2U5NzYzNTczNDAxZTAyMDhjYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCkBAIC00
Miw3ICs0Miw4IEBAIHBsYXRmb3JtX3dlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91cG93ZXIKIAogbm9pbnN0X0xU
TElCUkFSSUVTICs9IFwKIAlsaWJQbGF0Zm9ybS5sYSBcCkBAIC02OSw3ICs3MCw4IEBAIGxpYlBs
YXRmb3JtX2xhX0NQUEZMQUdTID0gXAogCSQoQ0FJUk9fQ0ZMQUdTKSBcCiAJJChHRU9DTFVFX0NG
TEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJJChM
SUJTT1VQX0NGTEFHUykgXAorCSQoVVBPV0VSX0dMSUJfQ0ZMQUdTKQogCiBsaWJQbGF0Zm9ybUd0
a19sYV9TT1VSQ0VTID0gXAogCSQocGxhdGZvcm1ndGtfc291cmNlcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDJjMDk1Y2JlNTAyOGMyZWM3YzJjMTgzNzVkOGRhMTI4MGNlNGVm
Y2IuLmNmMGFlNTA1YmJiMTc4ZGUzYWU0ZWQ1MTExNjdjY2M0MDc0N2FhMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjE0Miw2ICs2MTQyLDkgQEAgcGxhdGZvcm1fc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3Vw
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxz
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93
ZXJDbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92
aWRlclVQb3dlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3Vw
cG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDIxMGMwMDZkYzllYTlhMzllZmNkOTQ0OTVmMWI1YmJkZDg0MjdlZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIuaCIKKworI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKKworI2luY2x1ZGUg
IkJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1
ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgdm9pZCBwb3dlckRldmljZUFsdGVyYXRpb25DYWxs
YmFjayhVcENsaWVudCogdXBvd2VyQ2xpZW50LCBVcERldmljZSogdXBvd2VyRGV2aWNlLCBCYXR0
ZXJ5UHJvdmlkZXJVUG93ZXIqIHByb3ZpZGVyKQoreworICAgIFVwRGV2aWNlS2luZCBkZXZpY2VL
aW5kOworICAgIGdfb2JqZWN0X2dldCh1cG93ZXJEZXZpY2UsICJraW5kIiwgJmRldmljZUtpbmQs
IE5VTEwpOworICAgIGlmIChkZXZpY2VLaW5kICE9IFVQX0RFVklDRV9LSU5EX0JBVFRFUlkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHByb3ZpZGVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7Cit9
CisKK0JhdHRlcnlQcm92aWRlclVQb3dlcjo6QmF0dGVyeVByb3ZpZGVyVVBvd2VyKEJhdHRlcnlQ
cm92aWRlclVQb3dlckNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9pc1VwZGF0aW5nKGZhbHNlKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7Cit9CisKK3Zv
aWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBBU1NFUlQo
IW1fdXBvd2VyQ2xpZW50KTsKKyAgICBtX3Vwb3dlckNsaWVudCA9IGFkb3B0R1JlZih1cF9jbGll
bnRfbmV3KCkpOworCisgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIGlmICghdXBfY2xp
ZW50X2VudW1lcmF0ZV9kZXZpY2VzX3N5bmMobV91cG93ZXJDbGllbnQuZ2V0KCksIDAsICZlcnJv
ci5vdXRQdHIoKSkpIHsKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUJhdHRlcnlTdGF0dXNVbmF2
YWlsYWJsZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ19zaWduYWxfY29ubmVj
dChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRldmljZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhwb3dl
ckRldmljZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV91cG93ZXJDbGllbnQuZ2V0KCksICJkZXZpY2UtYWRkZWQiLCBHX0NBTExCQUNLKHBvd2VyRGV2
aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vw
b3dlckNsaWVudC5nZXQoKSwgImRldmljZS1yZW1vdmVkIiwgR19DQUxMQkFDSyhwb3dlckRldmlj
ZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOworCisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsK
KyAgICB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7Cit9CisKK3ZvaWQgQmF0dGVyeVByb3ZpZGVyVVBv
d2VyOjpzdG9wVXBkYXRpbmcoKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3Vwb3dlckNsaWVudC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocG93
ZXJEZXZpY2VBbHRlcmF0aW9uQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX3Vwb3dlckNsaWVudC5j
bGVhcigpOworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworfQorCit2b2lkIEJhdHRlcnlQcm92
aWRlclVQb3dlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cygpCit7CisgICAgaWYgKCFtX2lzVXBkYXRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIEdQdHJBcnJheSogZGV2aWNlcyA9IHVwX2NsaWVu
dF9nZXRfZGV2aWNlcyhtX3Vwb3dlckNsaWVudC5nZXQoKSk7CisgICAgaWYgKCFkZXZpY2VzKSB7
CisgICAgICAgIG1fY2xpZW50LT5ub3RpZnlCYXR0ZXJ5U3RhdHVzVW5hdmFpbGFibGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU9mQmF0dGVyeURldmljZXMg
PSAwLCBjb21iaW5lZERldmljZVN0YXRlID0gMDsKKyAgICBkb3VibGUgY29tYmluZWRFbmVyZ3lD
YXBhY2l0eUN1cnJlbnQgPSAwLCBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCA9IDAsIGNvbWJp
bmVkRW5lcmd5UmF0ZSA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGV2aWNl
cy0+bGVuOyBpKyspIHsKKyAgICAgICAgVXBEZXZpY2UqIGRldmljZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VXBEZXZpY2UqPihnX3B0cl9hcnJheV9pbmRleChkZXZpY2VzLCBpKSk7CisgICAgICAgIFVw
RGV2aWNlS2luZCBkZXZpY2VLaW5kOworICAgICAgICBVcERldmljZVN0YXRlIGRldmljZVN0YXRl
OworICAgICAgICBib29sIGlzUHJlc2VudDsKKyAgICAgICAgZG91YmxlIGVuZXJneUNhcGFjaXR5
Q3VycmVudCA9IDAsIGVuZXJneUNhcGFjaXR5RW1wdHkgPSAwLCBlbmVyZ3lDYXBhY2l0eUZ1bGwg
PSAwLCBlbmVyZ3lSYXRlID0gMDsKKworICAgICAgICBnX29iamVjdF9nZXQoZGV2aWNlLAorICAg
ICAgICAgICAgImVuZXJneSIsICZlbmVyZ3lDYXBhY2l0eUN1cnJlbnQsCisgICAgICAgICAgICAi
ZW5lcmd5LWVtcHR5IiwgJmVuZXJneUNhcGFjaXR5RW1wdHksCisgICAgICAgICAgICAiZW5lcmd5
LWZ1bGwiLCAmZW5lcmd5Q2FwYWNpdHlGdWxsLAorICAgICAgICAgICAgImVuZXJneS1yYXRlIiwg
JmVuZXJneVJhdGUsCisgICAgICAgICAgICAiaXMtcHJlc2VudCIsICZpc1ByZXNlbnQsCisgICAg
ICAgICAgICAia2luZCIsICZkZXZpY2VLaW5kLAorICAgICAgICAgICAgInN0YXRlIiwgJmRldmlj
ZVN0YXRlLAorICAgICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgaWYgKGRldmljZUtpbmQgIT0g
VVBfREVWSUNFX0tJTkRfQkFUVEVSWSB8fCAhaXNQcmVzZW50KQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLy8gZW5lcmd5UmF0ZSBzaG91bGQgYmUgc2lnbmVkIGFjY29yZGluZyB0
byB0aGUgY2hhcmdpbmcvZGlzY2hhcmdpbmcgc3RhdGUuCisgICAgICAgIGVuZXJneVJhdGUgPSBz
dGQ6OmFicyhlbmVyZ3lSYXRlKTsKKyAgICAgICAgZW5lcmd5UmF0ZSA9IGRldmljZVN0YXRlID09
IFVQX0RFVklDRV9TVEFURV9ESVNDSEFSR0lORyA/IC1lbmVyZ3lSYXRlIDogZW5lcmd5UmF0ZTsK
KworICAgICAgICBudW1PZkJhdHRlcnlEZXZpY2VzKys7CisgICAgICAgIGNvbWJpbmVkRW5lcmd5
Q2FwYWNpdHlDdXJyZW50ICs9IGVuZXJneUNhcGFjaXR5Q3VycmVudCAtIGVuZXJneUNhcGFjaXR5
RW1wdHk7CisgICAgICAgIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsICs9IGVuZXJneUNhcGFj
aXR5RnVsbDsKKyAgICAgICAgY29tYmluZWRFbmVyZ3lSYXRlICs9IGVuZXJneVJhdGU7CisgICAg
ICAgIGNvbWJpbmVkRGV2aWNlU3RhdGUgfD0gKDEgPDwgZGV2aWNlU3RhdGUpOworICAgIH0KKwor
ICAgIGdfcHRyX2FycmF5X3VucmVmKGRldmljZXMpOworCisgICAgaWYgKCFudW1PZkJhdHRlcnlE
ZXZpY2VzKSB7CisgICAgICAgIG1fY2xpZW50LT5ub3RpZnlCYXR0ZXJ5U3RhdHVzVW5hdmFpbGFi
bGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgY2hhcmdpbmcgPSB0cnVl
OworICAgIGRvdWJsZSBjaGFyZ2luZ1RpbWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCksIGRpc2NoYXJnaW5nVGltZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c291Ymxl
Pjo6aW5maW5pdHkoKSwgbGV2ZWwgPSAxLjA7CisKKyAgICBpZiAoY29tYmluZWRFbmVyZ3lSYXRl
ID49IDApIHsKKyAgICAgICAgaWYgKGNvbWJpbmVkRW5lcmd5UmF0ZSkKKyAgICAgICAgICAgIGNo
YXJnaW5nVGltZSA9IDM2MDAuMCAqIChjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCAtIGNvbWJp
bmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50KSAvIGNvbWJpbmVkRW5lcmd5UmF0ZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBjaGFyZ2luZyA9IGZhbHNlOworICAgICAgICBkaXNjaGFyZ2luZ1RpbWUg
PSAzNjAwICogY29tYmluZWRFbmVyZ3lDYXBhY2l0eUN1cnJlbnQgLyBzdGQ6OmFicyhjb21iaW5l
ZEVuZXJneVJhdGUpOworICAgIH0KKworICAgIGlmIChjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVs
bCA+IDApCisgICAgICAgIGxldmVsID0gY29tYmluZWRFbmVyZ3lDYXBhY2l0eUN1cnJlbnQgLyBj
b21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbDsKKworICAgIG1fY2xpZW50LT5ub3RpZnlCYXR0ZXJ5
U3RhdHVzVXBkYXRlZChjaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxl
dmVsKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTYwOWJiNjVhOGM1MmU4ODE1MThkOTVmZGVmZjRjNWM2MTg3ZDE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92
aWRlclVQb3dlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAorI2RlZmluZSBCYXR0
ZXJ5UHJvdmlkZXJVUG93ZXJfaAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjaW5j
bHVkZSA8bGlidXBvd2VyLWdsaWIvdXBvd2VyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJhdHRlcnlQcm92aWRlclVQ
b3dlckNsaWVudDsKKworY2xhc3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIHsKK3B1YmxpYzoKKyAg
ICBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50Kik7CisK
KyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisg
ICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7CisKK3ByaXZhdGU6CisgICAgQmF0dGVyeVBy
b3ZpZGVyVVBvd2VyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIEdSZWZQdHI8VXBDbGllbnQ+IG1f
dXBvd2VyQ2xpZW50OworCisgICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRl
cnlQcm92aWRlclVQb3dlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2Vy
L0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNWI5Y2Q5M2I0ZmM5
NzRjY2U4NWZmNDNiYmM5MzFlOGM5ZWY1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudF9oCisjZGVmaW5lIEJhdHRlcnlQcm92aWRlclVQ
b3dlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QmF0dGVyeVN0YXR1c1VuYXZhaWxhYmxlKCk7CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUJhdHRlcnlTdGF0dXNVcGRhdGVkKGJvb2wgY2hhcmdpbmcsIGRv
dWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUsIGRvdWJsZSBsZXZlbCkg
PSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjZW5k
aWYgLy8gQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KaW5kZXggM2E1MWM1MjMyN2FlODg4ZmYwNDZjYzBhYzlhMjhlYzM4OWYzZjhiMy4uNDg2NmFj
MzkxMmE2ZTI5NWZjMzcwMjA3OTdkZjU5NjI3ODY1N2RhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KQEAgLTY5LDYgKzY5LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUEYKIAkkKExJQlhT
TFRfQ0ZMQUdTKSBcCiAJJChTUUxJVEUzX0NGTEFHUykgXAogCSQoVU5JQ09ERV9DRkxBR1MpIFwK
KwkkKFVQT1dFUl9HTElCX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfQ0ZMQUdTKSBcCiAJJChYREFN
QUdFX0NGTEFHUykgXAogCSQoWFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM2
ZjJjZGYzYmJiZjdmN2IyMmVlNjlmNDFmNDhlZDllMjA4ZjcwYWYuLjg5OWQyNzAzZTkzNTk3MzFl
OWU5MDQ5YTUzYThlZWI4MDUzOGNmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDksNiAr
MjQ5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJ
VEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoVVBPV0VSX0dMSUJfTElCUykgXAog
CSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykg
XAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201084</attachid>
            <date>2013-05-08 11:20:30 -0700</date>
            <delta_ts>2013-05-15 01:00:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115719-20130508201935.patch</filename>
            <type>text/plain</type>
            <size>16988</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNjFlYWJjMDFiNDZi
ZWMzNmM5YTlkMjFlNzBlN2E1ODlkMDZjYTFmLi4wNGM3Yzg2MjQzMjY1YzJkNWJmNzI5MjE4N2Q1
NDM3ZDJmYzFmZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0wNyAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdXBvd2VyIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBzZWFyY2hlZAor
ICAgICAgICBmb3IgaGVhZGVyIGluY2x1c2lvbi4gQWRkIHRoZSB1cG93ZXItZ2xpYiBkZXBlbmRl
bmN5IENGTEFHUyB0byB0aGUgbGlzdCBvZiBsaWJQbGF0Zm9ybSdzIENQUEZMQUdTLgorCiAyMDEz
LTA1LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBNb3ZlIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlIGludG8gbGliUGxhdGZvcm0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYTMyZWMyYmJlZjVjM2EzN2U4OGFiN2Q1Y2I1Y2M0NWQ1YWNlYTQ2Li42MzQ4
NDZkYzNmM2VmZDk4Nzg3N2E3MTZhZDRhNjZhZDRjZGU5MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNTIgQEAKIDIwMTMtMDUtMDcgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5j
b20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBb
R1RLXSBBZGQgYSBVUG93ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3MTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIEJhdHRlcnlQcm92
aWRlclVQb3dlciwgYSBwcm92aWRlciBvZiB0aGUgc3lzdGVtJ3MgYmF0dGVyeSBzdGF0dXMgdGhh
dCBwcm9kdWNlcyB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgdXNpbmcgdGhlIHVwb3dlci1nbGli
IGxpYnJhcnkuCisKKyAgICAgICAgVGhlIEJhdHRlcnlQcm92aWRlclVQb3dlciBjcmVhdGVzIGEg
bmV3IFVQb3dlciBjbGllbnQgd2hlbiB0aGUgcHJvdmlkZXIgc2hvdWxkIHN0YXJ0IGVtaXR0aW5n
IHVwZGF0ZXMgYW5kIGhvb2tzCisgICAgICAgIHVwIHRvIGRldmljZSBhbHRlcmF0aW9uIHNpZ25h
bHMuIFRoZXNlIG9ubHkgZmlyZSByZWNhbGN1bGF0aW9uIG9mIHRoZSBiYXR0ZXJ5IHN0YXR1cyB3
aGVuIGEgYmF0dGVyeSBkZXZpY2UgaXMgYWx0ZXJlZC4KKworICAgICAgICBXaGVuIHJlY2FsY3Vs
YXRpbmcsIGV2ZXJ5IGJhdHRlcnkgZGV2aWNlIGlzIHRha2VuIGludG8gYWNjb3VudCwgYWNjdW11
bGF0aW5nIHRoZSBlbmVyZ3kgY2FwYWNpdGllcyB3aGVuIGJvdGggZW1wdHkKKyAgICAgICAgYW5k
IGZ1bGwsIHRoZSBjdXJyZW50IHJhdGUgb2YgZW5lcmd5IGNoYXJnaW5nL2Rpc2NoYXJnaW5nLCBh
bmQgdGhlIGJhdHRlcnkgc3RhdHVzICh3aGV0aGVyIHRoZSBkZXZpY2UgaXMgY2hhcmdpbmcgb3IK
KyAgICAgICAgZGlzY2hhcmdpbmcpLiBUaGlzIGdpdmVzIGEgc2V0IG9mIGRhdGEgdGhhdCBjb3Zl
cnMgdGhlIG92ZXJhbGwgYmF0dGVyeSBzdGF0dXMgb2YgdGhlIHN5c3RlbS4KKworICAgICAgICBU
aGlzIGRhdGEgaXMgdGhlbiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYmF0dGVyeSBzdGF0dXMgYXMg
cGVyY2VpdmVkIGJ5IHRoZSBXZWJDb3JlIGltcGxlbWVudGF0aW9uLiBDaGFyZ2luZyBpcyBkZXRl
cm1pbmVkCisgICAgICAgIGJ5IGV4YW1pbmluZyB0aGUgaW50ZWdyYWwgc2lnbiBvZiB0aGUgY3Vy
cmVudCBjb21iaW5lZCBlbmVyZ3kgcmF0ZS4gQ2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWVz
IGFyZSBjYWxjdWxhdGVkLCB3aGVuCisgICAgICAgIGFwcHJvcHJpYXRlLCBieSBkaXZpZGluZyB0
aGUgY2hhcmdhYmxlL2Rpc2NoYXJnYWJsZSBjYXBhY2l0eSB3aXRoIHRoZSBjdXJyZW50IGNvbWJp
bmVkIGVuZXJneSByYXRlLiBUaGUgYmF0dGVyeSBsZXZlbCBpcworICAgICAgICBjYWxjdWxhdGVk
IGJ5IGRpdmlkaW5nIHRoZSBjdXJyZW50IGVuZXJneSBjYXBhY2l0eSB3aXRoIHRoZSBmdWxsIGVu
ZXJneSBjYXBhY2l0eSAoaS5lLiB0aGUgY29tYmluZWQgY2FwYWNpdHkgb2YgYWxsCisgICAgICAg
IHRoZSBiYXR0ZXJpZXMgdGhhdCB0aGUgc3lzdGVtIHBvc3Nlc3NlcykuIFRoZSBmaW5hbCBzdGF0
dXMgaXMgKGluZGlyZWN0bHkpIHBhc3NlZCBvbnRvIEJhdHRlcnlNYW5hZ2VyIGJ5IGludm9raW5n
IHRoZQorICAgICAgICBub3RpZnlCYXR0ZXJ5U3RhdHVzVXBkYXRlZCBtZXRob2Qgb24gdGhlIGNs
aWVudC4KKworICAgICAgICBXaGVuZXZlciB0aGUgaW1wbGVtZW50YXRpb24gY2Fubm90IHByb3Zp
ZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cyBvZiB0aGUgc3lzdGVt
LCB0aGUgY2xpZW50J3MKKyAgICAgICAgbm90aWZ5QmF0dGVyeVN0YXR1c1VuYXZhaWxhYmxlIG1l
dGhvZCBpcyBpbnZva2VkLiBJbiB0aGF0IGNhc2UgdGhlIGNsaWVudCBzaG91bGQgcHJvdmlkZSB0
aGUgQmF0dGVyeU1hbmFnZXIgd2l0aAorICAgICAgICB0aGUgJ2RlZmF1bHQnIGJhdHRlcnkgc3Rh
dHVzIC0gY2hhcmdpbmcsIHRoZSBiYXR0ZXJ5IGxldmVsIGJlaW5nIGF0IDEuMCBhbmQgYm90aCB0
aGUgY2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWUgaGF2aW5nCisgICAgICAgIHRoZSB2YWx1
ZSBvZiB0aGUgcG9zaXRpdmUgaW5maW5pdHkgKGFzIHBlciB0aGUgQmF0dGVyeSBTdGF0dXMgQVBJ
IHNwZWNpZmljYXRpb24pLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBoZWF2aWx5
IGluc3BpcmVkIGJ5IGEgc2ltaWxhciBhcHByb2FjaCB0byBjYWxjdWxhdGluZyBiYXR0ZXJ5IHN0
YXR1cyBpbiBHTk9NRSBTZXR0aW5ncyBEYWVtb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0g
bm8gbmV3IGZ1bmN0aW9uYWxpdHkuIFRoZSBmZWF0dXJlIGlzIG5vdCB5ZXQgZW5hYmxlZC4gV2hl
biBlbmFibGVkLCB0aGUgcmVsZXZhbnQgdGVzdHMgcGFzcy4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IEFkZCB0aGUgQmF0dGVyeVByb3ZpZGVyVVBvd2VyKENsaWVudCkgYnVpbGQg
dGFyZ2V0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayk6Cisg
ICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OkJhdHRlcnlQcm92aWRlclVQb3dlcik6Cisg
ICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAo
QmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoQmF0dGVyeVBy
b3ZpZGVyVVBvd2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS91
cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3Vw
b3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudCk6CisKKzIwMTMtMDUt
MDcgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBQbHVtYiB0aGUgQXV0
b21ha2UgYnVpbGQgc3lzdGVtIGZvciB0aGUgQmF0dGVyeSBTdGF0dXMgQVBJIGZlYXR1cmUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxOAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggYjhlZThkNzNhNGNhNzcxZGEwOTg4NDM0NDU0YWIxZWY0MjlkYWJm
YS4uNWRhNzQwNjlmOTUwNDZhODIwMDg3YmFhYTg1YjJiYmU2MzI3Y2ExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA1LTA3ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRh
cGVuYUBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogQWRkIHRoZSB1cG93ZXItZ2xpYiBsaWJyYXJ5IHRvIHRoZSBsaWJ3ZWJraXRndGsgbGli
cmFyeS4KKwogMjAxMy0wNS0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgog
CiAgICAgICAgIFtHVEtdIEluaXRpYWxpemUgV2ViS2l0V2ViUGx1Z2luIHBhdGggdG8gcHJldmVu
dCBkb3VibGUtZnJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ2NGE4ZGJmNjFkZGYwMjJkN2Y3NjAxNDgwODEy
YzgwNjVlZDY1YzMuLjllZjczNTExY2Y2YTljYWU2MmYxODVlYjdlZTJmYTA1Mjg3NjljZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNS0wNyAgSm9zw6kgRGFwZW5hIFBheiAg
PGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNlZCBCYXR0ZXJ5UHJvdmlkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06IEFkZCB0aGUgdXBvd2VyLWdsaWIgbGlicmFyeSB0byB0aGUgbGlid2Via2l0Mmd0
ayBsaWJyYXJ5LgorCiAyMDEzLTA1LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEJpbmFyeVNlbWFwaG9yZVdpbi5jcHAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvUGxhdGZvcm0vR05V
bWFrZWZpbGUuYW0KaW5kZXggODBjNDYxNDBhNWQ1NGY2NDE4MTlmNWY1MDk1OWY0YjBhOTMwMzg4
Mi4uOTZjYTMyYjQ3ODljMGNhYmZkNDNlOTc2MzU3MzQwMWUwMjA4Y2M4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVt
YWtlZmlsZS5hbQpAQCAtNDIsNyArNDIsOCBAQCBwbGF0Zm9ybV93ZWJjb3JlX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwIFwKLQktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0CisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dCBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBv
d2VyCiAKIG5vaW5zdF9MVExJQlJBUklFUyArPSBcCiAJbGliUGxhdGZvcm0ubGEgXApAQCAtNjks
NyArNzAsOCBAQCBsaWJQbGF0Zm9ybV9sYV9DUFBGTEFHUyA9IFwKIAkkKENBSVJPX0NGTEFHUykg
XAogCSQoR0VPQ0xVRV9DRkxBR1MpIFwKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKLQkkKExJQlNP
VVBfQ0ZMQUdTKQorCSQoTElCU09VUF9DRkxBR1MpIFwKKwkkKFVQT1dFUl9HTElCX0NGTEFHUykK
IAogbGliUGxhdGZvcm1HdGtfbGFfU09VUkNFUyA9IFwKIAkkKHBsYXRmb3JtZ3RrX3NvdXJjZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmODJkNDAzODgxYmQ2OTIzOTFiYjY1
YzNmMDk4NDY0ODE2NzU4ZWRhLi4zMzg4YTYzZTFmZDQ1NzllMDBkMmMxNzEwOTFiMGM0MmExNTYz
YWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYxNDAsNiArNjE0MCw5IEBA
IHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9HT3duUHRyU291cC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cFVSSVV0aWxzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBVUklVdGlscy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0
dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vw
b3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0hpc3RvZ3JhbVN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0
b2dyYW1TdXBwb3J0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3Zp
ZGVyVVBvd2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMzJiMmIyZjQ0NjU0NTc5OThiOTVjYTZmZjc0
ZTMwMzE2NjQxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91
cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmgiCisKKyNpZiBFTkFCTEUoQkFUVEVSWV9TVEFU
VVMpCisKKyNpbmNsdWRlICJCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQuaCIKKyNpbmNsdWRl
IDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0YXRpYyB2b2lkIHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKFVwQ2xpZW50KiB1cG93
ZXJDbGllbnQsIFVwRGV2aWNlKiB1cG93ZXJEZXZpY2UsIEJhdHRlcnlQcm92aWRlclVQb3dlciog
cHJvdmlkZXIpCit7CisgICAgVXBEZXZpY2VLaW5kIGRldmljZUtpbmQ7CisgICAgZ19vYmplY3Rf
Z2V0KHVwb3dlckRldmljZSwgImtpbmQiLCAmZGV2aWNlS2luZCwgTlVMTCk7CisgICAgaWYgKGRl
dmljZUtpbmQgIT0gVVBfREVWSUNFX0tJTkRfQkFUVEVSWSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcHJvdmlkZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMoKTsKK30KKworQmF0dGVyeVByb3ZpZGVy
VVBvd2VyOjpCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50
KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFs
c2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXI6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIEFTU0VSVCghbV91cG93ZXJDbGllbnQpOwor
ICAgIG1fdXBvd2VyQ2xpZW50ID0gYWRvcHRHUmVmKHVwX2NsaWVudF9uZXcoKSk7CisKKyAgICBH
T3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgaWYgKCF1cF9jbGllbnRfZW51bWVyYXRlX2Rldmlj
ZXNfc3luYyhtX3Vwb3dlckNsaWVudC5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAg
ICAgICBtX2NsaWVudC0+bm90aWZ5QmF0dGVyeVN0YXR1c1VuYXZhaWxhYmxlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXBvd2VyQ2xpZW50Lmdl
dCgpLCAiZGV2aWNlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNh
bGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQo
KSwgImRldmljZS1hZGRlZCIsIEdfQ0FMTEJBQ0socG93ZXJEZXZpY2VBbHRlcmF0aW9uQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXBvd2VyQ2xpZW50LmdldCgpLCAi
ZGV2aWNlLXJlbW92ZWQiLCBHX0NBTExCQUNLKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNr
KSwgdGhpcyk7CisKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworICAgIHVwZGF0ZUJhdHRlcnlT
dGF0dXMoKTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0b3BVcGRhdGluZygp
Cit7CisgICAgbV91cG93ZXJDbGllbnQuY2xlYXIoKTsKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxz
ZTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMo
KQoreworICAgIGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBHUHRy
QXJyYXkqIGRldmljZXMgPSB1cF9jbGllbnRfZ2V0X2RldmljZXMobV91cG93ZXJDbGllbnQuZ2V0
KCkpOworICAgIGlmICghZGV2aWNlcykgeworICAgICAgICBtX2NsaWVudC0+bm90aWZ5QmF0dGVy
eVN0YXR1c1VuYXZhaWxhYmxlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBudW1PZkJhdHRlcnlEZXZpY2VzID0gMDsKKyAgICBkb3VibGUgY29tYmluZWRFbmVyZ3lD
YXBhY2l0eUN1cnJlbnQgPSAwLCBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCA9IDAsIGNvbWJp
bmVkRW5lcmd5UmF0ZSA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGV2aWNl
cy0+bGVuOyBpKyspIHsKKyAgICAgICAgVXBEZXZpY2UqIGRldmljZSA9IHN0YXRpY19jYXN0PFVw
RGV2aWNlKj4oZ19wdHJfYXJyYXlfaW5kZXgoZGV2aWNlcywgaSkpOworICAgICAgICBVcERldmlj
ZUtpbmQgZGV2aWNlS2luZDsKKyAgICAgICAgVXBEZXZpY2VTdGF0ZSBkZXZpY2VTdGF0ZTsKKyAg
ICAgICAgYm9vbCBpc1ByZXNlbnQ7CisgICAgICAgIGRvdWJsZSBlbmVyZ3lDYXBhY2l0eUN1cnJl
bnQgPSAwLCBlbmVyZ3lDYXBhY2l0eUVtcHR5ID0gMCwgZW5lcmd5Q2FwYWNpdHlGdWxsID0gMCwg
ZW5lcmd5UmF0ZSA9IDA7CisKKyAgICAgICAgZ19vYmplY3RfZ2V0KGRldmljZSwKKyAgICAgICAg
ICAgICJlbmVyZ3kiLCAmZW5lcmd5Q2FwYWNpdHlDdXJyZW50LAorICAgICAgICAgICAgImVuZXJn
eS1lbXB0eSIsICZlbmVyZ3lDYXBhY2l0eUVtcHR5LAorICAgICAgICAgICAgImVuZXJneS1mdWxs
IiwgJmVuZXJneUNhcGFjaXR5RnVsbCwKKyAgICAgICAgICAgICJlbmVyZ3ktcmF0ZSIsICZlbmVy
Z3lSYXRlLAorICAgICAgICAgICAgImlzLXByZXNlbnQiLCAmaXNQcmVzZW50LAorICAgICAgICAg
ICAgImtpbmQiLCAmZGV2aWNlS2luZCwKKyAgICAgICAgICAgICJzdGF0ZSIsICZkZXZpY2VTdGF0
ZSwKKyAgICAgICAgICAgIE5VTEwpOworCisgICAgICAgIGlmIChkZXZpY2VLaW5kICE9IFVQX0RF
VklDRV9LSU5EX0JBVFRFUlkgfHwgIWlzUHJlc2VudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIG51bU9mQmF0dGVyeURldmljZXMrKzsKKyAgICAgICAgY29tYmluZWRFbmVyZ3lD
YXBhY2l0eUN1cnJlbnQgKz0gZW5lcmd5Q2FwYWNpdHlDdXJyZW50IC0gZW5lcmd5Q2FwYWNpdHlF
bXB0eTsKKyAgICAgICAgY29tYmluZWRFbmVyZ3lDYXBhY2l0eUZ1bGwgKz0gZW5lcmd5Q2FwYWNp
dHlGdWxsOworICAgICAgICAvLyBBZGRlZCBlbmVyZ3kgcmF0ZSBzaG91bGQgYmUgc2lnbmVkIGFj
Y29yZGluZyB0byB0aGUgY2hhcmdpbmcvZGlzY2hhcmdpbmcgc3RhdGUuCisgICAgICAgIGNvbWJp
bmVkRW5lcmd5UmF0ZSArPSBkZXZpY2VTdGF0ZSA9PSBVUF9ERVZJQ0VfU1RBVEVfRElTQ0hBUkdJ
TkcgPyAtZW5lcmd5UmF0ZSA6IGVuZXJneVJhdGU7CisgICAgfQorCisgICAgZ19wdHJfYXJyYXlf
dW5yZWYoZGV2aWNlcyk7CisKKyAgICBpZiAoIW51bU9mQmF0dGVyeURldmljZXMpIHsKKyAgICAg
ICAgbV9jbGllbnQtPm5vdGlmeUJhdHRlcnlTdGF0dXNVbmF2YWlsYWJsZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZG91YmxlIGxldmVsID0gMS4wOworICAgIGlmIChjb21iaW5l
ZEVuZXJneUNhcGFjaXR5RnVsbCA+IDApCisgICAgICAgIGxldmVsID0gY29tYmluZWRFbmVyZ3lD
YXBhY2l0eUN1cnJlbnQgLyBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbDsKKworICAgIGlmIChj
b21iaW5lZEVuZXJneVJhdGUgPj0gMCkgeworICAgICAgICBkb3VibGUgY2hhcmdpbmdUaW1lID0g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgICAgICBpZiAoY29t
YmluZWRFbmVyZ3lSYXRlKQorICAgICAgICAgICAgY2hhcmdpbmdUaW1lID0gMzYwMCAqIChjb21i
aW5lZEVuZXJneUNhcGFjaXR5RnVsbCAtIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50KSAv
IGNvbWJpbmVkRW5lcmd5UmF0ZTsKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUJhdHRlcnlTdGF0
dXNVcGRhdGVkKHRydWUsIGNoYXJnaW5nVGltZSwgMCwgbGV2ZWwpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUgPSAzNjAwICogY29tYmluZWRFbmVyZ3lDYXBh
Y2l0eUN1cnJlbnQgLyBzdGQ6OmFicyhjb21iaW5lZEVuZXJneVJhdGUpOworICAgICAgICBtX2Ns
aWVudC0+bm90aWZ5QmF0dGVyeVN0YXR1c1VwZGF0ZWQoZmFsc2UsIDAsIGRpc2NoYXJnaW5nVGlt
ZSwgbGV2ZWwpOworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTYwOWJiNjVhOGM1MmU4ODE1MThkOTVmZGVmZjRjNWM2
MTg3ZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2Vy
L0JhdHRlcnlQcm92aWRlclVQb3dlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAor
I2RlZmluZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RB
VFVTKQorCisjaW5jbHVkZSA8bGlidXBvd2VyLWdsaWIvdXBvd2VyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJhdHRl
cnlQcm92aWRlclVQb3dlckNsaWVudDsKKworY2xhc3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIHsK
K3B1YmxpYzoKKyAgICBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
Q2xpZW50Kik7CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRh
dGluZygpOworCisgICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7CisKK3ByaXZhdGU6Cisg
ICAgQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIEdSZWZQdHI8
VXBDbGllbnQ+IG1fdXBvd2VyQ2xpZW50OworCisgICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0
ZXJ5UHJvdmlkZXJVUG93ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEz
NWI5Y2Q5M2I0ZmM5NzRjY2U4NWZmNDNiYmM5MzFlOGM5ZWY1YWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xp
ZW50LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudF9oCisjZGVmaW5lIEJhdHRl
cnlQcm92aWRlclVQb3dlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QmF0dGVyeVN0YXR1c1VuYXZhaWxh
YmxlKCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUJhdHRlcnlTdGF0dXNVcGRhdGVkKGJvb2wg
Y2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUsIGRv
dWJsZSBsZXZlbCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RB
VFVTKQorCisjZW5kaWYgLy8gQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KaW5kZXggM2E1MWM1MjMyN2FlODg4ZmYwNDZjYzBhYzlhMjhlYzM4OWYz
ZjhiMy4uNmJjMWY2NzcyYTY1YTkwOGI0ZTljMGJlYWUwYjRhNjM3NGEyZTdjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9n
dGsvR05VbWFrZWZpbGUuYW0KQEAgLTEyOCw2ICsxMjgsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
TElCQQogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJT
KSBcCisJJChVUE9XRVJfR0xJQl9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhDT01QT1NJ
VEVfTElCUykgXAogCSQoWERBTUFHRV9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM2
ZjJjZGYzYmJiZjdmN2IyMmVlNjlmNDFmNDhlZDllMjA4ZjcwYWYuLjg5OWQyNzAzZTkzNTk3MzFl
OWU5MDQ5YTUzYThlZWI4MDUzOGNmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDksNiAr
MjQ5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkkKFBOR19MSUJTKSBcCiAJJChTUUxJ
VEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAorCSQoVVBPV0VSX0dMSUJfTElCUykgXAog
CSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykg
XAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201800</attachid>
            <date>2013-05-15 01:01:09 -0700</date>
            <delta_ts>2013-11-06 03:54:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115719-20130515100004.patch</filename>
            <type>text/plain</type>
            <size>17470</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiNTZlYTQwNDI4MWI3
YmExMjFlOTNlYWIyYmM2ZTEyYTYyZTM0MThjLi41NmRjZjk2ZGZhYmUyYWNmMDg0YzIxNjg3ZmNk
Njg3MTE2NzQyZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0xNSAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdXBvd2VyIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBzZWFyY2hlZAor
ICAgICAgICBmb3IgaGVhZGVyIGluY2x1c2lvbi4gQWRkIHRoZSB1cG93ZXItZ2xpYiBkZXBlbmRl
bmN5IENGTEFHUyB0byB0aGUgbGlzdCBvZiBsaWJQbGF0Zm9ybSdzIENQUEZMQUdTLgorCiAyMDEz
LTA1LTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBNb3ZlIGdlbmVyYXRlZCBDb2xvckRhdGEuY3BwLCBXZWJLaXRGb250RmFtaWx5TmFtZXMu
KGNwcHxoKSBidWlsZCB0YXJnZXRzIGludG8gbGliUGxhdGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMDVl
NGRkMzZiY2NlZWRhODBlYWQ0NWRiZWZjYWM3Mzk1ZDA4MjA4Li4zN2I5OTk4YmZkYmI3Y2EyZjAz
MGZhYTc5NzhkYWJmMmNlZTlkNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTMt
MDUtMTUgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYSBVUG93
ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIEJhdHRlcnlQcm92aWRlclVQb3dlciwgYSBw
cm92aWRlciBvZiB0aGUgc3lzdGVtJ3MgYmF0dGVyeSBzdGF0dXMgdGhhdCBwcm9kdWNlcyB0aGUg
aW5mb3JtYXRpb24KKyAgICAgICAgdXNpbmcgdGhlIHVwb3dlci1nbGliIGxpYnJhcnkuCisKKyAg
ICAgICAgVGhlIEJhdHRlcnlQcm92aWRlclVQb3dlciBjcmVhdGVzIGEgbmV3IFVQb3dlciBjbGll
bnQgd2hlbiB0aGUgcHJvdmlkZXIgc2hvdWxkIHN0YXJ0IGVtaXR0aW5nIHVwZGF0ZXMgYW5kIGhv
b2tzCisgICAgICAgIHVwIHRvIGRldmljZSBhbHRlcmF0aW9uIHNpZ25hbHMuIFRoZXNlIG9ubHkg
ZmlyZSByZWNhbGN1bGF0aW9uIG9mIHRoZSBiYXR0ZXJ5IHN0YXR1cyB3aGVuIGEgYmF0dGVyeSBk
ZXZpY2UgaXMgYWx0ZXJlZC4KKworICAgICAgICBXaGVuIHJlY2FsY3VsYXRpbmcsIGV2ZXJ5IGJh
dHRlcnkgZGV2aWNlIGlzIHRha2VuIGludG8gYWNjb3VudCwgYWNjdW11bGF0aW5nIHRoZSBlbmVy
Z3kgY2FwYWNpdGllcyB3aGVuIGJvdGggZW1wdHkKKyAgICAgICAgYW5kIGZ1bGwsIHRoZSBjdXJy
ZW50IHJhdGUgb2YgZW5lcmd5IGNoYXJnaW5nL2Rpc2NoYXJnaW5nLCBhbmQgdGhlIGJhdHRlcnkg
c3RhdHVzICh3aGV0aGVyIHRoZSBkZXZpY2UgaXMgY2hhcmdpbmcgb3IKKyAgICAgICAgZGlzY2hh
cmdpbmcpLiBUaGlzIGdpdmVzIGEgc2V0IG9mIGRhdGEgdGhhdCBjb3ZlcnMgdGhlIG92ZXJhbGwg
YmF0dGVyeSBzdGF0dXMgb2YgdGhlIHN5c3RlbS4KKworICAgICAgICBUaGlzIGRhdGEgaXMgdGhl
biB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYmF0dGVyeSBzdGF0dXMgYXMgcGVyY2VpdmVkIGJ5IHRo
ZSBXZWJDb3JlIGltcGxlbWVudGF0aW9uLiBDaGFyZ2luZyBpcyBkZXRlcm1pbmVkCisgICAgICAg
IGJ5IGV4YW1pbmluZyB0aGUgaW50ZWdyYWwgc2lnbiBvZiB0aGUgY3VycmVudCBjb21iaW5lZCBl
bmVyZ3kgcmF0ZS4gQ2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWVzIGFyZSBjYWxjdWxhdGVk
LCB3aGVuCisgICAgICAgIGFwcHJvcHJpYXRlLCBieSBkaXZpZGluZyB0aGUgY2hhcmdhYmxlL2Rp
c2NoYXJnYWJsZSBjYXBhY2l0eSB3aXRoIHRoZSBjdXJyZW50IGNvbWJpbmVkIGVuZXJneSByYXRl
LiBUaGUgYmF0dGVyeSBsZXZlbCBpcworICAgICAgICBjYWxjdWxhdGVkIGJ5IGRpdmlkaW5nIHRo
ZSBjdXJyZW50IGVuZXJneSBjYXBhY2l0eSB3aXRoIHRoZSBmdWxsIGVuZXJneSBjYXBhY2l0eSAo
aS5lLiB0aGUgY29tYmluZWQgY2FwYWNpdHkgb2YgYWxsCisgICAgICAgIHRoZSBiYXR0ZXJpZXMg
dGhhdCB0aGUgc3lzdGVtIHBvc3Nlc3NlcykuIFRoZSBzdGF0dXMgaXMgKGluZGlyZWN0bHkpIHBh
c3NlZCBvbnRvIEJhdHRlcnlNYW5hZ2VyIGJ5IGludm9raW5nIHRoZQorICAgICAgICB1cGRhdGVC
YXR0ZXJ5U3RhdHVzIG1ldGhvZCBvbiB0aGUgY2xpZW50LCB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0
ZXIgcmVwcmVzZW50aW5nIHRoZSBiYXR0ZXJ5IGNoYXJnaW5nL2Rpc2NoYXJnaW5nIHN0YXRlLAor
ICAgICAgICB0aGUgc2Vjb25kIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHRpbWUgbGVmdCB1
bnRpbCB0aGUgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkICh3aGVuIGNoYXJnaW5nKSBvciBmdWxs
eQorICAgICAgICBkZXBsZXRlZCAod2hlbiBkaXNjaGFyZ2luZyksIGFuZCB0aGUgdGhpcmQgcGFy
YW1ldGVyIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBiYXR0ZXJ5IGxldmVsLgorCisgICAgICAg
IFdoZW5ldmVyIHRoZSBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRp
b24gYWJvdXQgdGhlIGJhdHRlcnkgc3RhdHVzIG9mIHRoZSBzeXN0ZW0sIHRoZSBjbGllbnQncwor
ICAgICAgICB1cGRhdGVCYXR0ZXJ5U3RhdHVzIG1ldGhvZCBpcyBpbnZva2VkIHdpdGggdGhlIGZp
cnN0IHBhcmFtZXRlciByZXBvcnRpbmcgdGhlIHVuYXZhaWxhYmlsaXR5IG9mIGFueSBpbmZvcm1h
dGlvbgorICAgICAgICBhYm91dCB0aGUgYmF0dGVyeSBzdGF0dXMuIFRoZSBvdGhlciB0d28gcGFy
YW1ldGVycyBjYW4gYmUgb21pdHRlZCBhcyB0aGV5IGRlZmF1bHQgdG8gMCB3aGVuIG5vdCBnaXZl
biBhbmQgYXJlIG5laXRoZXIKKyAgICAgICAgYXZhaWxhYmxlIG5vciB1c2VmdWwgaW4gc3VjaCBj
aXJjdW1zdGFuY2VzLiBUaGUgY2xpZW50IHNob3VsZCBoYW5kbGUgc3VjaCBhbiB1cGRhdGUgYnkg
cmVwb3J0aW5nIHRoZSAnZGVmYXVsdCcgYmF0dGVyeQorICAgICAgICBzdGF0dXMgLSBjaGFyZ2lu
ZywgdGhlIGJhdHRlcnkgbGV2ZWwgYmVpbmcgYXQgMS4wIGFuZCBib3RoIHRoZSBjaGFyZ2luZyBh
bmQgZGlzY2hhcmdpbmcgdGltZSBoYXZpbmcgdGhlIHZhbHVlIG9mCisgICAgICAgIHRoZSBwb3Np
dGl2ZSBpbmZpbml0eSAoYXMgcGVyIHRoZSBCYXR0ZXJ5IFN0YXR1cyBBUEkgc3BlY2lmaWNhdGlv
bikuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGhlYXZpbHkgaW5zcGlyZWQgYnkg
YSBzaW1pbGFyIGFwcHJvYWNoIHRvIGNhbGN1bGF0aW5nIGJhdHRlcnkgc3RhdHVzIGluIEdOT01F
IFNldHRpbmdzIERhZW1vbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBubyBuZXcgZnVuY3Rp
b25hbGl0eS4gVGhlIGZlYXR1cmUgaXMgbm90IHlldCBlbmFibGVkLiBXaGVuIGVuYWJsZWQsIHRo
ZSByZWxldmFudCB0ZXN0cyBwYXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTog
QWRkIHRoZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQ2xpZW50KSBidWlsZCB0YXJnZXRzLgorICAg
ICAgICAqIHBsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEJhdHRl
cnlQcm92aWRlclVQb3dlcjo6QmF0dGVyeVByb3ZpZGVyVVBvd2VyKToKKyAgICAgICAgKEJhdHRl
cnlQcm92aWRlclVQb3dlcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChCYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXI6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6
OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAqIHBsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJh
dHRlcnlQcm92aWRlclVQb3dlcik6CisgICAgICAgICogcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQ
cm92aWRlclVQb3dlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50KToKKwogMjAxMy0wNS0xNCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MTQ3NTQ4KTogQnJva2VuIGNvbWJvYm94ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmMTQzZjc1N2Nl
OWVlZTg4ZThlYjhjMzI0ZTJkNTlkNGRhNzcyYjA3Li41YjdmYTIyNjc3M2E0N2E2YWEzMWI0OGZh
MWE1ZjU1OTU1M2RkM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MDUtMTggIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYSBVUG93
ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgdGhlIHVwb3dlci1nbGliIGxp
YnJhcnkgdG8gdGhlIGxpYndlYmtpdGd0ayBsaWJyYXJ5LgorCiAyMDEzLTA1LTA3ICBKb3PDqSBE
YXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV0sxXSBBZGQgYW4gZW1wdHkgQmF0dGVy
eUNsaWVudEd0awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM2NGNmNmMxZjBkYzg1ZDkxYWE3MmE4NDBlOTE3N2Ez
YmJhZTVlZmUuLjA5ZjgzNDZjNjc3MWJiNmNhN2FiOTQ4NTZkNWFiY2E4OWUzZGMyN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNS0xNSAgSm9zw6kgRGFwZW5hIFBheiAgPGpk
YXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNlZCBCYXR0ZXJ5UHJvdmlkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06IEFkZCB0aGUgdXBvd2VyLWdsaWIgbGlicmFyeSB0byB0aGUgbGlid2Via2l0Mmd0ayBs
aWJyYXJ5LgorCiAyMDEzLTA1LTE0ICBTaW1vbiBDb29wZXIgIDxzY29vcGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYSBwcmVmZXJlbmNlIHRoYXQgY2FuIGRpc2FibGUgdGhlIGZha2UgU1lT
ViBTSE0gc2hpbQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtIGIv
U291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCmluZGV4IDdhNGYxYjA5ODRlNDEzYWI4MTg2
NjMyYzc4NmZiODc1YzZkOTA5MmQuLjBkMDU1ZWRmMWNhNmE3ZGMzYjhiMTQzYzcxNTVmZjE0MmRm
MWI4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KQEAgLTQ1LDcgKzQ1LDggQEAgcGxhdGZvcm1f
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cCBcCi0JLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dAorCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Vwb3dlcgogCiBub2luc3RfTFRMSUJSQVJJRVMgKz0gXAogCWxpYlBs
YXRmb3JtLmxhIFwKQEAgLTgyLDcgKzgzLDggQEAgbGliUGxhdGZvcm1fbGFfQ1BQRkxBR1MgPSBc
CiAJJChDQUlST19DRkxBR1MpIFwKIAkkKEdFT0NMVUVfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJf
Q0ZMQUdTKSBcCi0JJChMSUJTT1VQX0NGTEFHUykKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChV
UE9XRVJfR0xJQl9DRkxBR1MpCiAKIGxpYlBsYXRmb3JtR3RrX2xhX1NPVVJDRVMgPSBcCiAJJChw
bGF0Zm9ybWd0a19zb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNWM3
NDI5Y2E3ZTRlMDVkYTg0NTVjM2FiYjY2Y2E4YzcxZDJkYTU5Ny4uZmJmZDdhMDg4YWRjYmQ5MDI4
YmFkM2QxZjQ4YmRjNWZlYTczYTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC02MTM1LDYgKzYxMzUsOSBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MaW5rSGFzaC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjQ0ZjhjYjM0
Yjc4NWZiNjkzNGZkODhkYTk2Mzg2YzE4OWQyMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAKQEAgLTAs
MCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlclVQb3dlci5oIgorCisjaWYg
RU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
Q2xpZW50LmgiCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0
YXRpYyB2b2lkIHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKFVwQ2xpZW50KiB1cG93ZXJD
bGllbnQsIFVwRGV2aWNlKiB1cG93ZXJEZXZpY2UsIEJhdHRlcnlQcm92aWRlclVQb3dlciogcHJv
dmlkZXIpCit7CisgICAgVXBEZXZpY2VLaW5kIGRldmljZUtpbmQ7CisgICAgZ19vYmplY3RfZ2V0
KHVwb3dlckRldmljZSwgImtpbmQiLCAmZGV2aWNlS2luZCwgTlVMTCk7CisgICAgaWYgKGRldmlj
ZUtpbmQgIT0gVVBfREVWSUNFX0tJTkRfQkFUVEVSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJvdmlkZXItPnVwZGF0ZUJhdHRlcnlTdGF0dXMoKTsKK30KKworQmF0dGVyeVByb3ZpZGVyVVBv
d2VyOjpCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50KiBj
bGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2Up
Cit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJVUG93
ZXI6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIEFTU0VSVCghbV91cG93ZXJDbGllbnQpOworICAg
IG1fdXBvd2VyQ2xpZW50ID0gYWRvcHRHUmVmKHVwX2NsaWVudF9uZXcoKSk7CisKKyAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgaWYgKCF1cF9jbGllbnRfZW51bWVyYXRlX2RldmljZXNf
c3luYyhtX3Vwb3dlckNsaWVudC5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAg
ICBtX2NsaWVudC0+dXBkYXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQo
KSwgImRldmljZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxs
YmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91cG93ZXJDbGllbnQuZ2V0KCks
ICJkZXZpY2UtYWRkZWQiLCBHX0NBTExCQUNLKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNr
KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRl
dmljZS1yZW1vdmVkIiwgR19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayks
IHRoaXMpOworCisgICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKKyAgICB1cGRhdGVCYXR0ZXJ5U3Rh
dHVzKCk7Cit9CisKK3ZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdG9wVXBkYXRpbmcoKQor
eworICAgIG1fdXBvd2VyQ2xpZW50LmNsZWFyKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7
Cit9CisKK3ZvaWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKCkK
K3sKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgR1B0ckFy
cmF5KiBkZXZpY2VzID0gdXBfY2xpZW50X2dldF9kZXZpY2VzKG1fdXBvd2VyQ2xpZW50LmdldCgp
KTsKKyAgICBpZiAoIWRldmljZXMpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlT
dGF0dXMoTm90QXZhaWxhYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2ln
bmVkIG51bU9mQmF0dGVyeURldmljZXMgPSAwOworICAgIGRvdWJsZSBjb21iaW5lZEVuZXJneUNh
cGFjaXR5Q3VycmVudCA9IDAsIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsID0gMCwgY29tYmlu
ZWRFbmVyZ3lSYXRlID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXZpY2Vz
LT5sZW47IGkrKykgeworICAgICAgICBVcERldmljZSogZGV2aWNlID0gc3RhdGljX2Nhc3Q8VXBE
ZXZpY2UqPihnX3B0cl9hcnJheV9pbmRleChkZXZpY2VzLCBpKSk7CisgICAgICAgIFVwRGV2aWNl
S2luZCBkZXZpY2VLaW5kOworICAgICAgICBVcERldmljZVN0YXRlIGRldmljZVN0YXRlOworICAg
ICAgICBib29sIGlzUHJlc2VudDsKKyAgICAgICAgZG91YmxlIGVuZXJneUNhcGFjaXR5Q3VycmVu
dCA9IDAsIGVuZXJneUNhcGFjaXR5RW1wdHkgPSAwLCBlbmVyZ3lDYXBhY2l0eUZ1bGwgPSAwLCBl
bmVyZ3lSYXRlID0gMDsKKworICAgICAgICBnX29iamVjdF9nZXQoZGV2aWNlLAorICAgICAgICAg
ICAgImVuZXJneSIsICZlbmVyZ3lDYXBhY2l0eUN1cnJlbnQsCisgICAgICAgICAgICAiZW5lcmd5
LWVtcHR5IiwgJmVuZXJneUNhcGFjaXR5RW1wdHksCisgICAgICAgICAgICAiZW5lcmd5LWZ1bGwi
LCAmZW5lcmd5Q2FwYWNpdHlGdWxsLAorICAgICAgICAgICAgImVuZXJneS1yYXRlIiwgJmVuZXJn
eVJhdGUsCisgICAgICAgICAgICAiaXMtcHJlc2VudCIsICZpc1ByZXNlbnQsCisgICAgICAgICAg
ICAia2luZCIsICZkZXZpY2VLaW5kLAorICAgICAgICAgICAgInN0YXRlIiwgJmRldmljZVN0YXRl
LAorICAgICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgaWYgKGRldmljZUtpbmQgIT0gVVBfREVW
SUNFX0tJTkRfQkFUVEVSWSB8fCAhaXNQcmVzZW50KQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgbnVtT2ZCYXR0ZXJ5RGV2aWNlcysrOworICAgICAgICBjb21iaW5lZEVuZXJneUNh
cGFjaXR5Q3VycmVudCArPSBlbmVyZ3lDYXBhY2l0eUN1cnJlbnQgLSBlbmVyZ3lDYXBhY2l0eUVt
cHR5OworICAgICAgICBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCArPSBlbmVyZ3lDYXBhY2l0
eUZ1bGw7CisgICAgICAgIC8vIEFkZGVkIGVuZXJneSByYXRlIHNob3VsZCBiZSBzaWduZWQgYWNj
b3JkaW5nIHRvIHRoZSBjaGFyZ2luZy9kaXNjaGFyZ2luZyBzdGF0ZS4KKyAgICAgICAgY29tYmlu
ZWRFbmVyZ3lSYXRlICs9IGRldmljZVN0YXRlID09IFVQX0RFVklDRV9TVEFURV9ESVNDSEFSR0lO
RyA/IC1lbmVyZ3lSYXRlIDogZW5lcmd5UmF0ZTsKKyAgICB9CisKKyAgICBnX3B0cl9hcnJheV91
bnJlZihkZXZpY2VzKTsKKworICAgIGlmICghbnVtT2ZCYXR0ZXJ5RGV2aWNlcykgeworICAgICAg
ICBtX2NsaWVudC0+dXBkYXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZG91YmxlIGxldmVsID0gMDsKKyAgICBpZiAoY29tYmluZWRF
bmVyZ3lDYXBhY2l0eUZ1bGwgPiAwKQorICAgICAgICBsZXZlbCA9IGNvbWJpbmVkRW5lcmd5Q2Fw
YWNpdHlDdXJyZW50IC8gY29tYmluZWRFbmVyZ3lDYXBhY2l0eUZ1bGw7CisKKyAgICBpZiAoY29t
YmluZWRFbmVyZ3lSYXRlID49IDApIHsKKyAgICAgICAgZG91YmxlIGNoYXJnaW5nVGltZSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICAgICAgaWYgKGNvbWJp
bmVkRW5lcmd5UmF0ZSkKKyAgICAgICAgICAgIGNoYXJnaW5nVGltZSA9IDM2MDAgKiAoY29tYmlu
ZWRFbmVyZ3lDYXBhY2l0eUZ1bGwgLSBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVudCkgLyBj
b21iaW5lZEVuZXJneVJhdGU7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVz
KENoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBk
b3VibGUgZGlzY2hhcmdpbmdUaW1lID0gMzYwMCAqIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJy
ZW50IC8gc3RkOjphYnMoY29tYmluZWRFbmVyZ3lSYXRlKTsKKyAgICAgICAgbV9jbGllbnQtPnVw
ZGF0ZUJhdHRlcnlTdGF0dXMoRGlzY2hhcmdpbmcsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOwor
ICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Vwb3dlci9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTYwOWJiNjVhOGM1MmU4ODE1MThkOTVmZGVmZjRjNWM2MTg3ZDE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRlcnlQcm92
aWRlclVQb3dlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAorI2RlZmluZSBCYXR0
ZXJ5UHJvdmlkZXJVUG93ZXJfaAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjaW5j
bHVkZSA8bGlidXBvd2VyLWdsaWIvdXBvd2VyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJhdHRlcnlQcm92aWRlclVQ
b3dlckNsaWVudDsKKworY2xhc3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIHsKK3B1YmxpYzoKKyAg
ICBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50Kik7CisK
KyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisg
ICAgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7CisKK3ByaXZhdGU6CisgICAgQmF0dGVyeVBy
b3ZpZGVyVVBvd2VyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIEdSZWZQdHI8VXBDbGllbnQ+IG1f
dXBvd2VyQ2xpZW50OworCisgICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2VyL0JhdHRl
cnlQcm92aWRlclVQb3dlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdXBvd2Vy
L0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmZjA1NTVkNmNmZDIy
YzFiZDQyN2FiMmI2NDAwNjkwYTUxYzRlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS91cG93ZXIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudF9oCisjZGVmaW5lIEJhdHRlcnlQcm92aWRlclVQ
b3dlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJTdGF0dXMgeworICAgIE5vdEF2
YWlsYWJsZSA9IDAsCisgICAgQ2hhcmdpbmcsCisgICAgRGlzY2hhcmdpbmcsCit9OworCitjbGFz
cyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKEJhdHRlcnlQcm92aWRlclVQb3dlclN0YXR1cywgZG91Ymxl
IHRpbWVSZW1haW5pbmcgPSAwLCBkb3VibGUgbGV2ZWwgPSAwKSA9IDA7Cit9OworCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCAwMDc3NWZiNjY2
M2ExYzI3ZWMyOWMwMjdlYjZkYzRiMGNlNzk2NmRiLi5mZjU5ODNhODM0ODMwZTkwZjQxZmE0ZDc3
YzU3YmFmZDliMTk5YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTI5LDYgKzEy
OSw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lU
R1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRF
M19MSUJTKSBcCiAJJChVTklDT0RFX0xJQlMpIFwKKwkkKFVQT1dFUl9HTElCX0xJQlMpIFwKIAkk
KFdFQlBfTElCUykgXAogCSQoWENPTVBPU0lURV9MSUJTKSBcCiAJJChYREFNQUdFX0xJQlMpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzBhZGQ4OWIwODNhZTkwM2JiMTFkNWVmODAxNDJhMTVh
MmVmNDA1OS4uYjU5MGI3MzljMzBkOTJhZDgxNDdjZTRiZTc1MTNjNzI5ZWExODIzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KQEAgLTI1MCw2ICsyNTAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJ
QgogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBc
CisJJChVUE9XRVJfR0xJQl9MSUJTKSBcCiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElC
UykgXAogCSQoWENPTVBPU0lURV9MSUJTKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216160</attachid>
            <date>2013-11-06 03:54:41 -0800</date>
            <delta_ts>2013-12-09 07:31:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115719-20131106035440.patch</filename>
            <type>text/plain</type>
            <size>17468</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMThkZTYwY2RmMDFk
MWY5ZTM4ODQ5NTM3MDMyNzAyYTJjODg3Yzk1Li5mM2ViMjRlNzAyOTViZGZiMDk1YmM1MTY4ZDZm
NTFiNzI0MTkyYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0wNSAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYiBkaXJlY3RvcnkgdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgc2VhcmNoZWQKKyAg
ICAgICAgZm9yIGhlYWRlciBpbmNsdXNpb24uIEFkZCB0aGUgdXBvd2VyLWdsaWIgZGVwZW5kZW5j
eSBDRkxBR1MgdG8gdGhlIGxpc3Qgb2YgbGliUGxhdGZvcm0ncyBDUFBGTEFHUy4KKwogMjAxMy0x
MC0yOSAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBBZGRpbmcgTml4IGZpbGVzIGluIFNvdXJjZS9QbGF0Zm9ybSB0byB0cnVuawpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg0NmQyODY0NWM4YThkNjlhNjI2NzAxMWRiN2NjYjJlZTJhNzQwOTIuLmRjMDhlYWRi
YWE5OTk4ZjhmYjgxOTNjYmI1ZWVhNDc5MDMzNzkwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NCBAQAorMjAxMy0xMS0wNSAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4g
YW5kIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBhIFVQb3dlci1iYXNlZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSB0aGUgQmF0dGVyeVByb3ZpZGVy
VVBvd2VyLCBhIHByb3ZpZGVyIG9mIHRoZSBzeXN0ZW0ncyBiYXR0ZXJ5IHN0YXR1cyB0aGF0IHBy
b2R1Y2VzIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICB1c2luZyB0aGUgdXBvd2VyLWdsaWIgbGli
cmFyeS4KKworICAgICAgICBUaGUgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIGNyZWF0ZXMgYSBuZXcg
VVBvd2VyIGNsaWVudCB3aGVuIHRoZSBwcm92aWRlciBzaG91bGQgc3RhcnQgZW1pdHRpbmcgdXBk
YXRlcyBhbmQgaG9va3MKKyAgICAgICAgdXAgdG8gZGV2aWNlIGFsdGVyYXRpb24gc2lnbmFscy4g
VGhlc2Ugb25seSBmaXJlIHJlY2FsY3VsYXRpb24gb2YgdGhlIGJhdHRlcnkgc3RhdHVzIHdoZW4g
YSBiYXR0ZXJ5IGRldmljZSBpcyBhbHRlcmVkLgorCisgICAgICAgIFdoZW4gcmVjYWxjdWxhdGlu
ZywgZXZlcnkgYmF0dGVyeSBkZXZpY2UgaXMgdGFrZW4gaW50byBhY2NvdW50LCBhY2N1bXVsYXRp
bmcgdGhlIGVuZXJneSBjYXBhY2l0aWVzIHdoZW4gYm90aCBlbXB0eQorICAgICAgICBhbmQgZnVs
bCwgdGhlIGN1cnJlbnQgcmF0ZSBvZiBlbmVyZ3kgY2hhcmdpbmcvZGlzY2hhcmdpbmcsIGFuZCB0
aGUgYmF0dGVyeSBzdGF0dXMgKHdoZXRoZXIgdGhlIGRldmljZSBpcyBjaGFyZ2luZyBvcgorICAg
ICAgICBkaXNjaGFyZ2luZykuIFRoaXMgZ2l2ZXMgYSBzZXQgb2YgZGF0YSB0aGF0IGNvdmVycyB0
aGUgb3ZlcmFsbCBiYXR0ZXJ5IHN0YXR1cyBvZiB0aGUgc3lzdGVtLgorCisgICAgICAgIFRoaXMg
ZGF0YSBpcyB0aGVuIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBiYXR0ZXJ5IHN0YXR1cyBhcyBwZXJj
ZWl2ZWQgYnkgdGhlIFdlYkNvcmUgaW1wbGVtZW50YXRpb24uIENoYXJnaW5nIGlzIGRldGVybWlu
ZWQKKyAgICAgICAgYnkgZXhhbWluaW5nIHRoZSBpbnRlZ3JhbCBzaWduIG9mIHRoZSBjdXJyZW50
IGNvbWJpbmVkIGVuZXJneSByYXRlLiBDaGFyZ2luZyBhbmQgZGlzY2hhcmdpbmcgdGltZXMgYXJl
IGNhbGN1bGF0ZWQsIHdoZW4KKyAgICAgICAgYXBwcm9wcmlhdGUsIGJ5IGRpdmlkaW5nIHRoZSBj
aGFyZ2FibGUvZGlzY2hhcmdhYmxlIGNhcGFjaXR5IHdpdGggdGhlIGN1cnJlbnQgY29tYmluZWQg
ZW5lcmd5IHJhdGUuIFRoZSBiYXR0ZXJ5IGxldmVsIGlzCisgICAgICAgIGNhbGN1bGF0ZWQgYnkg
ZGl2aWRpbmcgdGhlIGN1cnJlbnQgZW5lcmd5IGNhcGFjaXR5IHdpdGggdGhlIGZ1bGwgZW5lcmd5
IGNhcGFjaXR5IChpLmUuIHRoZSBjb21iaW5lZCBjYXBhY2l0eSBvZiBhbGwKKyAgICAgICAgdGhl
IGJhdHRlcmllcyB0aGF0IHRoZSBzeXN0ZW0gcG9zc2Vzc2VzKS4gVGhlIHN0YXR1cyBpcyAoaW5k
aXJlY3RseSkgcGFzc2VkIG9udG8gQmF0dGVyeU1hbmFnZXIgYnkgaW52b2tpbmcgdGhlCisgICAg
ICAgIHVwZGF0ZUJhdHRlcnlTdGF0dXMgbWV0aG9kIG9uIHRoZSBjbGllbnQsIHdpdGggdGhlIGZp
cnN0IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGJhdHRlcnkgY2hhcmdpbmcvZGlzY2hhcmdp
bmcgc3RhdGUsCisgICAgICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUg
dGltZSBsZWZ0IHVudGlsIHRoZSBiYXR0ZXJ5IGlzIGZ1bGx5IGNoYXJnZWQgKHdoZW4gY2hhcmdp
bmcpIG9yIGZ1bGx5CisgICAgICAgIGRlcGxldGVkICh3aGVuIGRpc2NoYXJnaW5nKSwgYW5kIHRo
ZSB0aGlyZCBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGJhdHRlcnkgbGV2ZWwu
CisKKyAgICAgICAgV2hlbmV2ZXIgdGhlIGltcGxlbWVudGF0aW9uIGNhbm5vdCBwcm92aWRlIGFu
eSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYmF0dGVyeSBzdGF0dXMgb2YgdGhlIHN5c3RlbSwgdGhl
IGNsaWVudCdzCisgICAgICAgIHVwZGF0ZUJhdHRlcnlTdGF0dXMgbWV0aG9kIGlzIGludm9rZWQg
d2l0aCB0aGUgZmlyc3QgcGFyYW1ldGVyIHJlcG9ydGluZyB0aGUgdW5hdmFpbGFiaWxpdHkgb2Yg
YW55IGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cy4gVGhlIG90
aGVyIHR3byBwYXJhbWV0ZXJzIGNhbiBiZSBvbWl0dGVkIGFzIHRoZXkgZGVmYXVsdCB0byAwIHdo
ZW4gbm90IGdpdmVuIGFuZCBhcmUgbmVpdGhlcgorICAgICAgICBhdmFpbGFibGUgbm9yIHVzZWZ1
bCBpbiBzdWNoIGNpcmN1bXN0YW5jZXMuIFRoZSBjbGllbnQgc2hvdWxkIGhhbmRsZSBzdWNoIGFu
IHVwZGF0ZSBieSByZXBvcnRpbmcgdGhlICdkZWZhdWx0JyBiYXR0ZXJ5CisgICAgICAgIHN0YXR1
cyAtIGNoYXJnaW5nLCB0aGUgYmF0dGVyeSBsZXZlbCBiZWluZyBhdCAxLjAgYW5kIGJvdGggdGhl
IGNoYXJnaW5nIGFuZCBkaXNjaGFyZ2luZyB0aW1lIGhhdmluZyB0aGUgdmFsdWUgb2YKKyAgICAg
ICAgdGhlIHBvc2l0aXZlIGluZmluaXR5IChhcyBwZXIgdGhlIEJhdHRlcnkgU3RhdHVzIEFQSSBz
cGVjaWZpY2F0aW9uKS4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgaGVhdmlseSBp
bnNwaXJlZCBieSBhIHNpbWlsYXIgYXBwcm9hY2ggdG8gY2FsY3VsYXRpbmcgYmF0dGVyeSBzdGF0
dXMgaW4gR05PTUUgU2V0dGluZ3MgRGFlbW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5v
IG5ldyBmdW5jdGlvbmFsaXR5LiBUaGUgZmVhdHVyZSBpcyBub3QgeWV0IGVuYWJsZWQuIFdoZW4g
ZW5hYmxlZCwgdGhlIHJlbGV2YW50IHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBBZGQgdGhlIEJhdHRlcnlQcm92aWRlclVQb3dlcihDbGllbnQpIGJ1aWxkIHRh
cmdldHMuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcjo6QmF0dGVyeVByb3ZpZGVyVVBvd2VyKToKKyAgICAg
ICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChCYXR0
ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChCYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXI6OnVwZGF0ZUJhdHRlcnlTdGF0dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIv
QmF0dGVyeVByb3ZpZGVyVVBvd2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvQmF0
dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQpOgorCiAyMDEzLTExLTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZS1hZnRlci1mcmVlIGlu
IFNsaWRlclRodW1iRWxlbWVudDo6ZHJhZ0Zyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjOTNhMDA1
YTE1YWM4Y2M5NjZlNmQyYzlkMDJhMTFhYzhkMTk1ZjI5Li41ZjlmYjljMGU1YzQ5YjEyMmRlMWYw
NGNjOWViYTM3MGY0NmU2NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMTEtMDUgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYSBV
UG93ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIHRoZSBsaWJ3ZWJraWd0
ayBsaWJyYXJ5IGFnYWluc3QgdGhlIHVwb3dlci1nbGliIGxpYnJhcnkuCisKIDIwMTMtMTEtMDUg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1N0cmVhbWVyXSBSZW1vdmUgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDU4ZDEzODM4NWRlMWNmYjJjMDkwNjFmYjAyZmZkYTI5MjA2N2M2N2YuLmFkOWQz
NzE4ZWIyNTdlYmM1OGM5ZTM2NDM2NzVjODhhNzhjOWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0xMS0wNSAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNv
bT4gYW5kIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFkZCBhIFVQb3dlci1iYXNlZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IExpbmsgdGhl
IGxpYndlYmtpdDJndGsgbGlicmFyeSBhZ2FpbnN0IHRoZSB1cG93ZXItZ2xpYiBsaWJyYXJ5Lgor
CiAyMDEzLTExLTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQmVnaW4gd29yayBvbiBkZWNvZGluZyBpbnZvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDM1ODg0NDdlOTQ1NzlkNWJiODM1MjI2NmM4NzI5OTMyMzM5NzY2MGQuLmVmODlj
NjhkYWJmYWE4MGY4YWMwMGQyZDQxNWU3N2Q0NzZhMWY3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUu
YW0KQEAgLTI4LDYgKzI4LDcgQEAgcGxhdGZvcm1fd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8gXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW9jbHVlIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8gXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0gXApA
QCAtOTQsNyArOTUsOCBAQCBsaWJQbGF0Zm9ybV9sYV9DUFBGTEFHUyA9IFwKIAkkKEZSRUVUWVBF
X0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxBR1MpIFwKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwK
LQkkKExJQlNPVVBfQ0ZMQUdTKQorCSQoTElCU09VUF9DRkxBR1MpIFwKKwkkKFVQT1dFUl9HTElC
X0NGTEFHUykKIAogbGliUGxhdGZvcm1HdGtfbGFfU09VUkNFUyA9IFwKIAkkKHBsYXRmb3JtZ3Rr
X3NvdXJjZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkYWVkMDBlYmQyNzgx
ZDVjMTVhNTZjMmRjYzljYjExNjg5ZjE4YzQ1Li4wNjhlZDIyMmNjZmNkZWMzYmM4NmZmNzA5NmNh
MjZkZmI3YzY5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU1OTEsNiAr
NTU5MSw5IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGll
bnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93
ZXJDbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92
aWRlclVQb3dlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTlm
MWJmNWI1ZjdkODkyZmVmNWY0ZmNkMTQzYjRmOWVmZjRhZGY0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCkBA
IC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaCIKKwor
I2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKKworI2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlclVQ
b3dlckNsaWVudC5oIgorI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitzdGF0aWMgdm9pZCBwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayhVcENsaWVudCogdXBv
d2VyQ2xpZW50LCBVcERldmljZSogdXBvd2VyRGV2aWNlLCBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIq
IHByb3ZpZGVyKQoreworICAgIFVwRGV2aWNlS2luZCBkZXZpY2VLaW5kOworICAgIGdfb2JqZWN0
X2dldCh1cG93ZXJEZXZpY2UsICJraW5kIiwgJmRldmljZUtpbmQsIG51bGxwdHIpOworICAgIGlm
IChkZXZpY2VLaW5kICE9IFVQX0RFVklDRV9LSU5EX0JBVFRFUlkpCisgICAgICAgIHJldHVybjsK
KworICAgIHByb3ZpZGVyLT51cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7Cit9CisKK0JhdHRlcnlQcm92
aWRlclVQb3dlcjo6QmF0dGVyeVByb3ZpZGVyVVBvd2VyKEJhdHRlcnlQcm92aWRlclVQb3dlckNs
aWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9pc1VwZGF0aW5n
KGZhbHNlKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7Cit9CisKK3ZvaWQgQmF0dGVyeVByb3Zp
ZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBBU1NFUlQoIW1fdXBvd2VyQ2xpZW50
KTsKKyAgICBtX3Vwb3dlckNsaWVudCA9IGFkb3B0R1JlZih1cF9jbGllbnRfbmV3KCkpOworCisg
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIGlmICghdXBfY2xpZW50X2VudW1lcmF0ZV9k
ZXZpY2VzX3N5bmMobV91cG93ZXJDbGllbnQuZ2V0KCksIDAsICZlcnJvci5vdXRQdHIoKSkpIHsK
KyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlTdGF0dXMoTm90QXZhaWxhYmxlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91cG93ZXJDbGll
bnQuZ2V0KCksICJkZXZpY2UtY2hhbmdlZCIsIEdfQ0FMTEJBQ0socG93ZXJEZXZpY2VBbHRlcmF0
aW9uQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXBvd2VyQ2xpZW50
LmdldCgpLCAiZGV2aWNlLWFkZGVkIiwgR19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25D
YWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91cG93ZXJDbGllbnQuZ2V0
KCksICJkZXZpY2UtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0socG93ZXJEZXZpY2VBbHRlcmF0aW9uQ2Fs
bGJhY2spLCB0aGlzKTsKKworICAgIG1faXNVcGRhdGluZyA9IHRydWU7CisgICAgdXBkYXRlQmF0
dGVyeVN0YXR1cygpOworfQorCit2b2lkIEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RvcFVwZGF0
aW5nKCkKK3sKKyAgICBtX3Vwb3dlckNsaWVudC5jbGVhcigpOworICAgIG1faXNVcGRhdGluZyA9
IGZhbHNlOworfQorCit2b2lkIEJhdHRlcnlQcm92aWRlclVQb3dlcjo6dXBkYXRlQmF0dGVyeVN0
YXR1cygpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IEdQdHJBcnJheSogZGV2aWNlcyA9IHVwX2NsaWVudF9nZXRfZGV2aWNlcyhtX3Vwb3dlckNsaWVu
dC5nZXQoKSk7CisgICAgaWYgKCFkZXZpY2VzKSB7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVC
YXR0ZXJ5U3RhdHVzKE5vdEF2YWlsYWJsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBudW1PZkJhdHRlcnlEZXZpY2VzID0gMDsKKyAgICBkb3VibGUgY29tYmluZWRF
bmVyZ3lDYXBhY2l0eUN1cnJlbnQgPSAwLCBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCA9IDAs
IGNvbWJpbmVkRW5lcmd5UmF0ZSA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGV2aWNlcy0+bGVuOyBpKyspIHsKKyAgICAgICAgVXBEZXZpY2UqIGRldmljZSA9IHN0YXRpY19j
YXN0PFVwRGV2aWNlKj4oZ19wdHJfYXJyYXlfaW5kZXgoZGV2aWNlcywgaSkpOworICAgICAgICBV
cERldmljZUtpbmQgZGV2aWNlS2luZDsKKyAgICAgICAgVXBEZXZpY2VTdGF0ZSBkZXZpY2VTdGF0
ZTsKKyAgICAgICAgYm9vbCBpc1ByZXNlbnQ7CisgICAgICAgIGRvdWJsZSBlbmVyZ3lDYXBhY2l0
eUN1cnJlbnQgPSAwLCBlbmVyZ3lDYXBhY2l0eUVtcHR5ID0gMCwgZW5lcmd5Q2FwYWNpdHlGdWxs
ID0gMCwgZW5lcmd5UmF0ZSA9IDA7CisKKyAgICAgICAgZ19vYmplY3RfZ2V0KGRldmljZSwKKyAg
ICAgICAgICAgICJlbmVyZ3kiLCAmZW5lcmd5Q2FwYWNpdHlDdXJyZW50LAorICAgICAgICAgICAg
ImVuZXJneS1lbXB0eSIsICZlbmVyZ3lDYXBhY2l0eUVtcHR5LAorICAgICAgICAgICAgImVuZXJn
eS1mdWxsIiwgJmVuZXJneUNhcGFjaXR5RnVsbCwKKyAgICAgICAgICAgICJlbmVyZ3ktcmF0ZSIs
ICZlbmVyZ3lSYXRlLAorICAgICAgICAgICAgImlzLXByZXNlbnQiLCAmaXNQcmVzZW50LAorICAg
ICAgICAgICAgImtpbmQiLCAmZGV2aWNlS2luZCwKKyAgICAgICAgICAgICJzdGF0ZSIsICZkZXZp
Y2VTdGF0ZSwKKyAgICAgICAgICAgIG51bGxwdHIpOworCisgICAgICAgIGlmIChkZXZpY2VLaW5k
ICE9IFVQX0RFVklDRV9LSU5EX0JBVFRFUlkgfHwgIWlzUHJlc2VudCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIG51bU9mQmF0dGVyeURldmljZXMrKzsKKyAgICAgICAgY29tYmlu
ZWRFbmVyZ3lDYXBhY2l0eUN1cnJlbnQgKz0gZW5lcmd5Q2FwYWNpdHlDdXJyZW50IC0gZW5lcmd5
Q2FwYWNpdHlFbXB0eTsKKyAgICAgICAgY29tYmluZWRFbmVyZ3lDYXBhY2l0eUZ1bGwgKz0gZW5l
cmd5Q2FwYWNpdHlGdWxsOworICAgICAgICAvLyBBZGRlZCBlbmVyZ3kgcmF0ZSBzaG91bGQgYmUg
c2lnbmVkIGFjY29yZGluZyB0byB0aGUgY2hhcmdpbmcvZGlzY2hhcmdpbmcgc3RhdGUuCisgICAg
ICAgIGNvbWJpbmVkRW5lcmd5UmF0ZSArPSBkZXZpY2VTdGF0ZSA9PSBVUF9ERVZJQ0VfU1RBVEVf
RElTQ0hBUkdJTkcgPyAtZW5lcmd5UmF0ZSA6IGVuZXJneVJhdGU7CisgICAgfQorCisgICAgZ19w
dHJfYXJyYXlfdW5yZWYoZGV2aWNlcyk7CisKKyAgICBpZiAoIW51bU9mQmF0dGVyeURldmljZXMp
IHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlTdGF0dXMoTm90QXZhaWxhYmxlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvdWJsZSBsZXZlbCA9IDA7CisgICAgaWYg
KGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsID4gMCkKKyAgICAgICAgbGV2ZWwgPSBjb21iaW5l
ZEVuZXJneUNhcGFjaXR5Q3VycmVudCAvIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsOworCisg
ICAgaWYgKGNvbWJpbmVkRW5lcmd5UmF0ZSA+PSAwKSB7CisgICAgICAgIGRvdWJsZSBjaGFyZ2lu
Z1RpbWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgICAg
IGlmIChjb21iaW5lZEVuZXJneVJhdGUpCisgICAgICAgICAgICBjaGFyZ2luZ1RpbWUgPSAzNjAw
ICogKGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsIC0gY29tYmluZWRFbmVyZ3lDYXBhY2l0eUN1
cnJlbnQpIC8gY29tYmluZWRFbmVyZ3lSYXRlOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlQmF0
dGVyeVN0YXR1cyhDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBsZXZlbCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZG91YmxlIGRpc2NoYXJnaW5nVGltZSA9IDM2MDAgKiBjb21iaW5lZEVuZXJneUNh
cGFjaXR5Q3VycmVudCAvIHN0ZDo6YWJzKGNvbWJpbmVkRW5lcmd5UmF0ZSk7CisgICAgICAgIG1f
Y2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKERpc2NoYXJnaW5nLCBkaXNjaGFyZ2luZ1RpbWUs
IGxldmVsKTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQ
b3dlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMTYwOWJiNjVhOGM1MmU4ODE1MThkOTVmZGVmZjRjNWM2MTg3ZDE0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgQmF0dGVyeVByb3ZpZGVyVVBvd2VyX2gKKyNkZWZpbmUg
QmF0dGVyeVByb3ZpZGVyVVBvd2VyX2gKKworI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKKwor
I2luY2x1ZGUgPGxpYnVwb3dlci1nbGliL3Vwb3dlci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCYXR0ZXJ5UHJvdmlk
ZXJVUG93ZXJDbGllbnQ7CisKK2NsYXNzIEJhdHRlcnlQcm92aWRlclVQb3dlciB7CitwdWJsaWM6
CisgICAgQmF0dGVyeVByb3ZpZGVyVVBvd2VyKEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudCop
OworCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsK
KworICAgIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cygpOworCitwcml2YXRlOgorICAgIEJhdHRl
cnlQcm92aWRlclVQb3dlckNsaWVudCogbV9jbGllbnQ7CisKKyAgICBHUmVmUHRyPFVwQ2xpZW50
PiBtX3Vwb3dlckNsaWVudDsKKworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjZW5kaWYgLy8gQmF0dGVyeVByb3Zp
ZGVyVVBvd2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0
dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmZjA1NTVkNmNmZDIy
YzFiZDQyN2FiMmI2NDAwNjkwYTUxYzRlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBC
YXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnRfaAorI2RlZmluZSBCYXR0ZXJ5UHJvdmlkZXJVUG93
ZXJDbGllbnRfaAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gQmF0dGVyeVByb3ZpZGVyVVBvd2VyU3RhdHVzIHsKKyAgICBOb3RBdmFp
bGFibGUgPSAwLAorICAgIENoYXJnaW5nLAorICAgIERpc2NoYXJnaW5nLAorfTsKKworY2xhc3Mg
QmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQmF0dGVyeVN0YXR1cyhCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJTdGF0dXMsIGRvdWJsZSB0
aW1lUmVtYWluaW5nID0gMCwgZG91YmxlIGxldmVsID0gMCkgPSAwOworfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjZW5kaWYgLy8gQmF0dGVyeVByb3ZpZGVy
VVBvd2VyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggNGZmNDY1NjQwMDIz
NzRlMGUyOWQ0ZDJmY2FkOGU2OWY2NDViZGQ4Zi4uN2M3MjcxODFmMDAxMGNlYmEyMWU3ODQ3ZjI2
NGUwNWUyZWVkZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTEyNiw2ICsxMjYs
NyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdU
S19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQoUE5HX0xJQlMpIFwKIAkkKFNRTElURTNf
TElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChVUE9XRVJfR0xJQl9MSUJTKSBcCiAJJChX
RUJQX0xJQlMpIFwKIAkkKFhDT01QT1NJVEVfTElCUykgXAogCSQoWERBTUFHRV9MSUJTKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGI3ZTA2NmQ2Y2U1OWIzZDhkZTJmYWQ4MmJjOTcwYjlkMzM4
ZDQwMmIuLjRkZmI5OTYzZDc2ZDlmOTRlMTAxODY5M2NlMWYxZDg0YmU3NzYwMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC0yNzgsNiArMjc4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIK
IAkkKFBOR19MSUJTKSBcCiAJJChTUUxJVEUzX0xJQlMpIFwKIAkkKFVOSUNPREVfTElCUykgXAor
CSQoVVBPV0VSX0dMSUJfTElCUykgXAogCSQoV0VCUF9MSUJTKSBcCiAJJChYUkVOREVSX0xJQlMp
IFwKIAkkKFhDT01QT1NJVEVfTElCUykgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218758</attachid>
            <date>2013-12-09 07:31:13 -0800</date>
            <delta_ts>2013-12-09 07:32:26 -0800</delta_ts>
            <desc>Rebased patch.</desc>
            <filename>bug-115719-20131209163112.patch</filename>
            <type>text/plain</type>
            <size>17503</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmMTZmZDE0ZGM3Mjk2
YmJiYTI1MjQ2YzE0MGJlMzVjY2NjYTI1OTQ1Li45YTg0ZTJmMzcxNDc2YThhMWUzZDhiNzNhMTVk
YTIxNDUzMWRjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0wOSAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYiBkaXJlY3RvcnkgdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgc2VhcmNoZWQKKyAg
ICAgICAgZm9yIGhlYWRlciBpbmNsdXNpb24uIEFkZCB0aGUgdXBvd2VyLWdsaWIgZGVwZW5kZW5j
eSBDRkxBR1MgdG8gdGhlIGxpc3Qgb2YgbGliUGxhdGZvcm0ncyBDUFBGTEFHUy4KKwogMjAxMy0x
Mi0wMiAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBOaXggVXBzdHJlYW06IFVwZGF0aW5nIFBsYXRmb3JtIGZpbGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmYyZjczYWU0ZDMyNWNiZmUxYmFiMjNlNWI0ZTVmNDEwNDE3ZmE2Yi4uZDRi
MmRiMzcyZDg2NjIyNTgzYjFjMDc4MDQwNzEwMmI3OWE1ZDExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU0IEBACisyMDEzLTEyLTA5ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEu
Y29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzE5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIsIGEgcHJvdmlkZXIgb2YgdGhlIHN5c3RlbSdzIGJhdHRlcnkgc3RhdHVzIHRo
YXQgcHJvZHVjZXMgdGhlIGluZm9ybWF0aW9uCisgICAgICAgIHVzaW5nIHRoZSB1cG93ZXItZ2xp
YiBsaWJyYXJ5LgorCisgICAgICAgIFRoZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIgY3JlYXRlcyBh
IG5ldyBVUG93ZXIgY2xpZW50IHdoZW4gdGhlIHByb3ZpZGVyIHNob3VsZCBzdGFydCBlbWl0dGlu
ZyB1cGRhdGVzIGFuZCBob29rcworICAgICAgICB1cCB0byBkZXZpY2UgYWx0ZXJhdGlvbiBzaWdu
YWxzLiBUaGVzZSBvbmx5IGZpcmUgcmVjYWxjdWxhdGlvbiBvZiB0aGUgYmF0dGVyeSBzdGF0dXMg
d2hlbiBhIGJhdHRlcnkgZGV2aWNlIGlzIGFsdGVyZWQuCisKKyAgICAgICAgV2hlbiByZWNhbGN1
bGF0aW5nLCBldmVyeSBiYXR0ZXJ5IGRldmljZSBpcyB0YWtlbiBpbnRvIGFjY291bnQsIGFjY3Vt
dWxhdGluZyB0aGUgZW5lcmd5IGNhcGFjaXRpZXMgd2hlbiBib3RoIGVtcHR5CisgICAgICAgIGFu
ZCBmdWxsLCB0aGUgY3VycmVudCByYXRlIG9mIGVuZXJneSBjaGFyZ2luZy9kaXNjaGFyZ2luZywg
YW5kIHRoZSBiYXR0ZXJ5IHN0YXR1cyAod2hldGhlciB0aGUgZGV2aWNlIGlzIGNoYXJnaW5nIG9y
CisgICAgICAgIGRpc2NoYXJnaW5nKS4gVGhpcyBnaXZlcyBhIHNldCBvZiBkYXRhIHRoYXQgY292
ZXJzIHRoZSBvdmVyYWxsIGJhdHRlcnkgc3RhdHVzIG9mIHRoZSBzeXN0ZW0uCisKKyAgICAgICAg
VGhpcyBkYXRhIGlzIHRoZW4gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGJhdHRlcnkgc3RhdHVzIGFz
IHBlcmNlaXZlZCBieSB0aGUgV2ViQ29yZSBpbXBsZW1lbnRhdGlvbi4gQ2hhcmdpbmcgaXMgZGV0
ZXJtaW5lZAorICAgICAgICBieSBleGFtaW5pbmcgdGhlIGludGVncmFsIHNpZ24gb2YgdGhlIGN1
cnJlbnQgY29tYmluZWQgZW5lcmd5IHJhdGUuIENoYXJnaW5nIGFuZCBkaXNjaGFyZ2luZyB0aW1l
cyBhcmUgY2FsY3VsYXRlZCwgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZSwgYnkgZGl2aWRpbmcg
dGhlIGNoYXJnYWJsZS9kaXNjaGFyZ2FibGUgY2FwYWNpdHkgd2l0aCB0aGUgY3VycmVudCBjb21i
aW5lZCBlbmVyZ3kgcmF0ZS4gVGhlIGJhdHRlcnkgbGV2ZWwgaXMKKyAgICAgICAgY2FsY3VsYXRl
ZCBieSBkaXZpZGluZyB0aGUgY3VycmVudCBlbmVyZ3kgY2FwYWNpdHkgd2l0aCB0aGUgZnVsbCBl
bmVyZ3kgY2FwYWNpdHkgKGkuZS4gdGhlIGNvbWJpbmVkIGNhcGFjaXR5IG9mIGFsbAorICAgICAg
ICB0aGUgYmF0dGVyaWVzIHRoYXQgdGhlIHN5c3RlbSBwb3NzZXNzZXMpLiBUaGUgc3RhdHVzIGlz
IChpbmRpcmVjdGx5KSBwYXNzZWQgb250byBCYXR0ZXJ5TWFuYWdlciBieSBpbnZva2luZyB0aGUK
KyAgICAgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyBtZXRob2Qgb24gdGhlIGNsaWVudCwgd2l0aCB0
aGUgZmlyc3QgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYmF0dGVyeSBjaGFyZ2luZy9kaXNj
aGFyZ2luZyBzdGF0ZSwKKyAgICAgICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIgcmVwcmVzZW50aW5n
IHRoZSB0aW1lIGxlZnQgdW50aWwgdGhlIGJhdHRlcnkgaXMgZnVsbHkgY2hhcmdlZCAod2hlbiBj
aGFyZ2luZykgb3IgZnVsbHkKKyAgICAgICAgZGVwbGV0ZWQgKHdoZW4gZGlzY2hhcmdpbmcpLCBh
bmQgdGhlIHRoaXJkIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgYmF0dGVyeSBs
ZXZlbC4KKworICAgICAgICBXaGVuZXZlciB0aGUgaW1wbGVtZW50YXRpb24gY2Fubm90IHByb3Zp
ZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cyBvZiB0aGUgc3lzdGVt
LCB0aGUgY2xpZW50J3MKKyAgICAgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyBtZXRob2QgaXMgaW52
b2tlZCB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcmVwb3J0aW5nIHRoZSB1bmF2YWlsYWJpbGl0
eSBvZiBhbnkgaW5mb3JtYXRpb24KKyAgICAgICAgYWJvdXQgdGhlIGJhdHRlcnkgc3RhdHVzLiBU
aGUgb3RoZXIgdHdvIHBhcmFtZXRlcnMgY2FuIGJlIG9taXR0ZWQgYXMgdGhleSBkZWZhdWx0IHRv
IDAgd2hlbiBub3QgZ2l2ZW4gYW5kIGFyZSBuZWl0aGVyCisgICAgICAgIGF2YWlsYWJsZSBub3Ig
dXNlZnVsIGluIHN1Y2ggY2lyY3Vtc3RhbmNlcy4gVGhlIGNsaWVudCBzaG91bGQgaGFuZGxlIHN1
Y2ggYW4gdXBkYXRlIGJ5IHJlcG9ydGluZyB0aGUgJ2RlZmF1bHQnIGJhdHRlcnkKKyAgICAgICAg
c3RhdHVzIC0gY2hhcmdpbmcsIHRoZSBiYXR0ZXJ5IGxldmVsIGJlaW5nIGF0IDEuMCBhbmQgYm90
aCB0aGUgY2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWUgaGF2aW5nIHRoZSB2YWx1ZSBvZgor
ICAgICAgICB0aGUgcG9zaXRpdmUgaW5maW5pdHkgKGFzIHBlciB0aGUgQmF0dGVyeSBTdGF0dXMg
QVBJIHNwZWNpZmljYXRpb24pLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBoZWF2
aWx5IGluc3BpcmVkIGJ5IGEgc2ltaWxhciBhcHByb2FjaCB0byBjYWxjdWxhdGluZyBiYXR0ZXJ5
IHN0YXR1cyBpbiBHTk9NRSBTZXR0aW5ncyBEYWVtb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0gbm8gbmV3IGZ1bmN0aW9uYWxpdHkuIFRoZSBmZWF0dXJlIGlzIG5vdCB5ZXQgZW5hYmxlZC4g
V2hlbiBlbmFibGVkLCB0aGUgcmVsZXZhbnQgdGVzdHMgcGFzcy4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06IEFkZCB0aGUgQmF0dGVyeVByb3ZpZGVyVVBvd2VyKENsaWVudCkgYnVp
bGQgdGFyZ2V0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dl
ci5jcHA6IEFkZGVkLgorICAgICAgICAocG93ZXJEZXZpY2VBbHRlcmF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIpOgor
ICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKEJhdHRlcnlQ
cm92aWRlclVQb3dlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudCk6CisKIDIwMTMtMTItMDgg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgZ2V0Q29tcHV0ZWRT
dHlsZSBib3JkZXItcmFkaXVzIHNob3J0aGFuZCBvbWl0cyB2ZXJ0aWNhbCByYWRpdXMgaW5mb3Jt
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA3ZDc2YzI0MDJjM2YzMjFmYjcwZGYzYmMxNmY1YmE0
YzQ1MzA3NmIwLi5jMmE5MGViOWMwNDYxZjE1NTZlYmRkMjc5NWI4OTQ4OWRiZWUyNzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDkgIEpvc8OpIERhcGVuYSBQ
YXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYSBVUG93ZXItYmFzZWQgQmF0dGVyeVByb3Zp
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOiBMaW5rIHRoZSBsaWJ3ZWJraWd0ayBsaWJyYXJ5IGFnYWluc3QgdGhlIHVw
b3dlci1nbGliIGxpYnJhcnkuCisKIDIwMTMtMTItMDcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAg
PGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4cGVjdGF0aW9uIGZvbGxv
d2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjFmNGJmOGE1YmUzOGEwZmEyYTBlOGIyMDE0NmVm
MmFjYzkyYmYzOC4uODI5YWZjMzZmZDgxMzc1MTBjZTQyNThmYjdkMDU5NzUwNDJiMmY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA5ICBKb3PDqSBEYXBlbmEgUGF6ICA8
amRhcGVuYUBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbTogTGluayB0aGUgbGlid2Via2l0Mmd0ayBsaWJyYXJ5IGFnYWluc3QgdGhlIHVwb3dl
ci1nbGliIGxpYnJhcnkuCisKIDIwMTMtMTItMDggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gTW92ZSBGdWxsU2NyZWVuTWFuYWdlciBs
b2dpYyB0byBXZWJWaWV3RWZsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KaW5kZXggYmRmZjI4ZTIzYzkx
N2E5YmVjOWRiYWYwMGMwYTY5YzljMDk1NGY2Ny4uNzhlOGM0YjJiYTEyMmYzMmI1MWFmNjBkN2Y2
OTg2M2MzYjUxZjAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpAQCAtMjgsNiArMjgsNyBAQCBw
bGF0Zm9ybV93ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpbyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2Fpcm8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUgXAor
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybSBcCkBAIC05NSw3ICs5Niw4IEBAIGxpYlBs
YXRmb3JtX2xhX0NQUEZMQUdTID0gXAogCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCiAJJChHRU9DTFVF
X0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJ
JChMSUJTT1VQX0NGTEFHUykgXAorCSQoVVBPV0VSX0dMSUJfQ0ZMQUdTKQogCiBsaWJQbGF0Zm9y
bUd0a19sYV9TT1VSQ0VTID0gXAogCSQocGxhdGZvcm1ndGtfc291cmNlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDZiNDViOTM1NmYyZDlkZmQ5ZWRlZGY3ODhlN2IxMzI3Zjhj
NWI5OGEuLjIzMTkzNjZmZTFlYWI2ZDA2Yjg4OTdkZGFkMTY5ZmY0Yjc0ZTkwZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTU3OSw2ICs1NTc5LDkgQEAgcGxhdGZvcm1fc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xv
Y2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vv
Y2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0
aWVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhOWYxYmY1YjVmN2Q4OTJmZWY1ZjRmY2Qx
NDNiNGY5ZWZmNGFkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkJhdHRlcnlQcm92aWRlclVQb3dlci5oIgorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RB
VFVTKQorCisjaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgiCisjaW5jbHVk
ZSA8Y21hdGg+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyB2b2lkIHBvd2VyRGV2
aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKFVwQ2xpZW50KiB1cG93ZXJDbGllbnQsIFVwRGV2aWNlKiB1
cG93ZXJEZXZpY2UsIEJhdHRlcnlQcm92aWRlclVQb3dlciogcHJvdmlkZXIpCit7CisgICAgVXBE
ZXZpY2VLaW5kIGRldmljZUtpbmQ7CisgICAgZ19vYmplY3RfZ2V0KHVwb3dlckRldmljZSwgImtp
bmQiLCAmZGV2aWNlS2luZCwgbnVsbHB0cik7CisgICAgaWYgKGRldmljZUtpbmQgIT0gVVBfREVW
SUNFX0tJTkRfQkFUVEVSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvdmlkZXItPnVwZGF0
ZUJhdHRlcnlTdGF0dXMoKTsKK30KKworQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7CisgICAgQVNTRVJU
KG1fY2xpZW50KTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0YXJ0VXBkYXRp
bmcoKQoreworICAgIEFTU0VSVCghbV91cG93ZXJDbGllbnQpOworICAgIG1fdXBvd2VyQ2xpZW50
ID0gYWRvcHRHUmVmKHVwX2NsaWVudF9uZXcoKSk7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgaWYgKCF1cF9jbGllbnRfZW51bWVyYXRlX2RldmljZXNfc3luYyhtX3Vwb3dlckNs
aWVudC5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBtX2NsaWVudC0+dXBk
YXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRldmljZS1jaGFu
Z2VkIiwgR19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91cG93ZXJDbGllbnQuZ2V0KCksICJkZXZpY2UtYWRkZWQi
LCBHX0NBTExCQUNLKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRldmljZS1yZW1vdmVkIiwg
R19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOworCisgICAg
bV9pc1VwZGF0aW5nID0gdHJ1ZTsKKyAgICB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7Cit9CisKK3Zv
aWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fdXBvd2Vy
Q2xpZW50LmNsZWFyKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKK3ZvaWQgQmF0
dGVyeVByb3ZpZGVyVVBvd2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKCkKK3sKKyAgICBpZiAoIW1f
aXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgR1B0ckFycmF5KiBkZXZpY2VzID0g
dXBfY2xpZW50X2dldF9kZXZpY2VzKG1fdXBvd2VyQ2xpZW50LmdldCgpKTsKKyAgICBpZiAoIWRl
dmljZXMpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlTdGF0dXMoTm90QXZhaWxh
YmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU9mQmF0dGVy
eURldmljZXMgPSAwOworICAgIGRvdWJsZSBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVudCA9
IDAsIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsID0gMCwgY29tYmluZWRFbmVyZ3lSYXRlID0g
MDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXZpY2VzLT5sZW47IGkrKykgewor
ICAgICAgICBVcERldmljZSogZGV2aWNlID0gc3RhdGljX2Nhc3Q8VXBEZXZpY2UqPihnX3B0cl9h
cnJheV9pbmRleChkZXZpY2VzLCBpKSk7CisgICAgICAgIFVwRGV2aWNlS2luZCBkZXZpY2VLaW5k
OworICAgICAgICBVcERldmljZVN0YXRlIGRldmljZVN0YXRlOworICAgICAgICBib29sIGlzUHJl
c2VudDsKKyAgICAgICAgZG91YmxlIGVuZXJneUNhcGFjaXR5Q3VycmVudCA9IDAsIGVuZXJneUNh
cGFjaXR5RW1wdHkgPSAwLCBlbmVyZ3lDYXBhY2l0eUZ1bGwgPSAwLCBlbmVyZ3lSYXRlID0gMDsK
KworICAgICAgICBnX29iamVjdF9nZXQoZGV2aWNlLAorICAgICAgICAgICAgImVuZXJneSIsICZl
bmVyZ3lDYXBhY2l0eUN1cnJlbnQsCisgICAgICAgICAgICAiZW5lcmd5LWVtcHR5IiwgJmVuZXJn
eUNhcGFjaXR5RW1wdHksCisgICAgICAgICAgICAiZW5lcmd5LWZ1bGwiLCAmZW5lcmd5Q2FwYWNp
dHlGdWxsLAorICAgICAgICAgICAgImVuZXJneS1yYXRlIiwgJmVuZXJneVJhdGUsCisgICAgICAg
ICAgICAiaXMtcHJlc2VudCIsICZpc1ByZXNlbnQsCisgICAgICAgICAgICAia2luZCIsICZkZXZp
Y2VLaW5kLAorICAgICAgICAgICAgInN0YXRlIiwgJmRldmljZVN0YXRlLAorICAgICAgICAgICAg
bnVsbHB0cik7CisKKyAgICAgICAgaWYgKGRldmljZUtpbmQgIT0gVVBfREVWSUNFX0tJTkRfQkFU
VEVSWSB8fCAhaXNQcmVzZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbnVt
T2ZCYXR0ZXJ5RGV2aWNlcysrOworICAgICAgICBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVu
dCArPSBlbmVyZ3lDYXBhY2l0eUN1cnJlbnQgLSBlbmVyZ3lDYXBhY2l0eUVtcHR5OworICAgICAg
ICBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCArPSBlbmVyZ3lDYXBhY2l0eUZ1bGw7CisgICAg
ICAgIC8vIEFkZGVkIGVuZXJneSByYXRlIHNob3VsZCBiZSBzaWduZWQgYWNjb3JkaW5nIHRvIHRo
ZSBjaGFyZ2luZy9kaXNjaGFyZ2luZyBzdGF0ZS4KKyAgICAgICAgY29tYmluZWRFbmVyZ3lSYXRl
ICs9IGRldmljZVN0YXRlID09IFVQX0RFVklDRV9TVEFURV9ESVNDSEFSR0lORyA/IC1lbmVyZ3lS
YXRlIDogZW5lcmd5UmF0ZTsKKyAgICB9CisKKyAgICBnX3B0cl9hcnJheV91bnJlZihkZXZpY2Vz
KTsKKworICAgIGlmICghbnVtT2ZCYXR0ZXJ5RGV2aWNlcykgeworICAgICAgICBtX2NsaWVudC0+
dXBkYXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZG91YmxlIGxldmVsID0gMDsKKyAgICBpZiAoY29tYmluZWRFbmVyZ3lDYXBhY2l0
eUZ1bGwgPiAwKQorICAgICAgICBsZXZlbCA9IGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50
IC8gY29tYmluZWRFbmVyZ3lDYXBhY2l0eUZ1bGw7CisKKyAgICBpZiAoY29tYmluZWRFbmVyZ3lS
YXRlID49IDApIHsKKyAgICAgICAgZG91YmxlIGNoYXJnaW5nVGltZSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICAgICAgaWYgKGNvbWJpbmVkRW5lcmd5UmF0
ZSkKKyAgICAgICAgICAgIGNoYXJnaW5nVGltZSA9IDM2MDAgKiAoY29tYmluZWRFbmVyZ3lDYXBh
Y2l0eUZ1bGwgLSBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVudCkgLyBjb21iaW5lZEVuZXJn
eVJhdGU7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKENoYXJnaW5nLCBj
aGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb3VibGUgZGlzY2hh
cmdpbmdUaW1lID0gMzYwMCAqIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50IC8gc3RkOjph
YnMoY29tYmluZWRFbmVyZ3lSYXRlKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlT
dGF0dXMoRGlzY2hhcmdpbmcsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOworICAgIH0KK30KKwor
I2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNjA5
YmI2NWE4YzUyZTg4MTUxOGQ5NWZkZWZmNGM1YzYxODdkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5oCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAorI2RlZmluZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJf
aAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjaW5jbHVkZSA8bGlidXBvd2VyLWds
aWIvdXBvd2VyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudDsKKworY2xh
c3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIHsKK3B1YmxpYzoKKyAgICBCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50Kik7CisKKyAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisgICAgdm9pZCB1cGRhdGVCYXR0
ZXJ5U3RhdHVzKCk7CisKK3ByaXZhdGU6CisgICAgQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50
KiBtX2NsaWVudDsKKworICAgIEdSZWZQdHI8VXBDbGllbnQ+IG1fdXBvd2VyQ2xpZW50OworCisg
ICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVS
WV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZmMDU1NWQ2Y2ZkMjJjMWJkNDI3YWIyYjY0MDA2OTBhNTFj
NGVhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0
dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEJhdHRlcnlQcm92aWRlclVQb3dlckNs
aWVudF9oCisjZGVmaW5lIEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudF9oCisKKyNpZiBFTkFC
TEUoQkFUVEVSWV9TVEFUVVMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBCYXR0ZXJ5
UHJvdmlkZXJVUG93ZXJTdGF0dXMgeworICAgIE5vdEF2YWlsYWJsZSA9IDAsCisgICAgQ2hhcmdp
bmcsCisgICAgRGlzY2hhcmdpbmcsCit9OworCitjbGFzcyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKEJh
dHRlcnlQcm92aWRlclVQb3dlclN0YXR1cywgZG91YmxlIHRpbWVSZW1haW5pbmcgPSAwLCBkb3Vi
bGUgbGV2ZWwgPSAwKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9T
VEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQppbmRleCA0ZmY0NjU2NDAwMjM3NGUwZTI5ZDRkMmZjYWQ4ZTY5ZjY0
NWJkZDhmLi43YzcyNzE4MWYwMDEwY2ViYTIxZTc4NDdmMjY0ZTA1ZTJlZWRlOGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpYndlYmtpdGd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9s
YV9MSUJBCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJ
QlMpIFwKKwkkKFVQT1dFUl9HTElCX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWENPTVBP
U0lURV9MSUJTKSBcCiAJJChYREFNQUdFX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXgg
OTMxYzg4N2FkOGM2NWMxN2Q1MWM5MjYyNjdkMzhlNmFhZjI4NTY1YS4uMDgzNjNmZTVlMzQ1ZDA4
MmRiODg1NWVkY2FkODExMjhkMmExNzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTI4MCw2
ICsyODAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoUE5HX0xJQlMpIFwKIAkkKFNR
TElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChVUE9XRVJfR0xJQl9MSUJTKSBc
CiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWENPTVBPU0lURV9MSUJT
KSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218759</attachid>
            <date>2013-12-09 07:32:34 -0800</date>
            <delta_ts>2013-12-11 10:01:30 -0800</delta_ts>
            <desc>Rebased patch.</desc>
            <filename>bug-115719-20131209163232.patch</filename>
            <type>text/plain</type>
            <size>17503</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmMTZmZDE0ZGM3Mjk2
YmJiYTI1MjQ2YzE0MGJlMzVjY2NjYTI1OTQ1Li45YTg0ZTJmMzcxNDc2YThhMWUzZDhiNzNhMTVk
YTIxNDUzMWRjZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMi0wOSAg
Sm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIFVQb3dlci1iYXNl
ZCBCYXR0ZXJ5UHJvdmlkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTcxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYiBkaXJlY3RvcnkgdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgc2VhcmNoZWQKKyAg
ICAgICAgZm9yIGhlYWRlciBpbmNsdXNpb24uIEFkZCB0aGUgdXBvd2VyLWdsaWIgZGVwZW5kZW5j
eSBDRkxBR1MgdG8gdGhlIGxpc3Qgb2YgbGliUGxhdGZvcm0ncyBDUFBGTEFHUy4KKwogMjAxMy0x
Mi0wMiAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBOaXggVXBzdHJlYW06IFVwZGF0aW5nIFBsYXRmb3JtIGZpbGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmYyZjczYWU0ZDMyNWNiZmUxYmFiMjNlNWI0ZTVmNDEwNDE3ZmE2Yi4uZDRi
MmRiMzcyZDg2NjIyNTgzYjFjMDc4MDQwNzEwMmI3OWE1ZDExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU0IEBACisyMDEzLTEyLTA5ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEu
Y29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzE5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIsIGEgcHJvdmlkZXIgb2YgdGhlIHN5c3RlbSdzIGJhdHRlcnkgc3RhdHVzIHRo
YXQgcHJvZHVjZXMgdGhlIGluZm9ybWF0aW9uCisgICAgICAgIHVzaW5nIHRoZSB1cG93ZXItZ2xp
YiBsaWJyYXJ5LgorCisgICAgICAgIFRoZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIgY3JlYXRlcyBh
IG5ldyBVUG93ZXIgY2xpZW50IHdoZW4gdGhlIHByb3ZpZGVyIHNob3VsZCBzdGFydCBlbWl0dGlu
ZyB1cGRhdGVzIGFuZCBob29rcworICAgICAgICB1cCB0byBkZXZpY2UgYWx0ZXJhdGlvbiBzaWdu
YWxzLiBUaGVzZSBvbmx5IGZpcmUgcmVjYWxjdWxhdGlvbiBvZiB0aGUgYmF0dGVyeSBzdGF0dXMg
d2hlbiBhIGJhdHRlcnkgZGV2aWNlIGlzIGFsdGVyZWQuCisKKyAgICAgICAgV2hlbiByZWNhbGN1
bGF0aW5nLCBldmVyeSBiYXR0ZXJ5IGRldmljZSBpcyB0YWtlbiBpbnRvIGFjY291bnQsIGFjY3Vt
dWxhdGluZyB0aGUgZW5lcmd5IGNhcGFjaXRpZXMgd2hlbiBib3RoIGVtcHR5CisgICAgICAgIGFu
ZCBmdWxsLCB0aGUgY3VycmVudCByYXRlIG9mIGVuZXJneSBjaGFyZ2luZy9kaXNjaGFyZ2luZywg
YW5kIHRoZSBiYXR0ZXJ5IHN0YXR1cyAod2hldGhlciB0aGUgZGV2aWNlIGlzIGNoYXJnaW5nIG9y
CisgICAgICAgIGRpc2NoYXJnaW5nKS4gVGhpcyBnaXZlcyBhIHNldCBvZiBkYXRhIHRoYXQgY292
ZXJzIHRoZSBvdmVyYWxsIGJhdHRlcnkgc3RhdHVzIG9mIHRoZSBzeXN0ZW0uCisKKyAgICAgICAg
VGhpcyBkYXRhIGlzIHRoZW4gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGJhdHRlcnkgc3RhdHVzIGFz
IHBlcmNlaXZlZCBieSB0aGUgV2ViQ29yZSBpbXBsZW1lbnRhdGlvbi4gQ2hhcmdpbmcgaXMgZGV0
ZXJtaW5lZAorICAgICAgICBieSBleGFtaW5pbmcgdGhlIGludGVncmFsIHNpZ24gb2YgdGhlIGN1
cnJlbnQgY29tYmluZWQgZW5lcmd5IHJhdGUuIENoYXJnaW5nIGFuZCBkaXNjaGFyZ2luZyB0aW1l
cyBhcmUgY2FsY3VsYXRlZCwgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZSwgYnkgZGl2aWRpbmcg
dGhlIGNoYXJnYWJsZS9kaXNjaGFyZ2FibGUgY2FwYWNpdHkgd2l0aCB0aGUgY3VycmVudCBjb21i
aW5lZCBlbmVyZ3kgcmF0ZS4gVGhlIGJhdHRlcnkgbGV2ZWwgaXMKKyAgICAgICAgY2FsY3VsYXRl
ZCBieSBkaXZpZGluZyB0aGUgY3VycmVudCBlbmVyZ3kgY2FwYWNpdHkgd2l0aCB0aGUgZnVsbCBl
bmVyZ3kgY2FwYWNpdHkgKGkuZS4gdGhlIGNvbWJpbmVkIGNhcGFjaXR5IG9mIGFsbAorICAgICAg
ICB0aGUgYmF0dGVyaWVzIHRoYXQgdGhlIHN5c3RlbSBwb3NzZXNzZXMpLiBUaGUgc3RhdHVzIGlz
IChpbmRpcmVjdGx5KSBwYXNzZWQgb250byBCYXR0ZXJ5TWFuYWdlciBieSBpbnZva2luZyB0aGUK
KyAgICAgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyBtZXRob2Qgb24gdGhlIGNsaWVudCwgd2l0aCB0
aGUgZmlyc3QgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYmF0dGVyeSBjaGFyZ2luZy9kaXNj
aGFyZ2luZyBzdGF0ZSwKKyAgICAgICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIgcmVwcmVzZW50aW5n
IHRoZSB0aW1lIGxlZnQgdW50aWwgdGhlIGJhdHRlcnkgaXMgZnVsbHkgY2hhcmdlZCAod2hlbiBj
aGFyZ2luZykgb3IgZnVsbHkKKyAgICAgICAgZGVwbGV0ZWQgKHdoZW4gZGlzY2hhcmdpbmcpLCBh
bmQgdGhlIHRoaXJkIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgYmF0dGVyeSBs
ZXZlbC4KKworICAgICAgICBXaGVuZXZlciB0aGUgaW1wbGVtZW50YXRpb24gY2Fubm90IHByb3Zp
ZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cyBvZiB0aGUgc3lzdGVt
LCB0aGUgY2xpZW50J3MKKyAgICAgICAgdXBkYXRlQmF0dGVyeVN0YXR1cyBtZXRob2QgaXMgaW52
b2tlZCB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgcmVwb3J0aW5nIHRoZSB1bmF2YWlsYWJpbGl0
eSBvZiBhbnkgaW5mb3JtYXRpb24KKyAgICAgICAgYWJvdXQgdGhlIGJhdHRlcnkgc3RhdHVzLiBU
aGUgb3RoZXIgdHdvIHBhcmFtZXRlcnMgY2FuIGJlIG9taXR0ZWQgYXMgdGhleSBkZWZhdWx0IHRv
IDAgd2hlbiBub3QgZ2l2ZW4gYW5kIGFyZSBuZWl0aGVyCisgICAgICAgIGF2YWlsYWJsZSBub3Ig
dXNlZnVsIGluIHN1Y2ggY2lyY3Vtc3RhbmNlcy4gVGhlIGNsaWVudCBzaG91bGQgaGFuZGxlIHN1
Y2ggYW4gdXBkYXRlIGJ5IHJlcG9ydGluZyB0aGUgJ2RlZmF1bHQnIGJhdHRlcnkKKyAgICAgICAg
c3RhdHVzIC0gY2hhcmdpbmcsIHRoZSBiYXR0ZXJ5IGxldmVsIGJlaW5nIGF0IDEuMCBhbmQgYm90
aCB0aGUgY2hhcmdpbmcgYW5kIGRpc2NoYXJnaW5nIHRpbWUgaGF2aW5nIHRoZSB2YWx1ZSBvZgor
ICAgICAgICB0aGUgcG9zaXRpdmUgaW5maW5pdHkgKGFzIHBlciB0aGUgQmF0dGVyeSBTdGF0dXMg
QVBJIHNwZWNpZmljYXRpb24pLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBoZWF2
aWx5IGluc3BpcmVkIGJ5IGEgc2ltaWxhciBhcHByb2FjaCB0byBjYWxjdWxhdGluZyBiYXR0ZXJ5
IHN0YXR1cyBpbiBHTk9NRSBTZXR0aW5ncyBEYWVtb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0gbm8gbmV3IGZ1bmN0aW9uYWxpdHkuIFRoZSBmZWF0dXJlIGlzIG5vdCB5ZXQgZW5hYmxlZC4g
V2hlbiBlbmFibGVkLCB0aGUgcmVsZXZhbnQgdGVzdHMgcGFzcy4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06IEFkZCB0aGUgQmF0dGVyeVByb3ZpZGVyVVBvd2VyKENsaWVudCkgYnVp
bGQgdGFyZ2V0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dl
ci5jcHA6IEFkZGVkLgorICAgICAgICAocG93ZXJEZXZpY2VBbHRlcmF0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpCYXR0ZXJ5UHJvdmlkZXJVUG93ZXIpOgor
ICAgICAgICAoQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKEJhdHRlcnlQ
cm92aWRlclVQb3dlcjo6dXBkYXRlQmF0dGVyeVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudCk6CisKIDIwMTMtMTItMDgg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgZ2V0Q29tcHV0ZWRT
dHlsZSBib3JkZXItcmFkaXVzIHNob3J0aGFuZCBvbWl0cyB2ZXJ0aWNhbCByYWRpdXMgaW5mb3Jt
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA3ZDc2YzI0MDJjM2YzMjFmYjcwZGYzYmMxNmY1YmE0
YzQ1MzA3NmIwLi5jMmE5MGViOWMwNDYxZjE1NTZlYmRkMjc5NWI4OTQ4OWRiZWUyNzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDkgIEpvc8OpIERhcGVuYSBQ
YXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgYSBVUG93ZXItYmFzZWQgQmF0dGVyeVByb3Zp
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU3
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOiBMaW5rIHRoZSBsaWJ3ZWJraWd0ayBsaWJyYXJ5IGFnYWluc3QgdGhlIHVw
b3dlci1nbGliIGxpYnJhcnkuCisKIDIwMTMtMTItMDcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAg
PGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRml4IEFQSSB0ZXN0IGV4cGVjdGF0aW9uIGZvbGxv
d2luZyAxNjAyMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjFmNGJmOGE1YmUzOGEwZmEyYTBlOGIyMDE0NmVm
MmFjYzkyYmYzOC4uODI5YWZjMzZmZDgxMzc1MTBjZTQyNThmYjdkMDU5NzUwNDJiMmY3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA5ICBKb3PDqSBEYXBlbmEgUGF6ICA8
amRhcGVuYUBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIGEgVVBvd2VyLWJhc2VkIEJhdHRlcnlQcm92aWRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbTogTGluayB0aGUgbGlid2Via2l0Mmd0ayBsaWJyYXJ5IGFnYWluc3QgdGhlIHVwb3dl
ci1nbGliIGxpYnJhcnkuCisKIDIwMTMtMTItMDggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gTW92ZSBGdWxsU2NyZWVuTWFuYWdlciBs
b2dpYyB0byBXZWJWaWV3RWZsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KaW5kZXggYmRmZjI4ZTIzYzkx
N2E5YmVjOWRiYWYwMGMwYTY5YzljMDk1NGY2Ny4uNzhlOGM0YjJiYTEyMmYzMmI1MWFmNjBkN2Y2
OTg2M2MzYjUxZjAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpAQCAtMjgsNiArMjgsNyBAQCBw
bGF0Zm9ybV93ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpbyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2Fpcm8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUgXAor
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybSBcCkBAIC05NSw3ICs5Niw4IEBAIGxpYlBs
YXRmb3JtX2xhX0NQUEZMQUdTID0gXAogCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCiAJJChHRU9DTFVF
X0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJ
JChMSUJTT1VQX0NGTEFHUykgXAorCSQoVVBPV0VSX0dMSUJfQ0ZMQUdTKQogCiBsaWJQbGF0Zm9y
bUd0a19sYV9TT1VSQ0VTID0gXAogCSQocGxhdGZvcm1ndGtfc291cmNlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDZiNDViOTM1NmYyZDlkZmQ5ZWRlZGY3ODhlN2IxMzI3Zjhj
NWI5OGEuLjIzMTkzNjZmZTFlYWI2ZDA2Yjg4OTdkZGFkMTY5ZmY0Yjc0ZTkwZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTU3OSw2ICs1NTc5LDkgQEAgcGxhdGZvcm1fc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xv
Y2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vv
Y2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0
aWVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5
UHJvdmlkZXJVUG93ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhOWYxYmY1YjVmN2Q4OTJmZWY1ZjRmY2Qx
NDNiNGY5ZWZmNGFkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkJhdHRlcnlQcm92aWRlclVQb3dlci5oIgorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RB
VFVTKQorCisjaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgiCisjaW5jbHVk
ZSA8Y21hdGg+CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyB2b2lkIHBvd2VyRGV2
aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKFVwQ2xpZW50KiB1cG93ZXJDbGllbnQsIFVwRGV2aWNlKiB1
cG93ZXJEZXZpY2UsIEJhdHRlcnlQcm92aWRlclVQb3dlciogcHJvdmlkZXIpCit7CisgICAgVXBE
ZXZpY2VLaW5kIGRldmljZUtpbmQ7CisgICAgZ19vYmplY3RfZ2V0KHVwb3dlckRldmljZSwgImtp
bmQiLCAmZGV2aWNlS2luZCwgbnVsbHB0cik7CisgICAgaWYgKGRldmljZUtpbmQgIT0gVVBfREVW
SUNFX0tJTkRfQkFUVEVSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvdmlkZXItPnVwZGF0
ZUJhdHRlcnlTdGF0dXMoKTsKK30KKworQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7CisgICAgQVNTRVJU
KG1fY2xpZW50KTsKK30KKwordm9pZCBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXI6OnN0YXJ0VXBkYXRp
bmcoKQoreworICAgIEFTU0VSVCghbV91cG93ZXJDbGllbnQpOworICAgIG1fdXBvd2VyQ2xpZW50
ID0gYWRvcHRHUmVmKHVwX2NsaWVudF9uZXcoKSk7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgaWYgKCF1cF9jbGllbnRfZW51bWVyYXRlX2RldmljZXNfc3luYyhtX3Vwb3dlckNs
aWVudC5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBtX2NsaWVudC0+dXBk
YXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZ19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRldmljZS1jaGFu
Z2VkIiwgR19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91cG93ZXJDbGllbnQuZ2V0KCksICJkZXZpY2UtYWRkZWQi
LCBHX0NBTExCQUNLKHBvd2VyRGV2aWNlQWx0ZXJhdGlvbkNhbGxiYWNrKSwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdChtX3Vwb3dlckNsaWVudC5nZXQoKSwgImRldmljZS1yZW1vdmVkIiwg
R19DQUxMQkFDSyhwb3dlckRldmljZUFsdGVyYXRpb25DYWxsYmFjayksIHRoaXMpOworCisgICAg
bV9pc1VwZGF0aW5nID0gdHJ1ZTsKKyAgICB1cGRhdGVCYXR0ZXJ5U3RhdHVzKCk7Cit9CisKK3Zv
aWQgQmF0dGVyeVByb3ZpZGVyVVBvd2VyOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fdXBvd2Vy
Q2xpZW50LmNsZWFyKCk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7Cit9CisKK3ZvaWQgQmF0
dGVyeVByb3ZpZGVyVVBvd2VyOjp1cGRhdGVCYXR0ZXJ5U3RhdHVzKCkKK3sKKyAgICBpZiAoIW1f
aXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgR1B0ckFycmF5KiBkZXZpY2VzID0g
dXBfY2xpZW50X2dldF9kZXZpY2VzKG1fdXBvd2VyQ2xpZW50LmdldCgpKTsKKyAgICBpZiAoIWRl
dmljZXMpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlTdGF0dXMoTm90QXZhaWxh
YmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU9mQmF0dGVy
eURldmljZXMgPSAwOworICAgIGRvdWJsZSBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVudCA9
IDAsIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlGdWxsID0gMCwgY29tYmluZWRFbmVyZ3lSYXRlID0g
MDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXZpY2VzLT5sZW47IGkrKykgewor
ICAgICAgICBVcERldmljZSogZGV2aWNlID0gc3RhdGljX2Nhc3Q8VXBEZXZpY2UqPihnX3B0cl9h
cnJheV9pbmRleChkZXZpY2VzLCBpKSk7CisgICAgICAgIFVwRGV2aWNlS2luZCBkZXZpY2VLaW5k
OworICAgICAgICBVcERldmljZVN0YXRlIGRldmljZVN0YXRlOworICAgICAgICBib29sIGlzUHJl
c2VudDsKKyAgICAgICAgZG91YmxlIGVuZXJneUNhcGFjaXR5Q3VycmVudCA9IDAsIGVuZXJneUNh
cGFjaXR5RW1wdHkgPSAwLCBlbmVyZ3lDYXBhY2l0eUZ1bGwgPSAwLCBlbmVyZ3lSYXRlID0gMDsK
KworICAgICAgICBnX29iamVjdF9nZXQoZGV2aWNlLAorICAgICAgICAgICAgImVuZXJneSIsICZl
bmVyZ3lDYXBhY2l0eUN1cnJlbnQsCisgICAgICAgICAgICAiZW5lcmd5LWVtcHR5IiwgJmVuZXJn
eUNhcGFjaXR5RW1wdHksCisgICAgICAgICAgICAiZW5lcmd5LWZ1bGwiLCAmZW5lcmd5Q2FwYWNp
dHlGdWxsLAorICAgICAgICAgICAgImVuZXJneS1yYXRlIiwgJmVuZXJneVJhdGUsCisgICAgICAg
ICAgICAiaXMtcHJlc2VudCIsICZpc1ByZXNlbnQsCisgICAgICAgICAgICAia2luZCIsICZkZXZp
Y2VLaW5kLAorICAgICAgICAgICAgInN0YXRlIiwgJmRldmljZVN0YXRlLAorICAgICAgICAgICAg
bnVsbHB0cik7CisKKyAgICAgICAgaWYgKGRldmljZUtpbmQgIT0gVVBfREVWSUNFX0tJTkRfQkFU
VEVSWSB8fCAhaXNQcmVzZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbnVt
T2ZCYXR0ZXJ5RGV2aWNlcysrOworICAgICAgICBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVu
dCArPSBlbmVyZ3lDYXBhY2l0eUN1cnJlbnQgLSBlbmVyZ3lDYXBhY2l0eUVtcHR5OworICAgICAg
ICBjb21iaW5lZEVuZXJneUNhcGFjaXR5RnVsbCArPSBlbmVyZ3lDYXBhY2l0eUZ1bGw7CisgICAg
ICAgIC8vIEFkZGVkIGVuZXJneSByYXRlIHNob3VsZCBiZSBzaWduZWQgYWNjb3JkaW5nIHRvIHRo
ZSBjaGFyZ2luZy9kaXNjaGFyZ2luZyBzdGF0ZS4KKyAgICAgICAgY29tYmluZWRFbmVyZ3lSYXRl
ICs9IGRldmljZVN0YXRlID09IFVQX0RFVklDRV9TVEFURV9ESVNDSEFSR0lORyA/IC1lbmVyZ3lS
YXRlIDogZW5lcmd5UmF0ZTsKKyAgICB9CisKKyAgICBnX3B0cl9hcnJheV91bnJlZihkZXZpY2Vz
KTsKKworICAgIGlmICghbnVtT2ZCYXR0ZXJ5RGV2aWNlcykgeworICAgICAgICBtX2NsaWVudC0+
dXBkYXRlQmF0dGVyeVN0YXR1cyhOb3RBdmFpbGFibGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZG91YmxlIGxldmVsID0gMDsKKyAgICBpZiAoY29tYmluZWRFbmVyZ3lDYXBhY2l0
eUZ1bGwgPiAwKQorICAgICAgICBsZXZlbCA9IGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50
IC8gY29tYmluZWRFbmVyZ3lDYXBhY2l0eUZ1bGw7CisKKyAgICBpZiAoY29tYmluZWRFbmVyZ3lS
YXRlID49IDApIHsKKyAgICAgICAgZG91YmxlIGNoYXJnaW5nVGltZSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICAgICAgaWYgKGNvbWJpbmVkRW5lcmd5UmF0
ZSkKKyAgICAgICAgICAgIGNoYXJnaW5nVGltZSA9IDM2MDAgKiAoY29tYmluZWRFbmVyZ3lDYXBh
Y2l0eUZ1bGwgLSBjb21iaW5lZEVuZXJneUNhcGFjaXR5Q3VycmVudCkgLyBjb21iaW5lZEVuZXJn
eVJhdGU7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVCYXR0ZXJ5U3RhdHVzKENoYXJnaW5nLCBj
aGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb3VibGUgZGlzY2hh
cmdpbmdUaW1lID0gMzYwMCAqIGNvbWJpbmVkRW5lcmd5Q2FwYWNpdHlDdXJyZW50IC8gc3RkOjph
YnMoY29tYmluZWRFbmVyZ3lSYXRlKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUJhdHRlcnlT
dGF0dXMoRGlzY2hhcmdpbmcsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOworICAgIH0KK30KKwor
I2VuZGlmIC8vIEVOQUJMRShCQVRURVJZX1NUQVRVUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNjA5
YmI2NWE4YzUyZTg4MTUxOGQ5NWZkZWZmNGM1YzYxODdkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5oCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaAorI2RlZmluZSBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJf
aAorCisjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQorCisjaW5jbHVkZSA8bGlidXBvd2VyLWds
aWIvdXBvd2VyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudDsKKworY2xh
c3MgQmF0dGVyeVByb3ZpZGVyVVBvd2VyIHsKK3B1YmxpYzoKKyAgICBCYXR0ZXJ5UHJvdmlkZXJV
UG93ZXIoQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50Kik7CisKKyAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisgICAgdm9pZCB1cGRhdGVCYXR0
ZXJ5U3RhdHVzKCk7CisKK3ByaXZhdGU6CisgICAgQmF0dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50
KiBtX2NsaWVudDsKKworICAgIEdSZWZQdHI8VXBDbGllbnQ+IG1fdXBvd2VyQ2xpZW50OworCisg
ICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVS
WV9TVEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2Vy
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZmMDU1NWQ2Y2ZkMjJjMWJkNDI3YWIyYjY0MDA2OTBhNTFj
NGVhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0
dGVyeVByb3ZpZGVyVVBvd2VyQ2xpZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEJhdHRlcnlQcm92aWRlclVQb3dlckNs
aWVudF9oCisjZGVmaW5lIEJhdHRlcnlQcm92aWRlclVQb3dlckNsaWVudF9oCisKKyNpZiBFTkFC
TEUoQkFUVEVSWV9TVEFUVVMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBCYXR0ZXJ5
UHJvdmlkZXJVUG93ZXJTdGF0dXMgeworICAgIE5vdEF2YWlsYWJsZSA9IDAsCisgICAgQ2hhcmdp
bmcsCisgICAgRGlzY2hhcmdpbmcsCit9OworCitjbGFzcyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKEJh
dHRlcnlQcm92aWRlclVQb3dlclN0YXR1cywgZG91YmxlIHRpbWVSZW1haW5pbmcgPSAwLCBkb3Vi
bGUgbGV2ZWwgPSAwKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQkFUVEVSWV9T
VEFUVVMpCisKKyNlbmRpZiAvLyBCYXR0ZXJ5UHJvdmlkZXJVUG93ZXJDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQppbmRleCA0ZmY0NjU2NDAwMjM3NGUwZTI5ZDRkMmZjYWQ4ZTY5ZjY0
NWJkZDhmLi43YzcyNzE4MWYwMDEwY2ViYTIxZTc4NDdmMjY0ZTA1ZTJlZWRlOGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpYndlYmtpdGd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9s
YV9MSUJBCiAJJChQTkdfTElCUykgXAogCSQoU1FMSVRFM19MSUJTKSBcCiAJJChVTklDT0RFX0xJ
QlMpIFwKKwkkKFVQT1dFUl9HTElCX0xJQlMpIFwKIAkkKFdFQlBfTElCUykgXAogCSQoWENPTVBP
U0lURV9MSUJTKSBcCiAJJChYREFNQUdFX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXgg
OTMxYzg4N2FkOGM2NWMxN2Q1MWM5MjYyNjdkMzhlNmFhZjI4NTY1YS4uMDgzNjNmZTVlMzQ1ZDA4
MmRiODg1NWVkY2FkODExMjhkMmExNzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTI4MCw2
ICsyODAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoUE5HX0xJQlMpIFwKIAkkKFNR
TElURTNfTElCUykgXAogCSQoVU5JQ09ERV9MSUJTKSBcCisJJChVUE9XRVJfR0xJQl9MSUJTKSBc
CiAJJChXRUJQX0xJQlMpIFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWENPTVBPU0lURV9MSUJT
KSBcCg==
</data>
<flag name="review"
          id="242266"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>