<?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>88916</bug_id>
          
          <creation_ts>2012-06-12 14:20:33 -0700</creation_ts>
          <short_desc>[chromium] Make the deviceScaleFactor dynamically adjustable.</short_desc>
          <delta_ts>2012-06-18 10:46:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>thakis</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647322</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-12 14:20:33 -0700</bug_when>
    <thetext>Make it possible for the embedder to specify the deviceScaleFactor dynamically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647546</commentid>
    <comment_count>1</comment_count>
      <attachid>147203</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-12 18:04:02 -0700</bug_when>
    <thetext>Created attachment 147203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648314</commentid>
    <comment_count>2</comment_count>
      <attachid>147378</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-13 11:52:23 -0700</bug_when>
    <thetext>Created attachment 147378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648320</commentid>
    <comment_count>3</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-13 11:56:20 -0700</bug_when>
    <thetext>thakis@: This version seems to work properly in that it actually changes the displayed size of the webpage.

jamesr@: This is a first cut at implementing the dynamic deviceScaleFactor setting that we talked about last week. Could you take a look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648325</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 12:00:34 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648327</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 12:01:00 -0700</bug_when>
    <thetext>Attachment 147378 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/Platf...&quot; exit_code: 1
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:257:  The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:154:  The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/chromium/public/WebLayerTreeView.h:118:  The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 10 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>648330</commentid>
    <comment_count>6</comment_count>
      <attachid>147378</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-13 12:06:21 -0700</bug_when>
    <thetext>Comment on attachment 147378
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:693
&gt; +    m_deviceViewportSize.scale(m_settings.deviceScaleFactor);

the deviceViewportSize should be scaled from the viewportSize, not from its last deviceViewportSize, right?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:580
&gt; +    m_settings.deviceScaleFactor = newDeviceScaleFactor;

Does it make sense to keep this in CCSettings at all then? This seems like it could default to 1, and be set after initialization instead. I don&apos;t think we use CCSettings for any settings that you can change post-initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648382</commentid>
    <comment_count>7</comment_count>
      <attachid>147378</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-13 12:51:14 -0700</bug_when>
    <thetext>Comment on attachment 147378
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2485
&gt; -void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
&gt; +void WebViewImpl::setDeviceScaleFactor(const float scaleFactor)

We don&apos;t usually mark scalar parameters as const.  Is there a benefit to this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648403</commentid>
    <comment_count>8</comment_count>
      <attachid>147378</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 13:25:02 -0700</bug_when>
    <thetext>Comment on attachment 147378
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:580
&gt;&gt; +    m_settings.deviceScaleFactor = newDeviceScaleFactor;
&gt; 
&gt; Does it make sense to keep this in CCSettings at all then? This seems like it could default to 1, and be set after initialization instead. I don&apos;t think we use CCSettings for any settings that you can change post-initialization.

Indeed - this doesn&apos;t belong on m_settings at all

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2499
&gt; +        m_layerTreeView.setDeviceScaleFactor(scaleFactor);

if the caller calls setDeviceScaleFactor before we initialize m_layerTreeView, are you sure we pass the right value in when initializing it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648549</commentid>
    <comment_count>9</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-06-13 15:59:58 -0700</bug_when>
    <thetext>With this and http://codereview.chromium.org/10548026/ (patch set 9) patched in, switching dpiness on composited pages almost work: The only thing that seems to not get updated is the root layer text resolution. See http://i.imgur.com/kRrpT.png for how poster circle looks after lodpi-&gt;hidpi switch (poster circle itself is sharp; text isn&apos;t)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648568</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-13 16:16:46 -0700</bug_when>
    <thetext>Perhaps we need to update the viewport in WebViewImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648596</commentid>
    <comment_count>11</comment_count>
      <attachid>147378</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 17:01:28 -0700</bug_when>
    <thetext>Comment on attachment 147378
Patch

Take deviceScale out of settings and I think this is good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648597</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 17:02:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; With this and http://codereview.chromium.org/10548026/ (patch set 9) patched in, switching dpiness on composited pages almost work: The only thing that seems to not get updated is the root layer text resolution. See http://i.imgur.com/kRrpT.png for how poster circle looks after lodpi-&gt;hidpi switch (poster circle itself is sharp; text isn&apos;t)

Could you open a new bug about this problem in particular?  The root layer is special in a few ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648604</commentid>
    <comment_count>13</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-06-13 17:11:07 -0700</bug_when>
    <thetext>My problem goes away with the following change on top of this bug&apos;s patch. Maybe this makes sense to someone on this bug. (Given the assert 2 lines above, something is wrong; chances are it&apos;s that assert?)

diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp
index 3c558ea..8079780 100644
--- a/Source/WebKit/chromium/src/WebViewImpl.cpp
+++ b/Source/WebKit/chromium/src/WebViewImpl.cpp
@@ -2485,6 +2485,7 @@ void WebViewImpl::setDeviceScaleFactor(const float scaleFactor)
         // needs to match the one in the compositor.
         ASSERT(scaleFactor == m_deviceScaleInCompositor);
     }
+    m_deviceScaleInCompositor = scaleFactor;
     if (!m_layerTreeView.isNull())
         m_layerTreeView.setDeviceScaleFactor(scaleFactor);
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648607</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-13 17:14:13 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; My problem goes away with the following change on top of this bug&apos;s patch. Maybe this makes sense to someone on this bug. (Given the assert 2 lines above, something is wrong; chances are it&apos;s that assert?)
&gt; 
&gt; diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp
&gt; index 3c558ea..8079780 100644
&gt; --- a/Source/WebKit/chromium/src/WebViewImpl.cpp
&gt; +++ b/Source/WebKit/chromium/src/WebViewImpl.cpp
&gt; @@ -2485,6 +2485,7 @@ void WebViewImpl::setDeviceScaleFactor(const float scaleFactor)
&gt;          // needs to match the one in the compositor.
&gt;          ASSERT(scaleFactor == m_deviceScaleInCompositor);
&gt;      }
&gt; +    m_deviceScaleInCompositor = scaleFactor;
&gt;      if (!m_layerTreeView.isNull())
&gt;          m_layerTreeView.setDeviceScaleFactor(scaleFactor);
&gt;  }

Yeh, that value should be == to what the layerTreeView is using as its scale factor. So it should be set inside the if() instead.

That said. Nothing should be passed to the compositor at all if WebSettings::applyDeviceScaleFactorInCompositor isn&apos;t true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649695</commentid>
    <comment_count>15</comment_count>
      <attachid>147378</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-14 18:02:44 -0700</bug_when>
    <thetext>Comment on attachment 147378
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:118
&gt;&gt; +    WEBKIT_EXPORT void setDeviceScaleFactor(const float deviceScaleFactor);
&gt; 
&gt; The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

done, next patch.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:693
&gt;&gt; +    m_deviceViewportSize.scale(m_settings.deviceScaleFactor);
&gt; 
&gt; the deviceViewportSize should be scaled from the viewportSize, not from its last deviceViewportSize, right?

Good catch. I think so. done, next patch.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:257
&gt;&gt; +    void setDeviceScaleFactor(const float deviceScaleFactor);
&gt; 
&gt; The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

done, next patch

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:580
&gt;&gt;&gt; +    m_settings.deviceScaleFactor = newDeviceScaleFactor;
&gt;&gt; 
&gt;&gt; Does it make sense to keep this in CCSettings at all then? This seems like it could default to 1, and be set after initialization instead. I don&apos;t think we use CCSettings for any settings that you can change post-initialization.
&gt; 
&gt; Indeed - this doesn&apos;t belong on m_settings at all

Done, next patch.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:154
&gt;&gt; +    void setDeviceScaleFactor(const float deviceScaleFactor);
&gt; 
&gt; The parameter name &quot;deviceScaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

done, next patch

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2485
&gt;&gt; +void WebViewImpl::setDeviceScaleFactor(const float scaleFactor)
&gt; 
&gt; We don&apos;t usually mark scalar parameters as const.  Is there a benefit to this change?

This was an oversight. Corrected, next patch.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2499
&gt;&gt; +        m_layerTreeView.setDeviceScaleFactor(scaleFactor);
&gt; 
&gt; if the caller calls setDeviceScaleFactor before we initialize m_layerTreeView, are you sure we pass the right value in when initializing it?

Thanks for catching this. Fixed, next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649697</commentid>
    <comment_count>16</comment_count>
      <attachid>147694</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-14 18:09:20 -0700</bug_when>
    <thetext>Created attachment 147694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649781</commentid>
    <comment_count>17</comment_count>
      <attachid>147694</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-14 19:33:49 -0700</bug_when>
    <thetext>Comment on attachment 147694
Patch

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

R=me, few nits to clean up (mostly unnecessary consts on scalar parameters).

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:116
&gt; +    WEBKIT_EXPORT void setDeviceScaleFactor(const float);

no const

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:689
&gt; +void CCLayerTreeHost::setDeviceScaleFactor(const float deviceScaleFactor)

no const

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:254
&gt; +    // Dynamic setting of the deviceScaleFactor.

This comment&apos;s kind of silly, what does it tell the reader that they wouldn&apos;t already know? I would just remove it.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:255
&gt; +    void setDeviceScaleFactor(const float);

no const on a scalar parameter - it&apos;s passed by value anyway

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:577
&gt; +void CCLayerTreeHostImpl::setDeviceScaleFactor(const float newDeviceScaleFactor)

no const

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:154
&gt; +    void setDeviceScaleFactor(const float);

no const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649803</commentid>
    <comment_count>18</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-06-14 20:12:00 -0700</bug_when>
    <thetext>I patched the new patch in. Poster circle resizes better with it, but as said above the base layer isn&apos;t resized correctly. Something like this fixes it (on top of your patch):

diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp
index 62258e7..a41aa6e 100644
--- a/Source/WebKit/chromium/src/WebViewImpl.cpp
+++ b/Source/WebKit/chromium/src/WebViewImpl.cpp
@@ -2480,14 +2480,16 @@ void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
 
     page()-&gt;setDeviceScaleFactor(scaleFactor);
 
+    if (!m_layerTreeView.isNull()) {
+        m_deviceScaleInCompositor = scaleFactor;
+        m_layerTreeView.setDeviceScaleFactor(scaleFactor);
+    }
     if (m_deviceScaleInCompositor != 1) {
         // Don&apos;t allow page scaling when compositor scaling is being used,
         // as they are currently incompatible. This means the deviceScale
         // needs to match the one in the compositor.
         ASSERT(scaleFactor == m_deviceScaleInCompositor);
     }
-    if (!m_layerTreeView.isNull())
-        m_layerTreeView.setDeviceScaleFactor(scaleFactor);
 }
 
 bool WebViewImpl::isFixedLayoutModeEnabled() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650184</commentid>
    <comment_count>19</comment_count>
      <attachid>147694</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-15 07:56:25 -0700</bug_when>
    <thetext>Comment on attachment 147694
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2499
&gt; +    if (!m_layerTreeView.isNull())
&gt; +        m_layerTreeView.setDeviceScaleFactor(scaleFactor);

This should only be done if m_webSettings-&gt;applyDefaultDeviceScaleFactorInCompositor() is true. And m_deviceScaleInCompositor needs to be set accordingly, as Nico pointed out. It should basically mimic the code in setIsAcceleratedCompositingActive().

if (applyInCompositor &amp;&amp; !ltv.isNull) {
  m_deviceScaleInCompositor = scale;
  m_layerTreeView.setDeviceScaleFactor(m_deviceScaleInCompositor);
}

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3504
&gt;              m_deviceScaleInCompositor = page()-&gt;deviceScaleFactor();

Can this live beside the call to m_layerTreeView.setDeviceScaleFactor() to make their association more clear? This if-block would move with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650258</commentid>
    <comment_count>20</comment_count>
      <attachid>147694</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 09:37:12 -0700</bug_when>
    <thetext>Comment on attachment 147694
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:116
&gt;&gt; +    WEBKIT_EXPORT void setDeviceScaleFactor(const float);
&gt; 
&gt; no const

done, p4

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:689
&gt;&gt; +void CCLayerTreeHost::setDeviceScaleFactor(const float deviceScaleFactor)
&gt; 
&gt; no const

done, p4

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:254
&gt;&gt; +    // Dynamic setting of the deviceScaleFactor.
&gt; 
&gt; This comment&apos;s kind of silly, what does it tell the reader that they wouldn&apos;t already know? I would just remove it.

removed, p4

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:255
&gt;&gt; +    void setDeviceScaleFactor(const float);
&gt; 
&gt; no const on a scalar parameter - it&apos;s passed by value anyway

done, p4

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:577
&gt;&gt; +void CCLayerTreeHostImpl::setDeviceScaleFactor(const float newDeviceScaleFactor)
&gt; 
&gt; no const

done, p4

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:154
&gt;&gt; +    void setDeviceScaleFactor(const float);
&gt; 
&gt; no const

done, p4

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2499
&gt;&gt; +        m_layerTreeView.setDeviceScaleFactor(scaleFactor);
&gt; 
&gt; This should only be done if m_webSettings-&gt;applyDefaultDeviceScaleFactorInCompositor() is true. And m_deviceScaleInCompositor needs to be set accordingly, as Nico pointed out. It should basically mimic the code in setIsAcceleratedCompositingActive().
&gt; 
&gt; if (applyInCompositor &amp;&amp; !ltv.isNull) {
&gt;   m_deviceScaleInCompositor = scale;
&gt;   m_layerTreeView.setDeviceScaleFactor(m_deviceScaleInCompositor);
&gt; }

fixed, p4

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3504
&gt;&gt;              m_deviceScaleInCompositor = page()-&gt;deviceScaleFactor();
&gt; 
&gt; Can this live beside the call to m_layerTreeView.setDeviceScaleFactor() to make their association more clear? This if-block would move with it.

adjusted, p4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650393</commentid>
    <comment_count>21</comment_count>
      <attachid>147872</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 12:20:05 -0700</bug_when>
    <thetext>Created attachment 147872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650420</commentid>
    <comment_count>22</comment_count>
      <attachid>147872</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-15 12:52:51 -0700</bug_when>
    <thetext>Comment on attachment 147872
Patch

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

Thanks for the changes, some nits for consistency, but overall this LGTM.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:579
&gt; +    if (newDeviceScaleFactor == deviceScaleFactor())

nit: m_deviceScaleFactor?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:583
&gt; +    m_deviceViewportSize = viewportSize();

nit: m_viewportSize?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3509
&gt; +                setDeviceScaleFactor(m_deviceScaleInCompositor);

This is basically setDeviceScaleFactor(deviceScaleFactor()). You can just remove this call here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650443</commentid>
    <comment_count>23</comment_count>
      <attachid>147872</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 13:06:42 -0700</bug_when>
    <thetext>Comment on attachment 147872
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:579
&gt;&gt; +    if (newDeviceScaleFactor == deviceScaleFactor())
&gt; 
&gt; nit: m_deviceScaleFactor?

Is this really a good idea? It reduces the possible future benefit of having accessors.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3509
&gt;&gt; +                setDeviceScaleFactor(m_deviceScaleInCompositor);
&gt; 
&gt; This is basically setDeviceScaleFactor(deviceScaleFactor()). You can just remove this call here.

done, p5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650445</commentid>
    <comment_count>24</comment_count>
      <attachid>147872</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-15 13:08:43 -0700</bug_when>
    <thetext>Comment on attachment 147872
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:579
&gt;&gt;&gt; +    if (newDeviceScaleFactor == deviceScaleFactor())
&gt;&gt; 
&gt;&gt; nit: m_deviceScaleFactor?
&gt; 
&gt; Is this really a good idea? It reduces the possible future benefit of having accessors.

I&apos;m not sure I&apos;m just going on what I&apos;ve seen, as we do this everywhere else (and you did as well in CCLTH).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650446</commentid>
    <comment_count>25</comment_count>
      <attachid>147884</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-06-15 13:09:39 -0700</bug_when>
    <thetext>Created attachment 147884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650670</commentid>
    <comment_count>26</comment_count>
      <attachid>147884</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-15 18:18:25 -0700</bug_when>
    <thetext>Comment on attachment 147884
Patch

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

R=me

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:579
&gt; +void CCLayerTreeHostImpl::setDeviceScaleFactor(float newDeviceScaleFactor)
&gt; +{
&gt; +    if (newDeviceScaleFactor == deviceScaleFactor())

IMO this is bad style - what you had in CCLayerTreeHost::setDeviceScaleFactor() is better. using the member var directly makes it much clearer what is going on to readers and avoids having the ugly &quot;new&quot; prefix on a variable name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650935</commentid>
    <comment_count>27</comment_count>
      <attachid>147884</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-06-16 20:22:40 -0700</bug_when>
    <thetext>Comment on attachment 147884
Patch

I patched this in and it seems to work great (on OS X). Let&apos;s land this, so that there&apos;s enough time for a follow-up before the branch should there be issues on CrOs (will check that monday morning).

Thanks, Rob!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650944</commentid>
    <comment_count>28</comment_count>
      <attachid>147884</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 20:55:53 -0700</bug_when>
    <thetext>Comment on attachment 147884
Patch

Clearing flags on attachment: 147884

Committed r120544: &lt;http://trac.webkit.org/changeset/120544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650945</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 20:56:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651531</commentid>
    <comment_count>30</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-06-18 10:46:29 -0700</bug_when>
    <thetext>Just checked: This seems to work in ash too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147203</attachid>
            <date>2012-06-12 18:04:02 -0700</date>
            <delta_ts>2012-06-13 11:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88916-20120612210401.patch</filename>
            <type>text/plain</type>
            <size>8749</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi4yMTY1ODZhMGVjODU4YzkxNTJjOTI5YjY2NDlh
YmZjZDMwN2NhNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNi0xMiAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gUG9ydCBEcmF3aW5nQnVmZmVyQ2hyb21pdW0gZnJvbSBUZXh0dXJl
TGF5ZXJDaHJvbWl1bSBvdmVyIHRvIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNGViZDc2YTBhYTI1ZjYyNTU5YTZmYWJmMGQyNGZhMjIyMTc1ZDgyMy4uOTA1NzNhYjljMGI3
YTEwZjY2M2ZiZGY4MGQ0NTBhMGJiMDZjMzkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA2LTEyICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmljZVNjYWxlRmFjdG9yIGR5bmFtaWNhbGx5
IGFkanVzdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3Rvcik6CisKIDIwMTItMDYtMTIgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBm
dW5jdGlvbnM6IHNldE5hbWUoKSBhbmQgZm9ybUNvbnRyb2xOYW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggOWFiM2NmMWNiNzgyODNjZTU3N2MwM2Q1MzkwZGU4NjU5ZmZmNDQ5YS4u
MGUzYmYzMDBmNzczMmE5MmM5MjhjZWFkMWEyMWQ3NzUwMGVmYmU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0xMiAgUm9iZXJ0IEtyb2VnZXIg
IDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHRoZSBk
ZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisKIDIw
MTItMDYtMTEgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
bW92ZSB1bnVzZWQgbWVtYmVyIHZhcmlhYmxlcyBmb3VuZCBieSBjbGFuZydzIC1XdW51c2VkLXBy
aXZhdGUtZmllbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgKaW5kZXggNDY3ZjY1Y2Q1NWQ3YTllYjgzMTE3YzQwZjljYjgyMGNhMzk4
MDI3NS4uZDA3ZTFmN2FmN2VmNTY3Y2NiYWM0YTVmMWIxZWQxNjEwZTIyYzc4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysr
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAg
LTExNSw2ICsxMTUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdw
b3J0U2l6ZShjb25zdCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdw
b3J0U2l6ZSgpIGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERldmljZVNjYWxl
RmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisKICAgICAvLyBTZXRzIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIGZvciB0aGUgdmlld3BvcnQuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGY0ZjQ4MmJlYTY3Yzc2YjZiZTE1MDQ1ZTE3ZmUxZjk2MTc4N2JmNjEuLjIwYmJh
YTRkZmE0NmNhZTMzNWIxODI0OGIxMDU3NTRlMDY5OTlhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtNjg0LDYgKzY4NCwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cgogICAgIG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdC5hcHBlbmQodGV4dHVyZSk7CiB9
CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rvcihjb25zdCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcikKK3sKKyAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPT0gIG1f
c2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NldHRp
bmdzLmRldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7CisgICAgbV9kZXZpY2VW
aWV3cG9ydFNpemUuc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMo
ZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IDNjM2FlMDNmNjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIu
LjFkNmNjN2UzMmFiNjcyNmQ3NzVmYjAzMWQzMmU0NWJmNTk1ODJlOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCkBAIC0yNTMsNiArMjUzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHJl
cXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpOwogICAgIHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVy
Q29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAorICAgIC8vIER5bmFtaWMgc2V0
dGluZyBvZiB0aGUgZGV2aWNlU2NhbGVGYWN0b3IuCisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZh
Y3Rvcihjb25zdCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yOyB9
CisKIHByb3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50
KiwgY29uc3QgQ0NTZXR0aW5ncyYpOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA0NDFmYTBhN2FkNTIzNGVmOGM1N2Zk
NTlmNDA1MzBmMTgwNzY3NGM3Li41NjQ5YzhhZWFjNjdiMjQ1MTIzMzViYWNkZTEwZjIwNTRlODk0
ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNTczLDYg
KzU3MywyNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3Bv
cnRDaGFuZ2VkKCk7CiB9CiAKKyNpZiAwCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldERl
dmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIGlm
IChkZXZpY2VTY2FsZUZhY3RvciA9PSBtX2RldmljZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2RldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7CisKKyAg
ICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKKyAgICBtX2RldmljZVZpZXdw
b3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHVwZGF0
ZU1heFNjcm9sbFBvc2l0aW9uKCk7CisKKyAgICBpZiAobV9sYXllclJlbmRlcmVyKQorICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOworfQorI2VuZGlmCisKKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkKIHsKICAg
ICBpZiAoIXBhZ2VTY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlldy5jcHAKaW5kZXggZmVkM2RiOTc1OTg1Yzc4YzM2MjkxMjg3ODhhYzY0MWFmMDEz
N2Y4MC4uZTgzMGY0NmM4MjE1MTc1YjdmYTdlMDAyOWUyZDc3YWQzNDZiY2JiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTEwMiw2
ICsxMDIsMTYgQEAgV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25z
dAogICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9y
dFNpemUoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IoY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9wcml2YXRlLT5sYXll
clRyZWVIb3N0KCktPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKK30K
KworZmxvYXQgV2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29s
b3IgY29sb3IpCiB7CiAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldEJhY2tncm91
bmRDb2xvcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggYTQ0MDk3YmE0Yjg3YTkyN2ZjODMwMjg5Y2JhNGY4ZmU5YmQ3NzZiMC4uYTBmNThl
ZTkwOWIyZDBiZGQ4YjgxZjg1NjRmNWNkOTUwNzQxOTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTA5NSw2ICsxMDk1LDE4IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmtleUV2ZW50RGVmYXVsdChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkK
ICAgICAgICAgICAgIGludCBrZXlDb2RlID0gKChldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2
ZW50OjpTaGlmdEtleSkgPyBWS0VZX1BSSU9SIDogVktFWV9ORVhUKTsKICAgICAgICAgICAgIHJl
dHVybiBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGtleUNvZGUsIGV2ZW50Lm1vZGlmaWVycyk7CiAg
ICAgICAgIH0KKworCS8vIERlYnVnZ2luZyBjb2RlIHRvIGNvbmZpcm0gZnVuY3Rpb24uCisJZnBy
aW50ZihzdGRlcnIsICJldmVudC53aW5kb3dzS2V5Q29kZSAlZFxuIiwgZXZlbnQud2luZG93c0tl
eUNvZGUpOworICAgICAgICAgaWYgKGV2ZW50LndpbmRvd3NLZXlDb2RlID09IDQzKSB7ICAvLyAr
CisgICAgICAgICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IoKSA9PSAxKSB7CisgICAgICAgICAg
ICAgIHNldERldmljZVNjYWxlRmFjdG9yKDIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgc2V0RGV2aWNlU2NhbGVGYWN0b3IoMSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICB9CisKKwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlJhd0tleURv
d246CiAgICAgICAgIGlmIChldmVudC5tb2RpZmllcnMgPT0gV2ViSW5wdXRFdmVudDo6Q29udHJv
bEtleSkgewpAQCAtMjQ2OCw3ICsyNDgwLDcgQEAgZmxvYXQgV2ViVmlld0ltcGw6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2Fs
ZUZhY3RvcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKGNvbnN0IGZs
b2F0IHNjYWxlRmFjdG9yKQogewogICAgIGlmICghcGFnZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0yNDgxLDYgKzI0OTMsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgICAgIC8vIG5lZWRzIHRvIG1hdGNoIHRoZSBvbmUg
aW4gdGhlIGNvbXBvc2l0b3IuCiAgICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciA9PSBtX2Rldmlj
ZVNjYWxlSW5Db21wb3NpdG9yKTsKICAgICB9CisgICAgZnByaW50ZihzdGRlcnIsICJiZWZvcmUg
bmV3XG4iKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3LnNldERldmljZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgImFmdGVyIG5ld1xuIik7CiB9CiAKIGJvb2wgV2ViVmlld0ltcGw6OmlzRml4
ZWRMYXlvdXRNb2RlRW5hYmxlZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147378</attachid>
            <date>2012-06-13 11:52:23 -0700</date>
            <delta_ts>2012-06-14 18:09:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88916-20120613145222.patch</filename>
            <type>text/plain</type>
            <size>9466</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5lMzViMTdmNmQyNmUwZWJkMzdmNWEwOWMxNzRk
YjU3Yzg4ZjRkM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0xMiAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6IFBsdW1iIHNldERldmljZVNjYWxlRmFjdG9yIGFu
ZCBkZXZpY2VTY2FsZUZhY3RvcgorICAgICAgICB0aHJvdWdoIHRoZSBXZWIgbGF5ZXIuCisgICAg
ICAgIChXZWJMYXllclRyZWVWaWV3KToKKwogMjAxMi0wNi0xMSAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUG9ydCBEcmF3aW5nQnVm
ZmVyQ2hyb21pdW0gZnJvbSBUZXh0dXJlTGF5ZXJDaHJvbWl1bSBvdmVyIHRvIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGViZDc2YTBhYTI1ZjYyNTU5YTZmYWJmMGQyNGZh
MjIyMTc1ZDgyMy4uMTA1MzViYjcwYjcwNTE5ODAwMmI1MTZiZGYzYjc0NDA2MWU5Njg1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTEyICBSb2JlcnQgS3JvZWdlciAgPHJq
a3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmlj
ZVNjYWxlRmFjdG9yIGR5bmFtaWNhbGx5IGFkanVzdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkxNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKTogcHVzaCB0aGUgZGV2aWNlU2NhbGVGYWN0b3Ig
dG8gdGhlCisgICAgICAgIGNvbXBvc2l0b3IgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6IGFkZGVkIG1ldGhvZCB0byBzZXQg
dGhlIGRldmljZVNjYWxlRmFjdG9yLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChD
Q0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZXZp
Y2VTY2FsZUZhY3Rvcik6CisKIDIwMTItMDYtMTIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbnM6IHNldE5hbWUo
KSBhbmQgZm9ybUNvbnRyb2xOYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWFi
M2NmMWNiNzgyODNjZTU3N2MwM2Q1MzkwZGU4NjU5ZmZmNDQ5YS4uY2I2NTY2OTkwYmM2MTliMjg3
MDA2ZDE5OGM3NzUzNTkxN2ZjYWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0wNi0xMiAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBk
eW5hbWljYWxseSBhZGp1c3RhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDogUGx1bWIgZGV2aWNlU2Nh
bGVGYWN0b3IgdGhyb3VnaCB0aGUgV2ViIGxheWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3OjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldERldmljZVNjYWxlRmFjdG9yKToKKwogMjAxMi0wNi0xMSAgTmljbyBXZWJlciAgPHRoYWtp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBtZW1iZXIgdmFyaWFibGVz
IGZvdW5kIGJ5IGNsYW5nJ3MgLVd1bnVzZWQtcHJpdmF0ZS1maWVsZApkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA0NjdmNjVj
ZDU1ZDdhOWViODMxMTdjNDBmOWNiODIwY2EzOTgwMjc1Li5kMDdlMWY3YWY3ZWY1NjdjY2JhYzRh
NWYxYjFlZDE2MTBlMjJjNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmKTsKICAg
ICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgdmlld3BvcnRTaXplKCkgY29uc3Q7CiAKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpOworICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdDsKKwogICAgIC8vIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB2aWV3cG9y
dC4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjRmNDgyYmVhNjdjNzZiNmJl
MTUwNDVlMTdmZTFmOTYxNzg3YmY2MS4uZTA1MDlkNDZiZGM2ODY0NGNiYmY2YmI5Y2Q3OTQwYTQy
ZGNmYjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNTEsNiArMjUx
LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFt
ZU51bWJlcihmcmFtZU51bWJlcigpKTsKICAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHZp
ZXdwb3J0U2l6ZSgpKTsKKyAgICBob3N0SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CiAgICAgaG9zdEltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0
cyhtX3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVGYWN0b3IsIG1fbWF4UGFnZVNjYWxl
RmFjdG9yKTsKICAgICBob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENv
bG9yKTsKICAgICBob3N0SW1wbC0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKG1faGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKTsKQEAgLTY4NCw2ICs2ODUsMTUgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmRlbGV0ZVRleHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiB0ZXh0dXIKICAgICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuYXBwZW5kKHRleHR1
cmUpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoY29u
c3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgaWYgKGRldmljZVNjYWxlRmFjdG9y
ID09ICBtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm47CisgICAg
bV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yOworICAgIG1f
ZGV2aWNlVmlld3BvcnRTaXplLnNjYWxlKG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRl
TGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewogICAgIGlmICghbV9zZXR0aW5ncy50aHJl
YWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCAzYzNhZTAzZjY2YzhlZjQ1N2E4MzFjZTYyZGMxZDg0ZmNm
YzM0MWUyLi4xZDZjYzdlMzJhYjY3MjZkNzc1ZmIwMzFkMzJlNDViZjU5NTgyZTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjUzLDYgKzI1MywxMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKTsKICAgICB2b2lkIGRlbGV0ZVRleHR1
cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKKyAgICAvLyBEeW5h
bWljIHNldHRpbmcgb2YgdGhlIGRldmljZVNjYWxlRmFjdG9yLgorICAgIHZvaWQgc2V0RGV2aWNl
U2NhbGVGYWN0b3IoY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZh
Y3RvcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9z
dENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDQxZmEwYTdhZDUyMzRl
ZjhjNTdmZDU5ZjQwNTMwZjE4MDc2NzRjNy4uMTkzMDM5YWM3MmJiMWJkYmM0M2U3NjA4YzZkOGU1
MmQzMDY0OGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAg
LTU3Myw2ICs1NzMsMjAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9ydFNp
emUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgICAgICBtX2xheWVyUmVuZGVyZXIt
PnZpZXdwb3J0Q2hhbmdlZCgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldERl
dmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IG5ld0RldmljZVNjYWxlRmFjdG9yKQoreworICAg
IGlmIChuZXdEZXZpY2VTY2FsZUZhY3RvciA9PSBkZXZpY2VTY2FsZUZhY3RvcigpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3RvciA9IG5ld0RldmljZVNj
YWxlRmFjdG9yOworCisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemUoKTsK
KyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFj
dG9yKTsKKyAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOworICAgIGlmIChtX2xheWVyUmVu
ZGVyZXIpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7Cit9CisK
Kwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
ZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkK
IHsKICAgICBpZiAoIXBhZ2VTY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCAwOTVjMGU1YjM5MzI0MWE2OTVjNTE0MDUwZjQwZGJmODNlODNiMDkxLi5kOWNmZGFi
NzE5NTdlNTg1MmQ5ODNlOGYwODRjYmZlZTViZDM1YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCkBAIC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAg
ICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOwogCisgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmRldmljZVNjYWxlRmFj
dG9yOyB9CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3Rvcihjb25zdCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3Rvcik7CisKICAgICBmbG9hdCBwYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VTY2FsZTsgfQogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBh
Z2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGZl
ZDNkYjk3NTk4NWM3OGMzNjI5MTI4Nzg4YWM2NDFhZjAxMzdmODAuLmU4MzBmNDZjODIxNTE3NWI3
ZmE3ZTAwMjllMmQ3N2FkMzQ2YmNiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0xMDIsNiArMTAyLDE2IEBAIFdlYlNpemUgV2Vi
TGF5ZXJUcmVlVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QKICAgICByZXR1cm4gV2ViU2l6ZSht
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+dmlld3BvcnRTaXplKCkpOwogfQogCit2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OnNldERldmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKQoreworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7Cit9CisKK2Zsb2F0IFdlYkxheWVyVHJlZVZp
ZXc6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5s
YXllclRyZWVIb3N0KCktPmRldmljZVNjYWxlRmFjdG9yKCk7Cit9CisKIHZvaWQgV2ViTGF5ZXJU
cmVlVmlldzo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQogewogICAgIG1fcHJp
dmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDU5M2QyZDMxOTk4NmQ1
ZWM3NDE2YjZmMTk4ZmVhOGRmYTExMWFmZTguLjhhN2EwOGI3NWVlNzhmYTFhNmFhMjg1YWFlZDNi
M2QyMzkwZmYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKQEAgLTI0ODIsNyArMjQ4Miw3IEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpkZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIH0K
IAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0
b3IpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcihjb25zdCBmbG9hdCBz
Y2FsZUZhY3RvcikKIHsKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ5
NSw2ICsyNDk1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IpCiAgICAgICAgIC8vIG5lZWRzIHRvIG1hdGNoIHRoZSBvbmUgaW4gdGhl
IGNvbXBvc2l0b3IuCiAgICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciA9PSBtX2RldmljZVNjYWxl
SW5Db21wb3NpdG9yKTsKICAgICB9CisgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkp
CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXREZXZpY2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rv
cik7CiB9CiAKIGJvb2wgV2ViVmlld0ltcGw6OmlzRml4ZWRMYXlvdXRNb2RlRW5hYmxlZCgpIGNv
bnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147694</attachid>
            <date>2012-06-14 18:09:20 -0700</date>
            <delta_ts>2012-06-15 12:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88916-20120614210920.patch</filename>
            <type>text/plain</type>
            <size>19928</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5kYjBkYzY4ODc0ZmVmYzhlMzIzMzRiYjA5YmQ3
OWYwNzJkY2I0ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0xMiAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6IFBsdW1iIHNldERldmljZVNjYWxlRmFjdG9yIGFu
ZAorICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmdW5jdGlvbnMuCisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6IFJlbW92ZSBkZXZpY2VTY2Fs
ZUZhY3RvciBmcm9tCisgICAgICAgIHNldHRpbmdzIGFzIGl0IGlzIG5vdyBkeW5hbWljLgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDYt
MTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVyQ2hyb21p
dW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlYmQ3NmEw
YWEyNWY2MjU1OWE2ZmFiZjBkMjRmYTIyMjE3NWQ4MjMuLjZjMDljZjBhNmMzZjRhODExYTc2YmZl
NWY3NWFiZDQ2ZGNkYTQyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wNi0x
NCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6IFJlbW92ZWQgdXNl
IG9mIHN0YXRpYworICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmcm9tIHNldHRpbmdzIHdpdGgg
ZHlhbm1pYyBtX2RldmljZVNjYWxlRmFjdG9yCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnNldERldmljZVNjYWxlRmFjdG9yKTogQWRkZWQgZnVuY3Rpb24gdG8KKyAgICAgICAgc2V0IGRl
dmljZVNjYWxlRmFjdG9yLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKTogUmVtb3ZlZCBzdGF0aWMgZGV2aWNlU2NhbGVGYWN0
b3IKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KTogQWRk
ZWQgZHluYW1pYyBtX2RldmljZVNjYWxlRmFjdG9yIGluIGl0cyBwbGFjZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOiBTYW1l
IGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXll
clRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6IEFkZGVkIGZ1bmN0aW9uIHRv
CisgICAgICAgIHNldCBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9v
bURlbHRhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOiBBZGRlZCBkeW5hbWljCisgICAgICAgIG1fZGV2aWNlU2NhbGVGYWN0
b3IgaW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KwogMjAxMi0wNi0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uczogc2V0TmFtZSgpIGFuZCBmb3JtQ29udHJv
bE5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YWIzY2YxY2I3ODI4M2NlNTc3
YzAzZDUzOTBkZTg2NTlmZmY0NDlhLi41ZmM4Y2MwZWZiMzU0N2YxNjQ4ODY0NTI4MWI0MjE5NTJk
M2JmMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEy
LTA2LTE0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmljZVNjYWxlRmFjdG9yIGR5bmFtaWNhbGx5IGFkanVz
dGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6IFJlbW92ZWQgdW51c2VkCisgICAg
ICAgIHN0YXRpYyBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXREZXZpY2VTY2FsZUZhY3Rvcik6IFB1c2ggdGhlIGR5bmFtaWMgZGV2aWNlU2NhbGVGYWN0b3IK
KyAgICAgICAgdG8gdGhlIGNvbXBvc2l0b3IgYXMgcmVxdWlyZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOiBUZXN0cyB1c2UgZHluYW1pYyBzZXRE
ZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdERldmlj
ZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXllcnM6OkNDTGF5ZXJUcmVlSG9zdFRlc3RE
ZXZpY2VTY2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdERldmljZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXll
cnM6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3REZXZpY2VT
Y2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQpOgorCiAyMDEyLTA2LTExICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIG1lbWJlciB2YXJpYWJsZXMgZm91bmQgYnkgY2xhbmcncyAt
V3VudXNlZC1wcml2YXRlLWZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDQ2N2Y2NWNkNTVkN2E5ZWI4MzExN2M0MGY5
Y2I4MjBjYTM5ODAyNzUuLjdiM2IzMDQwZDc0ZDllY2E3YTU0OWMwYWEzYmIxNTk4NDNmMmFlMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgdGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUoV2Vi
U2l6ZSgyNTYsIDI1NikpCiAgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllclNpemUoV2ViU2l6
ZSg1MTIsIDUxMikpCi0gICAgICAgICAgICAsIGRldmljZVNjYWxlRmFjdG9yKDEpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCB0
aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXpl
OwogICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7Ci0gICAgICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yOwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVy
YXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTExNSw2ICsxMTMs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgpIGNv
bnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGNvbnN0
IGZsb2F0KTsKKyAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3Q7CisKICAgICAvLyBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdmlld3BvcnQu
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY0ZjQ4MmJlYTY3Yzc2YjZiZTE1
MDQ1ZTE3ZmUxZjk2MTc4N2JmNjEuLjJiMzdjOWE5NjMxYjFlZTMzMDVmZmJkYzM4ZGU0MTUzOGVk
YzAxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNzgsNiArNzgsNyBA
QCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9udW1UaW1lc1JlY3JlYXRlU2hvdWxk
RmFpbCgwKQogICAgICwgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDApCiAgICAgLCBtX3Nl
dHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92
aXNpYmxlKHRydWUpCiAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25CeXRlcygwKQogICAgICwgbV9t
ZW1vcnlBbGxvY2F0aW9uSXNGb3JEaXNwbGF5KGZhbHNlKQpAQCAtMjUxLDYgKzI1Miw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaG9zdEltcGwpCiAKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIo
ZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNp
emUoKSk7CisgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdl
U2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7
CiAgICAgaG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7CiAg
ICAgaG9zdEltcGwtPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChtX2hhc1RyYW5zcGFyZW50
QmFja2dyb3VuZCk7CkBAIC0zODUsNyArMzg3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgbV92aWV3cG9y
dFNpemUgPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdw
b3J0U2l6ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmlj
ZVNjYWxlRmFjdG9yKTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNj
YWxlRmFjdG9yKTsKIAogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC01MTksNyArNTIxLDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwogICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICAgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07Ci0gICAgICAgIGRldmljZVNjYWxl
VHJhbnNmb3JtLnNjYWxlKG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBk
ZXZpY2VTY2FsZVRyYW5zZm9ybS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtcyhyb290TGF5ZXIs
IHJvb3RMYXllciwgZGV2aWNlU2NhbGVUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCB1cGRhdGVM
aXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29y
UmVjdChGbG9hdFBvaW50KDAsIDApLCB2aWV3cG9ydFNpemUoKSk7CkBAIC02ODQsNiArNjg2LDE3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAgICAgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21t
aXRMaXN0LmFwcGVuZCh0ZXh0dXJlKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldERl
dmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIGlm
IChkZXZpY2VTY2FsZUZhY3RvciA9PSAgbV9kZXZpY2VTY2FsZUZhY3RvcikKKyAgICAgICAgcmV0
dXJuOworICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKKworICAg
IG1fZGV2aWNlVmlld3BvcnRTaXplID0gbV92aWV3cG9ydFNpemU7CisgICAgbV9kZXZpY2VWaWV3
cG9ydFNpemUuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2V0TmVlZHNDb21taXQo
KTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90
b25pY1RpbWUpCiB7CiAgICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxl
ZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IDNjM2FlMDNmNjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIuLjQ0NzZmN2IxYjYw
ZGI4YzVkNmE0ZWZmZTVmMmEzY2JjOTZjYmRlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCkBAIC05MCw3ICs5MCw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwg
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpCiAgICAgICAgICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKICAg
ICAgICAgICAgICwgbWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKDUxMiwgNTEyKSkKLSAgICAg
ICAgICAgICwgZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICB7IH0KIAogICAgIGJvb2wgYWNjZWxl
cmF0ZVBhaW50aW5nOwpAQCAtMTA3LDcgKzEwNiw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAg
ICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOwogICAgIEludFNpemUgZGVmYXVsdFRp
bGVTaXplOwogICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKLSAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcjsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwn
cyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAt
MjUzLDYgKzI1MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1ZXN0UGFydGlhbFRleHR1cmVV
cGRhdGUoKTsKICAgICB2b2lkIGRlbGV0ZVRleHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPik7CiAKKyAgICAvLyBEeW5hbWljIHNldHRpbmcgb2YgdGhlIGRldmljZVNj
YWxlRmFjdG9yLgorICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgZmxvYXQpOwor
ICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2Fs
ZUZhY3RvcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsK
QEAgLTI5OSw2ICszMDEsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6
ZTsKICAgICBJbnRTaXplIG1fZGV2aWNlVmlld3BvcnRTaXplOworICAgIGZsb2F0IG1fZGV2aWNl
U2NhbGVGYWN0b3I7CiAKICAgICBib29sIG1fdmlzaWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA0NDFmYTBhN2FkNTIzNGVmOGM1N2ZkNTlmNDA1MzBm
MTgwNzY3NGM3Li5hMzQyMTk5N2M1MDhiODJjOTE2MDlhODM2YWE1YjdlNjZjMjFkOTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTE2LDYgKzExNiw3IEBA
IENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCiAgICAgLCBt
X3Njcm9sbExheWVySW1wbCgwKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1f
ZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV9zb3Vy
Y2VGcmFtZUNhbkJlRHJhd24odHJ1ZSkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1Vw
RGlzcGxheTo6Y3JlYXRlKCkpCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5k
ZXJTdXIKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGNEcmF3
RXRjIiwgdGhpcywgMCk7CiAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OwogICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VTY2FsZVRyYW5z
Zm9ybTsKLSAgICAgICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9zZXR0aW5ncy5kZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgICAgIGRldmljZVNjYWxlVHJhbnNmb3JtLnNjYWxlKG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9yb290TGF5ZXJJbXBsLmdl
dCgpLCBkZXZpY2VTY2FsZVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIG1fcm9vdExheWVySW1wbC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwg
Jm1fbGF5ZXJTb3J0ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6
ZSk7CiAKICAgICAgICAgaWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRp
YWxTd2FwIHx8IHNldHRpbmdzKCkuc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cykKQEAgLTU2NSw3ICs1
NjYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7
CiAKICAgICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX2Rldmlj
ZVZpZXdwb3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBt
X2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIHVw
ZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7CiAKQEAgLTU3Myw2ICs1NzQsMjAgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOwogfQogCit2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0
IG5ld0RldmljZVNjYWxlRmFjdG9yKQoreworICAgIGlmIChuZXdEZXZpY2VTY2FsZUZhY3RvciA9
PSBkZXZpY2VTY2FsZUZhY3RvcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9kZXZpY2VTY2Fs
ZUZhY3RvciA9IG5ld0RldmljZVNjYWxlRmFjdG9yOworCisgICAgbV9kZXZpY2VWaWV3cG9ydFNp
emUgPSB2aWV3cG9ydFNpemUoKTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2Rl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOworICAgIGlm
IChtX2xheWVyUmVuZGVyZXIpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFu
Z2VkKCk7Cit9CisKKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1h
eFBhZ2VTY2FsZSkKIHsKICAgICBpZiAoIXBhZ2VTY2FsZSkKQEAgLTY0MywxMSArNjU4LDExIEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKQogICAg
ICAgICAgICAgdmlld0JvdW5kcyA9IGNsaXBMYXllci0+Ym91bmRzKCk7CiAgICAgfQogICAgIHZp
ZXdCb3VuZHMuc2NhbGUoMSAvIG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIHZpZXdCb3VuZHMuc2Nh
bGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgdmlld0JvdW5kcy5zY2FsZSht
X2RldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIC8vIG1heFNjcm9sbCBpcyBjb21wdXRlZCBpbiBw
aHlzaWNhbCBwaXhlbHMsIGJ1dCBzY3JvbGwgcG9zaXRpb25zIGFyZSBpbiBsYXlvdXQgcGl4ZWxz
LgogICAgIEludFNpemUgbWF4U2Nyb2xsID0gY29udGVudFNpemUoKSAtIGV4cGFuZGVkSW50U2l6
ZSh2aWV3Qm91bmRzKTsKLSAgICBtYXhTY3JvbGwuc2NhbGUoMSAvIG1fc2V0dGluZ3MuZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIG1heFNjcm9sbC5zY2FsZSgxIC8gbV9kZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgLy8gVGhlIHZpZXdwb3J0IG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgY29udGVudHMg
aW4gc29tZSBjYXNlcywgc3VjaCBhcwogICAgIC8vIGhhdmluZyBhIHZlcnRpY2FsIHNjcm9sbGJh
ciBidXQgbm8gaG9yaXpvbnRhbCBvdmVyZmxvdy4KICAgICBtYXhTY3JvbGwuY2xhbXBOZWdhdGl2
ZVRvWmVybygpOwpAQCAtNjc2LDcgKzY5MSw3IEBAIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pCiAg
ICAgfQogCiAgICAgSW50UG9pbnQgZGV2aWNlVmlld3BvcnRQb2ludCA9IHZpZXdwb3J0UG9pbnQ7
Ci0gICAgZGV2aWNlVmlld3BvcnRQb2ludC5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFj
dG9yLCBtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBkZXZpY2VWaWV3cG9ydFBv
aW50LnNjYWxlKG1fZGV2aWNlU2NhbGVGYWN0b3IsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAg
ICAgLy8gVGhlIGludmVyc2Ugb2YgdGhlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gdGFrZXMgdXMg
ZnJvbSBwaHlzaWNhbCBwaXhlbHMgdG8gbGF5b3V0IHBpeGVscy4KICAgICBJbnRQb2ludCBzY3Jv
bGxMYXllclBvaW50KG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmlu
dmVyc2UoKS5tYXBQb2ludChkZXZpY2VWaWV3cG9ydFBvaW50KSk7CkBAIC03ODIsNyArNzk3LDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb21wdXRlUGluY2hab29tRGVsdGFzKENDU2Ny
b2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8KICAgICBzY3JvbGxFbmQgLT0gYW5jaG9yOwogICAg
IHNjcm9sbEVuZCA9IHNjcm9sbEVuZC5zaHJ1bmtUbyhyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250
ZW50c1NpemUgLSBtX2RldmljZVZpZXdwb3J0U2l6ZSkpLmV4cGFuZGVkVG8oRmxvYXRTaXplKDAs
IDApKTsKICAgICBzY3JvbGxFbmQuc2NhbGUoMSAvIHBhZ2VTY2FsZURlbHRhVG9TZW5kKTsKLSAg
ICBzY3JvbGxFbmQuc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2Ny
b2xsRW5kLnNjYWxlKG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgbWFrZVNjcm9sbEFuZFNj
YWxlU2V0KHNjcm9sbEluZm8sIHJvdW5kZWRJbnRTaXplKHNjcm9sbEVuZCksIG1fbWluUGFnZVNj
YWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAwOTVjMGU1
YjM5MzI0MWE2OTVjNTE0MDUwZjQwZGJmODNlODNiMDkxLi44ODQyYzE5ZGE0OWYyNmRjYjQ3MWMy
ZjI3ODhiNjVjZmEwMzJkOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xNTAsNiArMTUwLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAgICAgdm9pZCBzZXRWaWV3
cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOwogCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2RldmljZVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXREZXZp
Y2VTY2FsZUZhY3Rvcihjb25zdCBmbG9hdCk7CisKICAgICBmbG9hdCBwYWdlU2NhbGUoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VTY2FsZTsgfQogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5k
TGltaXRzKGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdl
U2NhbGUpOwogCkBAIC0yMjAsNiArMjIzLDcgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1f
c2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXplIG1fZGV2
aWNlVmlld3BvcnRTaXplOworICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgYm9v
bCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX3NvdXJjZUZyYW1lQ2FuQmVEcmF3bjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBmZWQz
ZGI5NzU5ODVjNzhjMzYyOTEyODc4OGFjNjQxYWYwMTM3ZjgwLi41NGYwODRiZTY3ZTUyZjc2NDNm
YzA2YzI0M2VlYTUyNTdjNzhhMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtNTEsNyArNTEsNiBAQCBXZWJMYXllclRyZWVWaWV3
OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0CiAgICAgc2V0dGluZ3MudGhy
ZWFkZWRBbmltYXRpb25FbmFibGVkID0gdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNl
dHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IGRlZmF1bHRUaWxlU2l6ZTsKICAgICBzZXR0aW5ncy5t
YXhVbnRpbGVkTGF5ZXJTaXplID0gbWF4VW50aWxlZExheWVyU2l6ZTsKLSAgICBzZXR0aW5ncy5k
ZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yOwogCiAgICAgLy8gRklYTUU6IHNo
b3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIC8gbWF4UGFydGlhbFRleHR1cmVV
cGRhdGVzIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5LgogICAgIHJldHVybiBzZXR0aW5nczsK
QEAgLTEwMiw2ICsxMDEsMTYgQEAgV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNp
emUoKSBjb25zdAogICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgp
LT52aWV3cG9ydFNpemUoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0RGV2aWNl
U2NhbGVGYWN0b3IoY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKTsKK30KKworZmxvYXQgV2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29s
b3IoV2ViQ29sb3IgY29sb3IpCiB7CiAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNl
dEJhY2tncm91bmRDb2xvcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggNTkzZDJkMzE5OTg2ZDVlYzc0MTZiNmYxOThmZWE4ZGZhMTExYWZl
OC4uOThkMzNlNGMxYzFlMzdkNjBkMTcxMGQ0ODQxNTEyMGEzODM3ODBmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjQ5NSw2ICsyNDk1LDggQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3Ip
CiAgICAgICAgIC8vIG5lZWRzIHRvIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbXBvc2l0b3IuCiAg
ICAgICAgIEFTU0VSVChzY2FsZUZhY3RvciA9PSBtX2RldmljZVNjYWxlSW5Db21wb3NpdG9yKTsK
ICAgICB9CisgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCisgICAgICAgIG1fbGF5
ZXJUcmVlVmlldy5zZXREZXZpY2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvcik7CiB9CiAKIGJvb2wg
V2ViVmlld0ltcGw6OmlzRml4ZWRMYXlvdXRNb2RlRW5hYmxlZCgpIGNvbnN0CkBAIC0zNTAwLDEy
ICszNTAyLDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCkpOwogCiAgICAgICAgICAgICBtX2RldmljZVNjYWxlSW5Db21wb3NpdG9yID0g
cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgbGF5ZXJUcmVlVmlld1Nl
dHRpbmdzLmRldmljZVNjYWxlRmFjdG9yID0gbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcjsKICAg
ICAgICAgICAgIHNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3Ip
OwogICAgICAgICB9CiAKICAgICAgICAgbV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUodGhpcywg
bV9yb290TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXll
clRyZWVWaWV3LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0RGV2
aWNlU2NhbGVGYWN0b3IobV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcik7CiAgICAgICAgICAgICBt
X2xheWVyVHJlZVZpZXcuc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3Rv
cigpLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7
CiAgICAgICAgICAgICBpZiAobV9jb21wb3NpdG9yU3VyZmFjZVJlYWR5KQogICAgICAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGFhY2Q5
YTVkNjkwZjMyMTc0YjFlMmU5YTJlMjFiYmM5N2VhNmQwYzYuLmJhZGZkY2MyOGIxZDE0MzBiZGQ0
ZGQ1MDhlZDcxNzFjNWY1ODJjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTI1NSwxMyArMTI1NSwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIDogbV9yb290TGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0
ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgICAgICwgbV9jaGlsZExheWVyKENvbnRlbnRMYXllckNocm9t
aXVtOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQogICAgIHsKLSAgICAgICAgbV9zZXR0aW5ncy5kZXZp
Y2VTY2FsZUZhY3RvciA9IDEuNTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0
KCkKICAgICB7CiAgICAgICAgIC8vIFRoZSBkZXZpY2Ugdmlld3BvcnQgc2hvdWxkIGJlIHNjYWxl
ZCBieSB0aGUgZGV2aWNlIHNjYWxlIGZhY3Rvci4KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg0MCwgNDApKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXREZXZpY2VTY2FsZUZhY3RvcigxLjUpOwogICAgICAgICBFWFBFQ1RfRVEoSW50U2l6ZSg0
MCwgNDApLCBtX2xheWVyVHJlZUhvc3QtPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgRVhQRUNU
X0VRKEludFNpemUoNjAsIDYwKSwgbV9sYXllclRyZWVIb3N0LT5kZXZpY2VWaWV3cG9ydFNpemUo
KSk7CiAKQEAgLTEyODcsNyArMTI4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gU2hvdWxkIG9u
bHkgZG8gb25lIGNvbW1pdC4KICAgICAgICAgRVhQRUNUX0VRKDAsIGltcGwtPnNvdXJjZUZyYW1l
TnVtYmVyKCkpOwogICAgICAgICAvLyBEZXZpY2Ugc2NhbGUgZmFjdG9yIHNob3VsZCBjb21lIG92
ZXIgdG8gaW1wbC4KLSAgICAgICAgRVhQRUNUX05FQVIoaW1wbC0+c2V0dGluZ3MoKS5kZXZpY2VT
Y2FsZUZhY3RvciwgMS41LCAwLjAwMDAxKTsKKyAgICAgICAgRVhQRUNUX05FQVIoaW1wbC0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSwgMS41LCAwLjAwMDAxKTsKIAogICAgICAgICAvLyBCb3RoIGxheWVy
cyBhcmUgb24gaW1wbC4KICAgICAgICAgQVNTRVJUX0VRKDF1LCBpbXBsLT5yb290TGF5ZXIoKS0+
Y2hpbGRyZW4oKS5zaXplKCkpOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgcHVibGljOgogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDYwLCA2MCksIHJvb3QtPnJlbmRlclN1cmZh
Y2UoKS0+Y29udGVudFJlY3QoKSk7CiAKICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
c2NhbGVUcmFuc2Zvcm07Ci0gICAgICAgIHNjYWxlVHJhbnNmb3JtLnNjYWxlKGltcGwtPnNldHRp
bmdzKCkuZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBzY2FsZVRyYW5zZm9ybS5zY2FsZShp
bXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgICAgICAvLyBUaGUgcm9vdCBsYXllciBp
cyBzY2FsZWQgYnkgMnguCiAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJvb3RTY3Jl
ZW5TcGFjZVRyYW5zZm9ybSA9IHNjYWxlVHJhbnNmb3JtOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147872</attachid>
            <date>2012-06-15 12:20:05 -0700</date>
            <delta_ts>2012-06-15 13:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88916-20120615152004.patch</filename>
            <type>text/plain</type>
            <size>20608</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5kYjBkYzY4ODc0ZmVmYzhlMzIzMzRiYjA5YmQ3
OWYwNzJkY2I0ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0xMiAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6IFBsdW1iIHNldERldmljZVNjYWxlRmFjdG9yIGFu
ZAorICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmdW5jdGlvbnMuCisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6IFJlbW92ZSBkZXZpY2VTY2Fs
ZUZhY3RvciBmcm9tCisgICAgICAgIHNldHRpbmdzIGFzIGl0IGlzIG5vdyBkeW5hbWljLgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDYt
MTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVyQ2hyb21p
dW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlYmQ3NmEw
YWEyNWY2MjU1OWE2ZmFiZjBkMjRmYTIyMjE3NWQ4MjMuLjZjMDljZjBhNmMzZjRhODExYTc2YmZl
NWY3NWFiZDQ2ZGNkYTQyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wNi0x
NCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6IFJlbW92ZWQgdXNl
IG9mIHN0YXRpYworICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmcm9tIHNldHRpbmdzIHdpdGgg
ZHlhbm1pYyBtX2RldmljZVNjYWxlRmFjdG9yCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnNldERldmljZVNjYWxlRmFjdG9yKTogQWRkZWQgZnVuY3Rpb24gdG8KKyAgICAgICAgc2V0IGRl
dmljZVNjYWxlRmFjdG9yLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKTogUmVtb3ZlZCBzdGF0aWMgZGV2aWNlU2NhbGVGYWN0
b3IKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KTogQWRk
ZWQgZHluYW1pYyBtX2RldmljZVNjYWxlRmFjdG9yIGluIGl0cyBwbGFjZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOiBTYW1l
IGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXll
clRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6IEFkZGVkIGZ1bmN0aW9uIHRv
CisgICAgICAgIHNldCBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9v
bURlbHRhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOiBBZGRlZCBkeW5hbWljCisgICAgICAgIG1fZGV2aWNlU2NhbGVGYWN0
b3IgaW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KwogMjAxMi0wNi0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uczogc2V0TmFtZSgpIGFuZCBmb3JtQ29udHJv
bE5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YWIzY2YxY2I3ODI4M2NlNTc3
YzAzZDUzOTBkZTg2NTlmZmY0NDlhLi41ZmM4Y2MwZWZiMzU0N2YxNjQ4ODY0NTI4MWI0MjE5NTJk
M2JmMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEy
LTA2LTE0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmljZVNjYWxlRmFjdG9yIGR5bmFtaWNhbGx5IGFkanVz
dGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6IFJlbW92ZWQgdW51c2VkCisgICAg
ICAgIHN0YXRpYyBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXREZXZpY2VTY2FsZUZhY3Rvcik6IFB1c2ggdGhlIGR5bmFtaWMgZGV2aWNlU2NhbGVGYWN0b3IK
KyAgICAgICAgdG8gdGhlIGNvbXBvc2l0b3IgYXMgcmVxdWlyZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOiBUZXN0cyB1c2UgZHluYW1pYyBzZXRE
ZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdERldmlj
ZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXllcnM6OkNDTGF5ZXJUcmVlSG9zdFRlc3RE
ZXZpY2VTY2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdERldmljZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXll
cnM6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3REZXZpY2VT
Y2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQpOgorCiAyMDEyLTA2LTExICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIG1lbWJlciB2YXJpYWJsZXMgZm91bmQgYnkgY2xhbmcncyAt
V3VudXNlZC1wcml2YXRlLWZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDQ2N2Y2NWNkNTVkN2E5ZWI4MzExN2M0MGY5
Y2I4MjBjYTM5ODAyNzUuLmVmNjc2M2Q5ODE4MTc1N2VmMTQ0ZTY3NWQ0OTUxZWJmN2MxOTE4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgdGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUoV2Vi
U2l6ZSgyNTYsIDI1NikpCiAgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllclNpemUoV2ViU2l6
ZSg1MTIsIDUxMikpCi0gICAgICAgICAgICAsIGRldmljZVNjYWxlRmFjdG9yKDEpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCB0
aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXpl
OwogICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7Ci0gICAgICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yOwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVy
YXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTExNSw2ICsxMTMs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgpIGNv
bnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0
KTsKKyAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisK
ICAgICAvLyBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdmlld3BvcnQuCiAgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY0ZjQ4MmJlYTY3Yzc2YjZiZTE1MDQ1ZTE3
ZmUxZjk2MTc4N2JmNjEuLjNjODU1MzVjMmFlYWE5Y2ZkYTI4MzZjZmU1ZDU1N2EwNjg1NzUwOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNzgsNiArNzgsNyBAQCBDQ0xh
eWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9udW1UaW1lc1JlY3JlYXRlU2hvdWxkRmFpbCgw
KQogICAgICwgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDApCiAgICAgLCBtX3NldHRpbmdz
KHNldHRpbmdzKQorICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxl
KHRydWUpCiAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25CeXRlcygwKQogICAgICwgbV9tZW1vcnlB
bGxvY2F0aW9uSXNGb3JEaXNwbGF5KGZhbHNlKQpAQCAtMjUxLDYgKzI1Miw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltcGwpCiAKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVO
dW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7
CisgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKCkp
OwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2NhbGVG
YWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CiAgICAg
aG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7CiAgICAgaG9z
dEltcGwtPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChtX2hhc1RyYW5zcGFyZW50QmFja2dy
b3VuZCk7CkBAIC0zODUsNyArMzg3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgbV92aWV3cG9ydFNpemUg
PSB2aWV3cG9ydFNpemU7CiAKICAgICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFj
dG9yKTsKIAogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC01MTksNyArNTIxLDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIs
IENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwogICAgICAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07Ci0gICAgICAgIGRldmljZVNjYWxlVHJhbnNm
b3JtLnNjYWxlKG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBkZXZpY2VT
Y2FsZVRyYW5zZm9ybS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtcyhyb290TGF5ZXIsIHJvb3RM
YXllciwgZGV2aWNlU2NhbGVUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCB1cGRhdGVMaXN0LCBy
b290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdChG
bG9hdFBvaW50KDAsIDApLCB2aWV3cG9ydFNpemUoKSk7CkBAIC02ODQsNiArNjg2LDE3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAgICAgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0
LmFwcGVuZCh0ZXh0dXJlKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldERldmljZVNj
YWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIGlmIChkZXZpY2VTY2Fs
ZUZhY3RvciA9PSAgbV9kZXZpY2VTY2FsZUZhY3RvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1f
ZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKKworICAgIG1fZGV2aWNlVmll
d3BvcnRTaXplID0gbV92aWV3cG9ydFNpemU7CisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUuc2Nh
bGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7
CiAgICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVk
c0FuaW1hdGVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDNjM2FlMDNm
NjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIuLmZiMzQ2MWYxYWQzMTFkZmUwMWZmYTM0
ZWI0YjU2MTNiOWU1Y2FkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC05MCw3
ICs5MCw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgbWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCiAgICAgICAg
ICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKICAgICAgICAgICAgICwg
bWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKDUxMiwgNTEyKSkKLSAgICAgICAgICAgICwgZGV2
aWNlU2NhbGVGYWN0b3IoMSkKICAgICB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5n
OwpAQCAtMTA3LDcgKzEwNiw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBzaXplX3QgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzOwogICAgIEludFNpemUgZGVmYXVsdFRpbGVTaXplOwogICAg
IEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cjsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcg
Y2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMjUzLDYgKzI1MSw5
IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpOwogICAg
IHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
KTsKIAorICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCos
IGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKQEAgLTI5OSw2ICsz
MDAsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRT
aXplIG1fZGV2aWNlVmlld3BvcnRTaXplOworICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7
CiAKICAgICBib29sIG1fdmlzaWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCA0NDFmYTBhN2FkNTIzNGVmOGM1N2ZkNTlmNDA1MzBmMTgwNzY3NGM3Li5i
NmJjZGQ0YTg2YjMxZWI3NGE1YmM3NDU1Mzk3MzAxNmU2MzVkZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTE2LDYgKzExNiw3IEBAIENDTGF5ZXJUcmVl
SG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Ms
IENDTGF5ZXJUcmVlCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCiAgICAgLCBtX3Njcm9sbExheWVy
SW1wbCgwKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fZGV2aWNlU2NhbGVG
YWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV9zb3VyY2VGcmFtZUNhbkJl
RHJhd24odHJ1ZSkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3Jl
YXRlKCkpCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxj
dWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKICAgICAg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGNEcmF3RXRjIiwgdGhpcywg
MCk7CiAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAg
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VTY2FsZVRyYW5zZm9ybTsKLSAgICAg
ICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgIGRldmljZVNjYWxlVHJhbnNmb3JtLnNjYWxlKG1fZGV2aWNlU2NhbGVGYWN0
b3IpOwogICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9yb290TGF5ZXJJbXBsLmdldCgpLCBkZXZpY2VT
Y2FsZVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1f
cm9vdExheWVySW1wbC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0
ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAg
ICAgaWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwIHx8IHNl
dHRpbmdzKCkuc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cykKQEAgLTU2NSw3ICs1NjYsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX2Rl
dmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6
ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBtX2RldmljZVZpZXdw
b3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIHVwZGF0ZU1heFNjcm9s
bFBvc2l0aW9uKCk7CiAKQEAgLTU3Myw2ICs1NzQsMjAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOwogfQogCit2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IG5ld0RldmljZVNjYWxlRmFj
dG9yKQoreworICAgIGlmIChuZXdEZXZpY2VTY2FsZUZhY3RvciA9PSBkZXZpY2VTY2FsZUZhY3Rv
cigpKQorICAgICAgICByZXR1cm47CisgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IG5ld0Rldmlj
ZVNjYWxlRmFjdG9yOworCisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemUo
KTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsK
KyAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOworICAgIGlmIChtX2xheWVyUmVuZGVyZXIp
CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7Cit9CisKKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkKIHsKICAg
ICBpZiAoIXBhZ2VTY2FsZSkKQEAgLTY0MywxMSArNjU4LDExIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKQogICAgICAgICAgICAgdmlld0JvdW5k
cyA9IGNsaXBMYXllci0+Ym91bmRzKCk7CiAgICAgfQogICAgIHZpZXdCb3VuZHMuc2NhbGUoMSAv
IG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIHZpZXdCb3VuZHMuc2NhbGUobV9zZXR0aW5ncy5kZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgdmlld0JvdW5kcy5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9y
KTsKIAogICAgIC8vIG1heFNjcm9sbCBpcyBjb21wdXRlZCBpbiBwaHlzaWNhbCBwaXhlbHMsIGJ1
dCBzY3JvbGwgcG9zaXRpb25zIGFyZSBpbiBsYXlvdXQgcGl4ZWxzLgogICAgIEludFNpemUgbWF4
U2Nyb2xsID0gY29udGVudFNpemUoKSAtIGV4cGFuZGVkSW50U2l6ZSh2aWV3Qm91bmRzKTsKLSAg
ICBtYXhTY3JvbGwuc2NhbGUoMSAvIG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOworICAg
IG1heFNjcm9sbC5zY2FsZSgxIC8gbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgLy8gVGhlIHZp
ZXdwb3J0IG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgY29udGVudHMgaW4gc29tZSBjYXNlcywgc3Vj
aCBhcwogICAgIC8vIGhhdmluZyBhIHZlcnRpY2FsIHNjcm9sbGJhciBidXQgbm8gaG9yaXpvbnRh
bCBvdmVyZmxvdy4KICAgICBtYXhTY3JvbGwuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwpAQCAtNjc2
LDcgKzY5MSw3IEBAIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pCiAgICAgfQogCiAgICAgSW50UG9p
bnQgZGV2aWNlVmlld3BvcnRQb2ludCA9IHZpZXdwb3J0UG9pbnQ7Ci0gICAgZGV2aWNlVmlld3Bv
cnRQb2ludC5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yLCBtX3NldHRpbmdzLmRl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICBkZXZpY2VWaWV3cG9ydFBvaW50LnNjYWxlKG1fZGV2aWNl
U2NhbGVGYWN0b3IsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8gVGhlIGludmVyc2Ug
b2YgdGhlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gdGFrZXMgdXMgZnJvbSBwaHlzaWNhbCBwaXhl
bHMgdG8gbGF5b3V0IHBpeGVscy4KICAgICBJbnRQb2ludCBzY3JvbGxMYXllclBvaW50KG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBQb2ludChk
ZXZpY2VWaWV3cG9ydFBvaW50KSk7CkBAIC03ODIsNyArNzk3LDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjb21wdXRlUGluY2hab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNj
cm9sbEluZm8KICAgICBzY3JvbGxFbmQgLT0gYW5jaG9yOwogICAgIHNjcm9sbEVuZCA9IHNjcm9s
bEVuZC5zaHJ1bmtUbyhyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250ZW50c1NpemUgLSBtX2Rldmlj
ZVZpZXdwb3J0U2l6ZSkpLmV4cGFuZGVkVG8oRmxvYXRTaXplKDAsIDApKTsKICAgICBzY3JvbGxF
bmQuc2NhbGUoMSAvIHBhZ2VTY2FsZURlbHRhVG9TZW5kKTsKLSAgICBzY3JvbGxFbmQuc2NhbGUo
bV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2Nyb2xsRW5kLnNjYWxlKG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgbWFrZVNjcm9sbEFuZFNjYWxlU2V0KHNjcm9sbEluZm8s
IHJvdW5kZWRJbnRTaXplKHNjcm9sbEVuZCksIG1fbWluUGFnZVNjYWxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAwOTVjMGU1YjM5MzI0MWE2OTVjNTE0MDUw
ZjQwZGJmODNlODNiMDkxLi43Zjk3MjBiNGU3YWM4ZTc1MTBjZDI4ODU5MThmYmNlY2JhMGM5NDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xNTAsNiArMTUwLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlld3BvcnRTaXplOyB9CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50
U2l6ZSYpOwogCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCk7CisKICAgICBmbG9hdCBwYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZTsg
fQogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZSwg
ZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogCkBAIC0yMjAsNiArMjIz
LDcgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBt
X3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXplIG1fZGV2aWNlVmlld3BvcnRTaXplOworICAgIGZs
b2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X3NvdXJjZUZyYW1lQ2FuQmVEcmF3bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBmZWQzZGI5NzU5ODVjNzhjMzYyOTEyODc4OGFj
NjQxYWYwMTM3ZjgwLi41NGYwODRiZTY3ZTUyZjc2NDNmYzA2YzI0M2VlYTUyNTdjNzhhMjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApA
QCAtNTEsNyArNTEsNiBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NT
ZXR0aW5ncygpIGNvbnN0CiAgICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0g
dGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9
IGRlZmF1bHRUaWxlU2l6ZTsKICAgICBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gbWF4
VW50aWxlZExheWVyU2l6ZTsKLSAgICBzZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3RvciA9IGRldmlj
ZVNjYWxlRmFjdG9yOwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlIC8gbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzIGFyZW4ndCBzdXBwb3J0ZWQg
Y3VycmVudGx5LgogICAgIHJldHVybiBzZXR0aW5nczsKQEAgLTEwMiw2ICsxMDEsMTYgQEAgV2Vi
U2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogICAgIHJldHVybiBX
ZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9ydFNpemUoKSk7CiB9CiAK
K3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNl
dERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKK30KKworZmxvYXQgV2ViTGF5
ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBX
ZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCiB7CiAg
ICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTkzZDJk
MzE5OTg2ZDVlYzc0MTZiNmYxOThmZWE4ZGZhMTExYWZlOC4uMTA0ZTNkNTUzZDYwMGNiYjBhZDk4
ZmJiMmNlZmMyYmM2NTU1OWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMjQ5NSw2ICsyNDk1LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldERl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgICAgICAvLyBuZWVkcyB0byBt
YXRjaCB0aGUgb25lIGluIHRoZSBjb21wb3NpdG9yLgogICAgICAgICBBU1NFUlQoc2NhbGVGYWN0
b3IgPT0gbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcik7CiAgICAgfQorICAgIGlmICghbV9sYXll
clRyZWVWaWV3LmlzTnVsbCgpICYmIG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgbV9kZXZpY2VTY2FsZUluQ29tcG9z
aXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgbV9sYXllclRyZWVW
aWV3LnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IpOworICAg
IH0KIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNGaXhlZExheW91dE1vZGVFbmFibGVkKCkgY29u
c3QKQEAgLTM0OTYsMTYgKzM1MDAsMTYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNo
b3dEZWJ1Z0JvcmRlcnMoKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5z
ZXRPcGFxdWUoIWlzVHJhbnNwYXJlbnQoKSk7CiAKLSAgICAgICAgaWYgKG1fd2ViU2V0dGluZ3Mt
PmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgcGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpICE9IDEpIHsKLSAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgICAgICAgICBtX2RldmljZVNjYWxlSW5Db21wb3Np
dG9yID0gcGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yID0gbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRv
cjsKLSAgICAgICAgICAgIHNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBv
c2l0b3IpOwotICAgICAgICB9Ci0KICAgICAgICAgbV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUo
dGhpcywgbV9yb290TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICgh
bV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5n
cy0+YXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCkgIT0gMSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworCisgICAgICAgICAgICAgICAgbV9kZXZpY2VTY2Fs
ZUluQ29tcG9zaXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAg
ICAgICBzZXREZXZpY2VTY2FsZUZhY3RvcihtX2RldmljZVNjYWxlSW5Db21wb3NpdG9yKTsKKyAg
ICAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0RGV2aWNlU2NhbGVGYWN0b3IobV9kZXZp
Y2VTY2FsZUluQ29tcG9zaXRvcik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCks
IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKICAg
ICAgICAgICAgIGlmIChtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHkpCiAgICAgICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LnNldFN1cmZhY2VSZWFkeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYWFjZDlhNWQ2
OTBmMzIxNzRiMWUyZTlhMmUyMWJiYzk3ZWE2ZDBjNi4uYmFkZmRjYzI4YjFkMTQzMGJkZDRkZDUw
OGVkNzE3MWM1ZjU4MmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMjU1LDEzICsxMjU1LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgOiBtX3Jvb3RMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZt
X2RlbGVnYXRlKSkKICAgICAgICAgLCBtX2NoaWxkTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgewotICAgICAgICBtX3NldHRpbmdzLmRldmljZVNj
YWxlRmFjdG9yID0gMS41OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQog
ICAgIHsKICAgICAgICAgLy8gVGhlIGRldmljZSB2aWV3cG9ydCBzaG91bGQgYmUgc2NhbGVkIGJ5
IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDQwLCA0MCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dERldmljZVNjYWxlRmFjdG9yKDEuNSk7CiAgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDQwLCA0
MCksIG1fbGF5ZXJUcmVlSG9zdC0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
SW50U2l6ZSg2MCwgNjApLCBtX2xheWVyVHJlZUhvc3QtPmRldmljZVZpZXdwb3J0U2l6ZSgpKTsK
IApAQCAtMTI4Nyw3ICsxMjg3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBTaG91bGQgb25seSBk
byBvbmUgY29tbWl0LgogICAgICAgICBFWFBFQ1RfRVEoMCwgaW1wbC0+c291cmNlRnJhbWVOdW1i
ZXIoKSk7CiAgICAgICAgIC8vIERldmljZSBzY2FsZSBmYWN0b3Igc2hvdWxkIGNvbWUgb3ZlciB0
byBpbXBsLgotICAgICAgICBFWFBFQ1RfTkVBUihpbXBsLT5zZXR0aW5ncygpLmRldmljZVNjYWxl
RmFjdG9yLCAxLjUsIDAuMDAwMDEpOworICAgICAgICBFWFBFQ1RfTkVBUihpbXBsLT5kZXZpY2VT
Y2FsZUZhY3RvcigpLCAxLjUsIDAuMDAwMDEpOwogCiAgICAgICAgIC8vIEJvdGggbGF5ZXJzIGFy
ZSBvbiBpbXBsLgogICAgICAgICBBU1NFUlRfRVEoMXUsIGltcGwtPnJvb3RMYXllcigpLT5jaGls
ZHJlbigpLnNpemUoKSk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNjAsIDYwKSwgcm9vdC0+cmVuZGVyU3VyZmFjZSgp
LT5jb250ZW50UmVjdCgpKTsKIAogICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY2Fs
ZVRyYW5zZm9ybTsKLSAgICAgICAgc2NhbGVUcmFuc2Zvcm0uc2NhbGUoaW1wbC0+c2V0dGluZ3Mo
KS5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgIHNjYWxlVHJhbnNmb3JtLnNjYWxlKGltcGwt
PmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgICAgIC8vIFRoZSByb290IGxheWVyIGlzIHNj
YWxlZCBieSAyeC4KICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFNjcmVlblNw
YWNlVHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147884</attachid>
            <date>2012-06-15 13:09:39 -0700</date>
            <delta_ts>2012-06-16 20:55:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88916-20120615160938.patch</filename>
            <type>text/plain</type>
            <size>20526</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5kYjBkYzY4ODc0ZmVmYzhlMzIzMzRiYjA5YmQ3
OWYwNzJkY2I0ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0xMiAg
Um9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6IFBsdW1iIHNldERldmljZVNjYWxlRmFjdG9yIGFu
ZAorICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmdW5jdGlvbnMuCisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6IFJlbW92ZSBkZXZpY2VTY2Fs
ZUZhY3RvciBmcm9tCisgICAgICAgIHNldHRpbmdzIGFzIGl0IGlzIG5vdyBkeW5hbWljLgorICAg
ICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDYt
MTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4dHVyZUxheWVyQ2hyb21p
dW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRlYmQ3NmEw
YWEyNWY2MjU1OWE2ZmFiZjBkMjRmYTIyMjE3NWQ4MjMuLjZjMDljZjBhNmMzZjRhODExYTc2YmZl
NWY3NWFiZDQ2ZGNkYTQyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wNi0x
NCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBNYWtlIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBkeW5hbWljYWxseSBhZGp1c3RhYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5MTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6IFJlbW92ZWQgdXNl
IG9mIHN0YXRpYworICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciBmcm9tIHNldHRpbmdzIHdpdGgg
ZHlhbm1pYyBtX2RldmljZVNjYWxlRmFjdG9yCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnNldERldmljZVNjYWxlRmFjdG9yKTogQWRkZWQgZnVuY3Rpb24gdG8KKyAgICAgICAgc2V0IGRl
dmljZVNjYWxlRmFjdG9yLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKTogUmVtb3ZlZCBzdGF0aWMgZGV2aWNlU2NhbGVGYWN0
b3IKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KTogQWRk
ZWQgZHluYW1pYyBtX2RldmljZVNjYWxlRmFjdG9yIGluIGl0cyBwbGFjZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOiBTYW1l
IGFzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXll
clRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6IEFkZGVkIGZ1bmN0aW9uIHRv
CisgICAgICAgIHNldCBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9v
bURlbHRhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOiBBZGRlZCBkeW5hbWljCisgICAgICAgIG1fZGV2aWNlU2NhbGVGYWN0
b3IgaW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KwogMjAxMi0wNi0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uczogc2V0TmFtZSgpIGFuZCBmb3JtQ29udHJv
bE5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YWIzY2YxY2I3ODI4M2NlNTc3
YzAzZDUzOTBkZTg2NTlmZmY0NDlhLi41ZmM4Y2MwZWZiMzU0N2YxNjQ4ODY0NTI4MWI0MjE5NTJk
M2JmMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEy
LTA2LTE0ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIE1ha2UgdGhlIGRldmljZVNjYWxlRmFjdG9yIGR5bmFtaWNhbGx5IGFkanVz
dGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncyk6IFJlbW92ZWQgdW51c2VkCisgICAg
ICAgIHN0YXRpYyBkZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXREZXZpY2VTY2FsZUZhY3Rvcik6IFB1c2ggdGhlIGR5bmFtaWMgZGV2aWNlU2NhbGVGYWN0b3IK
KyAgICAgICAgdG8gdGhlIGNvbXBvc2l0b3IgYXMgcmVxdWlyZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOiBUZXN0cyB1c2UgZHluYW1pYyBzZXRE
ZXZpY2VTY2FsZUZhY3Rvci4KKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdERldmlj
ZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXllcnM6OkNDTGF5ZXJUcmVlSG9zdFRlc3RE
ZXZpY2VTY2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdERldmljZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXll
cnM6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3REZXZpY2VT
Y2FsZUZhY3RvclNjYWxlc1ZpZXdwb3J0QW5kTGF5ZXJzOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQpOgorCiAyMDEyLTA2LTExICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdW51c2VkIG1lbWJlciB2YXJpYWJsZXMgZm91bmQgYnkgY2xhbmcncyAt
V3VudXNlZC1wcml2YXRlLWZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDQ2N2Y2NWNkNTVkN2E5ZWI4MzExN2M0MGY5
Y2I4MjBjYTM5ODAyNzUuLmVmNjc2M2Q5ODE4MTc1N2VmMTQ0ZTY3NWQ0OTUxZWJmN2MxOTE4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgdGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUoV2Vi
U2l6ZSgyNTYsIDI1NikpCiAgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllclNpemUoV2ViU2l6
ZSg1MTIsIDUxMikpCi0gICAgICAgICAgICAsIGRldmljZVNjYWxlRmFjdG9yKDEpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCB0
aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXpl
OwogICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7Ci0gICAgICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yOwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVy
YXRvciBXZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTExNSw2ICsxMTMs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgpIGNv
bnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0
KTsKKyAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisK
ICAgICAvLyBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdmlld3BvcnQuCiAgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY0ZjQ4MmJlYTY3Yzc2YjZiZTE1MDQ1ZTE3
ZmUxZjk2MTc4N2JmNjEuLjNjODU1MzVjMmFlYWE5Y2ZkYTI4MzZjZmU1ZDU1N2EwNjg1NzUwOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNzgsNiArNzgsNyBAQCBDQ0xh
eWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9udW1UaW1lc1JlY3JlYXRlU2hvdWxkRmFpbCgw
KQogICAgICwgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDApCiAgICAgLCBtX3NldHRpbmdz
KHNldHRpbmdzKQorICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxl
KHRydWUpCiAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25CeXRlcygwKQogICAgICwgbV9tZW1vcnlB
bGxvY2F0aW9uSXNGb3JEaXNwbGF5KGZhbHNlKQpAQCAtMjUxLDYgKzI1Miw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltcGwpCiAKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVO
dW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7
CisgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKCkp
OwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2NhbGVG
YWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CiAgICAg
aG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7CiAgICAgaG9z
dEltcGwtPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChtX2hhc1RyYW5zcGFyZW50QmFja2dy
b3VuZCk7CkBAIC0zODUsNyArMzg3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgbV92aWV3cG9ydFNpemUg
PSB2aWV3cG9ydFNpemU7CiAKICAgICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFj
dG9yKTsKIAogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC01MTksNyArNTIxLDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIs
IENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwogICAgICAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07Ci0gICAgICAgIGRldmljZVNjYWxlVHJhbnNm
b3JtLnNjYWxlKG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBkZXZpY2VT
Y2FsZVRyYW5zZm9ybS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtcyhyb290TGF5ZXIsIHJvb3RM
YXllciwgZGV2aWNlU2NhbGVUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCB1cGRhdGVMaXN0LCBy
b290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdChG
bG9hdFBvaW50KDAsIDApLCB2aWV3cG9ydFNpemUoKSk7CkBAIC02ODQsNiArNjg2LDE3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAgICAgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRMaXN0
LmFwcGVuZCh0ZXh0dXJlKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldERldmljZVNj
YWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIGlmIChkZXZpY2VTY2Fs
ZUZhY3RvciA9PSAgbV9kZXZpY2VTY2FsZUZhY3RvcikKKyAgICAgICAgcmV0dXJuOworICAgIG1f
ZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKKworICAgIG1fZGV2aWNlVmll
d3BvcnRTaXplID0gbV92aWV3cG9ydFNpemU7CisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUuc2Nh
bGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7
CiAgICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVk
c0FuaW1hdGVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDNjM2FlMDNm
NjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIuLmZiMzQ2MWYxYWQzMTFkZmUwMWZmYTM0
ZWI0YjU2MTNiOWU1Y2FkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC05MCw3
ICs5MCw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgbWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCiAgICAgICAg
ICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKICAgICAgICAgICAgICwg
bWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKDUxMiwgNTEyKSkKLSAgICAgICAgICAgICwgZGV2
aWNlU2NhbGVGYWN0b3IoMSkKICAgICB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5n
OwpAQCAtMTA3LDcgKzEwNiw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBzaXplX3QgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzOwogICAgIEludFNpemUgZGVmYXVsdFRpbGVTaXplOwogICAg
IEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cjsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcg
Y2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMjUzLDYgKzI1MSw5
IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpOwogICAg
IHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
KTsKIAorICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCos
IGNvbnN0IENDU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKQEAgLTI5OSw2ICsz
MDAsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRT
aXplIG1fZGV2aWNlVmlld3BvcnRTaXplOworICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7
CiAKICAgICBib29sIG1fdmlzaWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCA0NDFmYTBhN2FkNTIzNGVmOGM1N2ZkNTlmNDA1MzBmMTgwNzY3NGM3Li5i
NmJjZGQ0YTg2YjMxZWI3NGE1YmM3NDU1Mzk3MzAxNmU2MzVkZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTE2LDYgKzExNiw3IEBAIENDTGF5ZXJUcmVl
SG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Ms
IENDTGF5ZXJUcmVlCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCiAgICAgLCBtX3Njcm9sbExheWVy
SW1wbCgwKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fZGV2aWNlU2NhbGVG
YWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAgICwgbV9zb3VyY2VGcmFtZUNhbkJl
RHJhd24odHJ1ZSkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3Jl
YXRlKCkpCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxj
dWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKICAgICAg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGNEcmF3RXRjIiwgdGhpcywg
MCk7CiAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAg
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VTY2FsZVRyYW5zZm9ybTsKLSAgICAg
ICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgICAgIGRldmljZVNjYWxlVHJhbnNmb3JtLnNjYWxlKG1fZGV2aWNlU2NhbGVGYWN0
b3IpOwogICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9yb290TGF5ZXJJbXBsLmdldCgpLCBkZXZpY2VT
Y2FsZVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1f
cm9vdExheWVySW1wbC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0
ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAKICAgICAg
ICAgaWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwIHx8IHNl
dHRpbmdzKCkuc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cykKQEAgLTU2NSw3ICs1NjYsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX2Rl
dmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6
ZS5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBtX2RldmljZVZpZXdw
b3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIHVwZGF0ZU1heFNjcm9s
bFBvc2l0aW9uKCk7CiAKQEAgLTU3Myw2ICs1NzQsMjAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0Q2hhbmdlZCgpOwogfQogCit2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IG5ld0RldmljZVNjYWxlRmFj
dG9yKQoreworICAgIGlmIChuZXdEZXZpY2VTY2FsZUZhY3RvciA9PSBkZXZpY2VTY2FsZUZhY3Rv
cigpKQorICAgICAgICByZXR1cm47CisgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IG5ld0Rldmlj
ZVNjYWxlRmFjdG9yOworCisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemUo
KTsKKyAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsK
KyAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOworICAgIGlmIChtX2xheWVyUmVuZGVyZXIp
CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7Cit9CisKKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkKIHsKICAg
ICBpZiAoIXBhZ2VTY2FsZSkKQEAgLTY0MywxMSArNjU4LDExIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKQogICAgICAgICAgICAgdmlld0JvdW5k
cyA9IGNsaXBMYXllci0+Ym91bmRzKCk7CiAgICAgfQogICAgIHZpZXdCb3VuZHMuc2NhbGUoMSAv
IG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIHZpZXdCb3VuZHMuc2NhbGUobV9zZXR0aW5ncy5kZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgdmlld0JvdW5kcy5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9y
KTsKIAogICAgIC8vIG1heFNjcm9sbCBpcyBjb21wdXRlZCBpbiBwaHlzaWNhbCBwaXhlbHMsIGJ1
dCBzY3JvbGwgcG9zaXRpb25zIGFyZSBpbiBsYXlvdXQgcGl4ZWxzLgogICAgIEludFNpemUgbWF4
U2Nyb2xsID0gY29udGVudFNpemUoKSAtIGV4cGFuZGVkSW50U2l6ZSh2aWV3Qm91bmRzKTsKLSAg
ICBtYXhTY3JvbGwuc2NhbGUoMSAvIG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IpOworICAg
IG1heFNjcm9sbC5zY2FsZSgxIC8gbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgLy8gVGhlIHZp
ZXdwb3J0IG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgY29udGVudHMgaW4gc29tZSBjYXNlcywgc3Vj
aCBhcwogICAgIC8vIGhhdmluZyBhIHZlcnRpY2FsIHNjcm9sbGJhciBidXQgbm8gaG9yaXpvbnRh
bCBvdmVyZmxvdy4KICAgICBtYXhTY3JvbGwuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwpAQCAtNjc2
LDcgKzY5MSw3IEBAIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pCiAgICAgfQogCiAgICAgSW50UG9p
bnQgZGV2aWNlVmlld3BvcnRQb2ludCA9IHZpZXdwb3J0UG9pbnQ7Ci0gICAgZGV2aWNlVmlld3Bv
cnRQb2ludC5zY2FsZShtX3NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yLCBtX3NldHRpbmdzLmRl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICBkZXZpY2VWaWV3cG9ydFBvaW50LnNjYWxlKG1fZGV2aWNl
U2NhbGVGYWN0b3IsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8gVGhlIGludmVyc2Ug
b2YgdGhlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gdGFrZXMgdXMgZnJvbSBwaHlzaWNhbCBwaXhl
bHMgdG8gbGF5b3V0IHBpeGVscy4KICAgICBJbnRQb2ludCBzY3JvbGxMYXllclBvaW50KG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBQb2ludChk
ZXZpY2VWaWV3cG9ydFBvaW50KSk7CkBAIC03ODIsNyArNzk3LDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjb21wdXRlUGluY2hab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNj
cm9sbEluZm8KICAgICBzY3JvbGxFbmQgLT0gYW5jaG9yOwogICAgIHNjcm9sbEVuZCA9IHNjcm9s
bEVuZC5zaHJ1bmtUbyhyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250ZW50c1NpemUgLSBtX2Rldmlj
ZVZpZXdwb3J0U2l6ZSkpLmV4cGFuZGVkVG8oRmxvYXRTaXplKDAsIDApKTsKICAgICBzY3JvbGxF
bmQuc2NhbGUoMSAvIHBhZ2VTY2FsZURlbHRhVG9TZW5kKTsKLSAgICBzY3JvbGxFbmQuc2NhbGUo
bV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgc2Nyb2xsRW5kLnNjYWxlKG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgbWFrZVNjcm9sbEFuZFNjYWxlU2V0KHNjcm9sbEluZm8s
IHJvdW5kZWRJbnRTaXplKHNjcm9sbEVuZCksIG1fbWluUGFnZVNjYWxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAwOTVjMGU1YjM5MzI0MWE2OTVjNTE0MDUw
ZjQwZGJmODNlODNiMDkxLi43Zjk3MjBiNGU3YWM4ZTc1MTBjZDI4ODU5MThmYmNlY2JhMGM5NDNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xNTAsNiArMTUwLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlld3BvcnRTaXplOyB9CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50
U2l6ZSYpOwogCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2RldmljZVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCk7CisKICAgICBmbG9hdCBwYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZTsg
fQogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZSwg
ZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogCkBAIC0yMjAsNiArMjIz
LDcgQEAgcHJpdmF0ZToKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBt
X3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXplIG1fZGV2aWNlVmlld3BvcnRTaXplOworICAgIGZs
b2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBt
X3NvdXJjZUZyYW1lQ2FuQmVEcmF3bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBmZWQzZGI5NzU5ODVjNzhjMzYyOTEyODc4OGFj
NjQxYWYwMTM3ZjgwLi41NGYwODRiZTY3ZTUyZjc2NDNmYzA2YzI0M2VlYTUyNTdjNzhhMjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApA
QCAtNTEsNyArNTEsNiBAQCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NT
ZXR0aW5ncygpIGNvbnN0CiAgICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0g
dGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9
IGRlZmF1bHRUaWxlU2l6ZTsKICAgICBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gbWF4
VW50aWxlZExheWVyU2l6ZTsKLSAgICBzZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3RvciA9IGRldmlj
ZVNjYWxlRmFjdG9yOwogCiAgICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlIC8gbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzIGFyZW4ndCBzdXBwb3J0ZWQg
Y3VycmVudGx5LgogICAgIHJldHVybiBzZXR0aW5nczsKQEAgLTEwMiw2ICsxMDEsMTYgQEAgV2Vi
U2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogICAgIHJldHVybiBX
ZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9ydFNpemUoKSk7CiB9CiAK
K3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0RGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCit7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNl
dERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKK30KKworZmxvYXQgV2ViTGF5
ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwogdm9pZCBX
ZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCiB7CiAg
ICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTkzZDJk
MzE5OTg2ZDVlYzc0MTZiNmYxOThmZWE4ZGZhMTExYWZlOC4uYmY1YzNhOTk2ZGFjNWMzZjkzOWY1
NDg5NDM3N2E5NjBlMzNkODg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMjQ5NSw2ICsyNDk1LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldERl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgICAgICAvLyBuZWVkcyB0byBt
YXRjaCB0aGUgb25lIGluIHRoZSBjb21wb3NpdG9yLgogICAgICAgICBBU1NFUlQoc2NhbGVGYWN0
b3IgPT0gbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcik7CiAgICAgfQorICAgIGlmICghbV9sYXll
clRyZWVWaWV3LmlzTnVsbCgpICYmIG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKKyAgICAgICAgbV9kZXZpY2VTY2FsZUluQ29tcG9z
aXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgbV9sYXllclRyZWVW
aWV3LnNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IpOworICAg
IH0KIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNGaXhlZExheW91dE1vZGVFbmFibGVkKCkgY29u
c3QKQEAgLTM0OTYsMTYgKzM1MDAsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNo
b3dEZWJ1Z0JvcmRlcnMoKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5z
ZXRPcGFxdWUoIWlzVHJhbnNwYXJlbnQoKSk7CiAKLSAgICAgICAgaWYgKG1fd2ViU2V0dGluZ3Mt
PmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgJiYgcGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpICE9IDEpIHsKLSAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgICAgICAgICBtX2RldmljZVNjYWxlSW5Db21wb3Np
dG9yID0gcGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yID0gbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRv
cjsKLSAgICAgICAgICAgIHNldERldmljZVNjYWxlRmFjdG9yKG1fZGV2aWNlU2NhbGVJbkNvbXBv
c2l0b3IpOwotICAgICAgICB9Ci0KICAgICAgICAgbV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUo
dGhpcywgbV9yb290TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICgh
bV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5n
cy0+YXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCkgIT0gMSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworCisgICAgICAgICAgICAgICAgbV9kZXZpY2VTY2Fs
ZUluQ29tcG9zaXRvciA9IHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAg
ICAgICBzZXREZXZpY2VTY2FsZUZhY3RvcihtX2RldmljZVNjYWxlSW5Db21wb3NpdG9yKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFBhZ2VTY2FsZUZh
Y3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IoKSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9y
LCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKG1fY29tcG9zaXRv
clN1cmZhY2VSZWFkeSkKICAgICAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0U3VyZmFj
ZVJlYWR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAppbmRleCBhYWNkOWE1ZDY5MGYzMjE3NGIxZTJlOWEyZTIxYmJjOTdl
YTZkMGM2Li5iYWRmZGNjMjhiMWQxNDMwYmRkNGRkNTA4ZWQ3MTcxYzVmNTgyY2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKQEAgLTEyNTUsMTMgKzEyNTUsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fcm9vdExheWVy
KENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQogICAgICAgICAsIG1f
Y2hpbGRMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKICAg
ICB7Ci0gICAgICAgIG1fc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjU7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewogICAgICAgICAvLyBUaGUgZGV2
aWNlIHZpZXdwb3J0IHNob3VsZCBiZSBzY2FsZWQgYnkgdGhlIGRldmljZSBzY2FsZSBmYWN0b3Iu
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNDAsIDQw
KSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41KTsK
ICAgICAgICAgRVhQRUNUX0VRKEludFNpemUoNDAsIDQwKSwgbV9sYXllclRyZWVIb3N0LT52aWV3
cG9ydFNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDYwLCA2MCksIG1fbGF5ZXJU
cmVlSG9zdC0+ZGV2aWNlVmlld3BvcnRTaXplKCkpOwogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIFNob3VsZCBvbmx5IGRvIG9uZSBjb21taXQuCiAgICAgICAgIEVY
UEVDVF9FUSgwLCBpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKTsKICAgICAgICAgLy8gRGV2aWNl
IHNjYWxlIGZhY3RvciBzaG91bGQgY29tZSBvdmVyIHRvIGltcGwuCi0gICAgICAgIEVYUEVDVF9O
RUFSKGltcGwtPnNldHRpbmdzKCkuZGV2aWNlU2NhbGVGYWN0b3IsIDEuNSwgMC4wMDAwMSk7Cisg
ICAgICAgIEVYUEVDVF9ORUFSKGltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIDEuNSwgMC4wMDAw
MSk7CiAKICAgICAgICAgLy8gQm90aCBsYXllcnMgYXJlIG9uIGltcGwuCiAgICAgICAgIEFTU0VS
VF9FUSgxdSwgaW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKCkuc2l6ZSgpKTsKQEAgLTEzMTYs
NyArMTMxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCA2MCwgNjApLCByb290LT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkpOwogCiAgICAg
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlVHJhbnNmb3JtOwotICAgICAgICBzY2Fs
ZVRyYW5zZm9ybS5zY2FsZShpbXBsLT5zZXR0aW5ncygpLmRldmljZVNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgc2NhbGVUcmFuc2Zvcm0uc2NhbGUoaW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAK
ICAgICAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgaXMgc2NhbGVkIGJ5IDJ4LgogICAgICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByb290U2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBzY2FsZVRyYW5z
Zm9ybTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>