<?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>90316</bug_id>
          
          <creation_ts>2012-06-29 15:29:07 -0700</creation_ts>
          <short_desc>[Chromium]Add DoubleTap gesture</short_desc>
          <delta_ts>2012-10-02 02:33:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yusufo</reporter>
          <assigned_to>yusufo</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jochen</cc>
    
    <cc>peter</cc>
    
    <cc>qinmin</cc>
    
    <cc>varunjain</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660829</commentid>
    <comment_count>0</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-06-29 15:29:07 -0700</bug_when>
    <thetext>Add DOubleTap gesture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660833</commentid>
    <comment_count>1</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-06-29 15:39:16 -0700</bug_when>
    <thetext>This is not ready for review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660834</commentid>
    <comment_count>2</comment_count>
      <attachid>150266</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-06-29 15:39:48 -0700</bug_when>
    <thetext>Created attachment 150266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676811</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-07-24 07:49:42 -0700</bug_when>
    <thetext>Hi Yusuf, what is the status of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676953</commentid>
    <comment_count>4</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-07-24 10:12:31 -0700</bug_when>
    <thetext>I need to add a test and get rid of some of the comments, but I will get back to this by the end of this week or next week.

(In reply to comment #3)
&gt; Hi Yusuf, what is the status of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680103</commentid>
    <comment_count>5</comment_count>
      <attachid>150266</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 21:53:20 -0700</bug_when>
    <thetext>Comment on attachment 150266
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:189
&gt; +static const float deviceDpiUnit = 160;

There&apos;s a constant for this in ViewportArguments.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698694</commentid>
    <comment_count>6</comment_count>
      <attachid>159213</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-08-17 14:57:33 -0700</bug_when>
    <thetext>Created attachment 159213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698758</commentid>
    <comment_count>7</comment_count>
      <attachid>159213</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 16:19:09 -0700</bug_when>
    <thetext>Comment on attachment 159213
Patch

Attachment 159213 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13514997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698828</commentid>
    <comment_count>8</comment_count>
      <attachid>159213</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-17 17:21:57 -0700</bug_when>
    <thetext>Comment on attachment 159213
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1071
&gt; +        const float deviceDpiScale = screenHorizontalDPI(mainFrameImpl()-&gt;frameView()) / deviceDpiUnit;

Actually, it should be fine again to use deviceScaleFactor() for this.  Please switch it back and delete deviceDpiUnit.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3796
&gt; +        m_doubleTapZoomInEffect = false;

It looks like this will fail to work in animated zooms.  The new page scale will come back to you asynchronously in this function.  So you are setting it to true, then milliseconds later false again.

One workaround would be to remember what scale you&apos;ve sent down and only set to false if it&apos;s different.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:393
&gt; +void simulateDoubleTap(WebViewImpl* webViewImpl, WebPoint&amp; point, WebPoint&amp; scroll, float&amp; scale, bool&amp; isAnchor)

You should be able to reuse startPageScaleAnimation() given that it&apos;s instantaneous when the time is 0.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:432
&gt; +    EXPECT_FLOAT_EQ(deviceDpiScale, scale);

What does the div have to do with deviceDpiScale?  Is it just because you arranged the sizes that way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699074</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-19 13:44:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 159213 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159213&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1071
&gt; &gt; +        const float deviceDpiScale = screenHorizontalDPI(mainFrameImpl()-&gt;frameView()) / deviceDpiUnit;
&gt; 
&gt; Actually, it should be fine again to use deviceScaleFactor() for this.  Please switch it back and delete deviceDpiUnit.

Yeah, we&apos;re trying to get rid of the 160 constant from as many places as possible and operate in terms of scale factors whenever possible (instead of fake DPI values).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699938</commentid>
    <comment_count>10</comment_count>
      <attachid>159213</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 14:11:40 -0700</bug_when>
    <thetext>Comment on attachment 159213
Patch

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

Sounds like we&apos;ll need to iterate a bit on this patch.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:698
&gt; +    case WebInputEvent::GestureDoubleTap: {
&gt; +        animateZoomAroundPoint(WebPoint(event.x, event.y), DoubleTap);
&gt; +        return true;
&gt; +    }

Why don&apos;t we want to give WebCore a chance to handle this gesture first via handleGestureEvent ?  I would expect us to call animateZoomAroundPoint as the default event handler after WebCore has processed it.  Maybe I don&apos;t understand how gesture events work in enough detail...

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1061
&gt; +        // be visible). TODO(johnme): Revisit this if it isn&apos;t always true.

TODO(johnme): -&gt; FIXME:

(WebKit uses FIXME rather than TODO and doesn&apos;t list user names in the comments.)

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1143
&gt; +      scroll = clampOffsetAtScale(scroll, scale);

Four-space indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728994</commentid>
    <comment_count>11</comment_count>
      <attachid>165880</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-26 14:43:42 -0700</bug_when>
    <thetext>Created attachment 165880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728998</commentid>
    <comment_count>12</comment_count>
      <attachid>165882</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-26 14:48:13 -0700</bug_when>
    <thetext>Created attachment 165882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729001</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 14:52:40 -0700</bug_when>
    <thetext>Attachment 165882 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1
Source/WebKit/chromium/src/WebViewImpl.cpp:1133:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1134:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebViewImpl.cpp:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/WebFrameTest.cpp:319:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/WebFrameTest.cpp:350:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/WebFrameTest.cpp:352:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/WebFrameTest.cpp:393:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 11 in 7 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>729017</commentid>
    <comment_count>14</comment_count>
      <attachid>165882</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-09-26 15:23:58 -0700</bug_when>
    <thetext>Comment on attachment 165882
Patch

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

Seems good in general, just a few comments.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1102
&gt; +        const float minMaxScale = m_minimumPageScaleFactor * doubleTapZoomMinMax;

Rename &quot;minMaxScale&quot; to &quot;legibleScale&quot;, &quot;minMaxScale&quot; to &quot;defaultScaleWhenAlreadyLegible&quot;, and &quot;doubleTapZoomMinMax&quot; to &quot;doubleTapZoomAlreadyLegibleRatio&quot;.

The &quot;already legible&quot; stuff is also worth a brief comment.  I&apos;d write:
// When we compute that text is already legible at or near minimum scale, we still want
// to provide the user some kind of feedback for their double-tap gesture.  In that
// case, zoom the small amount represented by &quot;defaultScaleWhenAlreadyLegible&quot;.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:-34
&gt; -

No need to delete this whitespace.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:394
&gt; +    webViewImpl-&gt;computeScaleAndScrollForHitRect(rect, WebViewImpl::DoubleTap, scale, scroll, isAnchor);

Instead of doing this, could you call animateZoomAroundPoint() to exercise more of the code?  Use some test trickery to set doubleTapZoomAnimationDurationInSeconds to zero in the test environment; then it will end up just calling setPageScaleFactor() like you&apos;re doing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729018</commentid>
    <comment_count>15</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-09-26 15:24:58 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Rename &quot;minMaxScale&quot; to &quot;legibleScale&quot;, &quot;minMaxScale&quot; to &quot;defaultScaleWhenAlreadyLegible&quot;, and &quot;doubleTapZoomMinMax&quot; to &quot;doubleTapZoomAlreadyLegibleRatio&quot;.

Sorry, for the first one, I meant rename &quot;maxScale&quot; to &quot;legibleScale&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729752</commentid>
    <comment_count>16</comment_count>
      <attachid>166041</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 11:58:52 -0700</bug_when>
    <thetext>Created attachment 166041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729768</commentid>
    <comment_count>17</comment_count>
      <attachid>166041</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 12:23:29 -0700</bug_when>
    <thetext>Comment on attachment 166041
Patch

Attachment 166041 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14031956</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729788</commentid>
    <comment_count>18</comment_count>
      <attachid>166045</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 13:00:13 -0700</bug_when>
    <thetext>Created attachment 166045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729849</commentid>
    <comment_count>19</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-09-27 14:10:36 -0700</bug_when>
    <thetext>LGTM.  Adam, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729870</commentid>
    <comment_count>20</comment_count>
      <attachid>166045</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 14:32:22 -0700</bug_when>
    <thetext>Comment on attachment 166045
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1076
&gt; +        float adjustedDpiScale = deviceScaleFactor();

What&apos;s the point of this variable?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1079
&gt; +        float legibleScale = adjustedDpiScale;
&gt; +        if (adjustedDpiScale &lt; defaultScaleWhenAlreadyLegible)

This can just be:

float legibleScale = deviceScaleFactor();
if (legibleScale &lt; defaultScaleWhenAlreadyLegible)
  [...]

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1214
&gt; +    WebPoint pt = point;

pt &lt;--- please use complete words.  If you just need to convert the type, you might call this variable webPoint.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:564
&gt; -    void computeScaleAndScrollForHitRect(const WebRect&amp; hitRect, AutoZoomType, float&amp; scale, WebPoint&amp; scroll);
&gt; +    void computeScaleAndScrollForHitRect(const WebRect&amp; hitRect, AutoZoomType, float&amp; scale, WebPoint&amp; scroll, bool &amp;isAnchor);

bool &amp;  -&gt;  bool&amp;

&gt; Source/WebKit/chromium/src/WebViewImpl.h:571
&gt; +    // Exposed for testing purposes.
&gt; +    void shouldUseAnimateDoubleTapTimeZero(bool);

Typically we put that information in the name of the function so we can tell when non-testing code tries to call it:

void shouldUseAnimateDoubleTapTimeZeroForTesting(bool)

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:346
&gt; +    WebViewImpl* webViewImpl = static_cast&lt;WebViewImpl*&gt;(FrameTestHelpers::createWebViewAndLoad(m_baseURL + &quot;get_scale_for_auto_zoom_into_div_test.html&quot;, true, 0, &amp;client));
&gt; +    webViewImpl-&gt;enableFixedLayoutMode(true);
&gt; +    webViewImpl-&gt;setDeviceScaleFactor(2.0f);
&gt; +
&gt; +    webViewImpl-&gt;resize(WebSize(viewportWidth, viewportHeight));
&gt; +    webViewImpl-&gt;setPageScaleFactorLimits(0.01, 4);
&gt; +    webViewImpl-&gt;mainFrameImpl()-&gt;frameView()-&gt;layout();

Do we need to do all of this through the Impl class?  We should do as much through the API as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729872</commentid>
    <comment_count>21</comment_count>
      <attachid>166045</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 14:33:24 -0700</bug_when>
    <thetext>Comment on attachment 166045
Patch

I&apos;m not super excited about adding more bools to WebViewImpl.  That class is super, super complicated already.  Mostly the comments below are just nitpicks.  The patch looks fine in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729941</commentid>
    <comment_count>22</comment_count>
      <attachid>166081</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 15:43:13 -0700</bug_when>
    <thetext>Created attachment 166081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729958</commentid>
    <comment_count>23</comment_count>
      <attachid>166081</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 15:58:38 -0700</bug_when>
    <thetext>Comment on attachment 166081
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:751
&gt; +        m_client-&gt;cancelScheduledContentIntents();
&gt; +        animateZoomAroundPoint(WebPoint(event.x, event.y), DoubleTap);
&gt; +        return true;

So, we don&apos;t call handleGestureEvent event anymore?  Also, we don&apos;t call m_client-&gt;didHandleGestureEvent either.  At the least, I think we should call m_client-&gt;didHandleGestureEvent with eventSwallowed == true.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:346
&gt; +    WebViewImpl* webViewImpl = static_cast&lt;WebViewImpl*&gt;(FrameTestHelpers::createWebViewAndLoad(m_baseURL + &quot;get_scale_for_auto_zoom_into_div_test.html&quot;, true, 0, &amp;client));
&gt; +    webViewImpl-&gt;enableFixedLayoutMode(true);
&gt; +    webViewImpl-&gt;setDeviceScaleFactor(2.0f);
&gt; +
&gt; +    webViewImpl-&gt;resize(WebSize(viewportWidth, viewportHeight));
&gt; +    webViewImpl-&gt;setPageScaleFactorLimits(0.01, 4);
&gt; +    webViewImpl-&gt;mainFrameImpl()-&gt;frameView()-&gt;layout();

I&apos;m pretty sure some of these things can be done through the API.  Maybe you responded to my earlier comment and I missed it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729972</commentid>
    <comment_count>24</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 16:10:54 -0700</bug_when>
    <thetext>Sorry, Adam. I seem to have missed your previous comment. Checking to see how I can do some of the initialization through the API.

(In reply to comment #23)
&gt; (From update of attachment 166081 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166081&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:751
&gt; &gt; +        m_client-&gt;cancelScheduledContentIntents();
&gt; &gt; +        animateZoomAroundPoint(WebPoint(event.x, event.y), DoubleTap);
&gt; &gt; +        return true;
&gt; 
&gt; So, we don&apos;t call handleGestureEvent event anymore?  Also, we don&apos;t call m_client-&gt;didHandleGestureEvent either.  At the least, I think we should call m_client-&gt;didHandleGestureEvent with eventSwallowed == true.
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:346
&gt; &gt; +    WebViewImpl* webViewImpl = static_cast&lt;WebViewImpl*&gt;(FrameTestHelpers::createWebViewAndLoad(m_baseURL + &quot;get_scale_for_auto_zoom_into_div_test.html&quot;, true, 0, &amp;client));
&gt; &gt; +    webViewImpl-&gt;enableFixedLayoutMode(true);
&gt; &gt; +    webViewImpl-&gt;setDeviceScaleFactor(2.0f);
&gt; &gt; +
&gt; &gt; +    webViewImpl-&gt;resize(WebSize(viewportWidth, viewportHeight));
&gt; &gt; +    webViewImpl-&gt;setPageScaleFactorLimits(0.01, 4);
&gt; &gt; +    webViewImpl-&gt;mainFrameImpl()-&gt;frameView()-&gt;layout();
&gt; 
&gt; I&apos;m pretty sure some of these things can be done through the API.  Maybe you responded to my earlier comment and I missed it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730039</commentid>
    <comment_count>25</comment_count>
      <attachid>166100</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 17:20:19 -0700</bug_when>
    <thetext>Created attachment 166100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730041</commentid>
    <comment_count>26</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-09-27 17:22:24 -0700</bug_when>
    <thetext>Looks like we haven&apos;t made these changes downstream yet. Fixing the patch with your recommendations.

(In reply to comment #23)
&gt; (From update of attachment 166081 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166081&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:751
&gt; &gt; +        m_client-&gt;cancelScheduledContentIntents();
&gt; &gt; +        animateZoomAroundPoint(WebPoint(event.x, event.y), DoubleTap);
&gt; &gt; +        return true;
&gt; 
&gt; So, we don&apos;t call handleGestureEvent event anymore?  Also, we don&apos;t call m_client-&gt;didHandleGestureEvent either.  At the least, I think we should call m_client-&gt;didHandleGestureEvent with eventSwallowed == true.

&gt; I&apos;m pretty sure some of these things can be done through the API.  Maybe you responded to my earlier comment and I missed it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730055</commentid>
    <comment_count>27</comment_count>
      <attachid>166100</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 17:30:34 -0700</bug_when>
    <thetext>Comment on attachment 166100
Patch

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

This looks fine.  In general, we prefer for tests to use the API whenever possible so that our tests don&apos;t impose constraints on how WebCore evolves.

I&apos;m deferring to aelias for the actual subject matter of the patch.  Most of my review comments have been about the structure of the code.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:751
&gt; +        eventSwallowed = true;

I guess the model here is that we&apos;re always going to swallow the double-tap gesture and never pass it along.  The other option is always pass it along and then call animateZoomAroundPoint if no one else swallows the event.  It&apos;s not entirely clear to me which is better. I guess we can try this for now and then starting passing the event along later.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:570
&gt; +    // Exposed for testing purposes.

This comment isn&apos;t really needed anymore.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:329
&gt; +    webViewImpl-&gt;mainFrameImpl()-&gt;frameView()-&gt;layout();

How does this differ from WebView::layout?  I&apos;m not sur eI understand why we need to pierce the API here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730778</commentid>
    <comment_count>28</comment_count>
      <attachid>166273</attachid>
    <who name="">yusufo</who>
    <bug_when>2012-09-28 10:23:38 -0700</bug_when>
    <thetext>Created attachment 166273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730814</commentid>
    <comment_count>29</comment_count>
      <attachid>166273</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 11:05:42 -0700</bug_when>
    <thetext>Comment on attachment 166273
Patch

Thanks for make the tests use more of the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730818</commentid>
    <comment_count>30</comment_count>
      <attachid>166273</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 11:12:17 -0700</bug_when>
    <thetext>Comment on attachment 166273
Patch

Rejecting attachment 166273 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14062399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730822</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 11:15:45 -0700</bug_when>
    <thetext>I don&apos;t know what&apos;s causing that error, but it sure is annoying.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730826</commentid>
    <comment_count>32</comment_count>
      <attachid>166273</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 11:18:21 -0700</bug_when>
    <thetext>Comment on attachment 166273
Patch

Rejecting attachment 166273 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14070325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730842</commentid>
    <comment_count>33</comment_count>
    <who name="">yusufo</who>
    <bug_when>2012-09-28 11:43:01 -0700</bug_when>
    <thetext>Do I need to change the ChangeLog to something else than I currently have? 


(In reply to comment #32)
&gt; (From update of attachment 166273 [details])
&gt; Rejecting attachment 166273 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1
&gt; 
&gt; ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).
&gt; 
&gt; Full output: http://queues.webkit.org/results/14070325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730843</commentid>
    <comment_count>34</comment_count>
      <attachid>166273</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-09-28 11:44:16 -0700</bug_when>
    <thetext>Comment on attachment 166273
Patch

It looks fine to me.  Let&apos;s whack it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730856</commentid>
    <comment_count>35</comment_count>
      <attachid>166273</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 11:54:39 -0700</bug_when>
    <thetext>Comment on attachment 166273
Patch

Clearing flags on attachment: 166273

Committed r129928: &lt;http://trac.webkit.org/changeset/129928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730857</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 11:54:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732449</commentid>
    <comment_count>37</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-02 02:33:19 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; All reviewed patches have been landed.  Closing bug.

fyi, I changed EXPECT_EQ(true/false, ...) to EXPECT_TRUE/FALSE(...) as clang was unhappy about the former: http://trac.webkit.org/changeset/130141</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150266</attachid>
            <date>2012-06-29 15:39:48 -0700</date>
            <delta_ts>2012-08-17 14:57:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120629153948.patch</filename>
            <type>text/plain</type>
            <size>21565</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNiYTc3Yzg0MWM5YjI0MGQwMjFmMDhmM2IwOWYyMjk1NWFmMmQ5M2IuLmFmMmQ0NjMwNjQ5NDA0
ZjAwNDkxZWQ4OWY5NjI3Y2Q5N2EwY2EzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMjkgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyB0aGUgRG91YmxlVGFwIGdlc3R1cmUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp6b29tVG9G
aW5kSW5QYWdlUmVjdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQp
OgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyMTM5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCAyNmRmNDM2NGQwYzY5M2FhNDMxZDI5MjYzNmZkYWNjOTNjN2UzYTc4Li4yYTJhNjUyMDgwMGRj
NmI1ODg4NjM4ZmY0MWZkMDZiMDMzMTAwOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xODYsMTMgKzE4NiwxNyBAQAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCitzdGF0aWMgY29uc3QgZmxvYXQgZGV2
aWNlRHBpVW5pdCA9IDE2MDsKKwogLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudHMgY29udHJvbCBw
YXJhbWV0ZXJzIGZvciBhdXRvbWF0ZWQgc2NhbGluZyBvZiB3ZWJwYWdlcwogLy8gKHN1Y2ggYXMg
ZHVlIHRvIGEgZG91YmxlIHRhcCBnZXN0dXJlIG9yIGZpbmQgaW4gcGFnZSBldGMuKS4gVGhlc2Ug
YXJlCiAvLyBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkLgogc3RhdGljIGNvbnN0IGludCB0b3Vj
aFBvaW50UGFkZGluZyA9IDMyOworc3RhdGljIGNvbnN0IGludCBub25Vc2VySW5pdGlhdGVkUG9p
bnRQYWRkaW5nID0gMTE7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2NhbGVEaWZmZXJlbmNlID0g
MC4wMWY7CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnREZWZhdWx0TWFy
Z2luID0gNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQ29udGVudE1pbmltdW1N
YXJnaW4gPSAyOworc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpvb21NaW5NYXggPSAxLjI7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02NTcsNiArNjYxLDkgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQogYm9vbCBXZWJW
aWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQp
CiB7CiAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRG91YmxlVGFwOgorICAgICAgICBhbmltYXRlWm9vbUFyb3VuZFBvaW50KFdlYlBvaW50
KGV2ZW50LngsIGV2ZW50LnkpLCBEb3VibGVUYXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CiAgICAgICAgIG1fbGFz
dFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAgICAgICAgbV9s
YXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmds
b2JhbFkpOwpAQCAtNzA0LDcgKzcxMSw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxVcGRhdGU6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKLSAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTog
ewpAQCAtOTgyLDI3ICs5ODgsNzQgQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6d2lkZW5SZWN0V2l0
aGluUGFnZUJvdW5kcyhjb25zdCBXZWJSZWN0JiBzb3VyY2UsIGludCB0YXJnZXQKICAgICByZXR1
cm4gV2ViUmVjdChuZXdYLCBzb3VyY2UueSwgbmV3V2lkdGgsIHNvdXJjZS5oZWlnaHQpOwogfQog
Ci12b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGNvbnN0
IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSwgZmxvYXQmIHNjYWxlLCBX
ZWJQb2ludCYgc2Nyb2xsKQordm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xs
Rm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5cGUs
IGZsb2F0JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCAmaXNBbmNob3IpCiB7CiAgICAg
c2NhbGUgPSBwYWdlU2NhbGVGYWN0b3IoKTsKICAgICBzY3JvbGwueCA9IHNjcm9sbC55ID0gMDsK
ICAgICBXZWJSZWN0IHRhcmdldFJlY3QgPSBoaXRSZWN0OworICAgIC8vIFBhZGRpbmcgb25seSBk
ZXBlbmRzIG9uIHBhZ2Ugc2NhbGUgd2hlbiB0cmlnZ2VyZWQgYnkgbWFudWFsbHkgdGFwcGluZwor
ICAgIGludCBwYWRkaW5nID0gKHpvb21UeXBlID09IERvdWJsZVRhcCkgPyB0b3VjaFBvaW50UGFk
ZGluZyA6IG5vblVzZXJJbml0aWF0ZWRQb2ludFBhZGRpbmc7CiAgICAgaWYgKHRhcmdldFJlY3Qu
aXNFbXB0eSgpKQotICAgICAgICB0YXJnZXRSZWN0LndpZHRoID0gdGFyZ2V0UmVjdC5oZWlnaHQg
PSB0b3VjaFBvaW50UGFkZGluZzsKKyAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCA9IHRhcmdldFJl
Y3QuaGVpZ2h0ID0gcGFkZGluZzsKIAogICAgIFdlYlJlY3QgcmVjdCA9IGNvbXB1dGVCbG9ja0Jv
dW5kcyh0YXJnZXRSZWN0LCB6b29tVHlwZSk7CiAKLSAgICBjb25zdCBmbG9hdCBvdmVydmlld1Nj
YWxlID0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOworICAgIGlmICh6b29tVHlwZSA9PSBGaW5k
SW5QYWdlICYmIHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEtlZXAgY3VycmVudCBzY2Fs
ZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5IHdpbGwgbm9ybWFsbHkgYWxyZWFkeQorICAgICAg
ICAvLyBiZSB2aXNpYmxlKS4gVE9ETyhqb2hubWUpOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3Qg
YWx3YXlzIHRydWUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBib29sIHNjYWxlVW5j
aGFuZ2VkID0gdHJ1ZTsKICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBh
Z2VzIHNob3VsZCBiZSBhcyBsZWdpYmxlIGFzIG9uIGRlc2t0b3Agd2hlbiBhdCBkcGkgc2NhbGUs
IHNvIG5vCiAgICAgICAgIC8vIG5lZWQgdG8gem9vbSBpbiBmdXJ0aGVyIHdoZW4gYXV0b21hdGlj
YWxseSBkZXRlcm1pbmluZyB6b29tIGxldmVsCiAgICAgICAgIC8vIChhZnRlciBkb3VibGUgdGFw
LCBmaW5kIGluIHBhZ2UsIGV0YyksIHRob3VnaCB0aGUgdXNlciBzaG91bGQgc3RpbGwKICAgICAg
ICAgLy8gYmUgYWxsb3dlZCB0byBtYW51YWxseSBwaW5jaCB6b29tIGluIGZ1cnRoZXIgaWYgdGhl
eSBkZXNpcmUuCi0gICAgICAgIGNvbnN0IGZsb2F0IG1heFNjYWxlID0gZGV2aWNlU2NhbGVGYWN0
b3IoKTsKLQotICAgICAgICBjb25zdCBmbG9hdCBkZWZhdWx0TWFyZ2luID0gZG91YmxlVGFwWm9v
bUNvbnRlbnREZWZhdWx0TWFyZ2luICogZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgY29u
c3QgZmxvYXQgbWluaW11bU1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50TWluaW11bU1hcmdp
biAqIGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZsb2F0IGRldmljZURwaVNj
YWxlID0gc2NyZWVuSG9yaXpvbnRhbERQSShtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKSAv
IGRldmljZURwaVVuaXQ7CisgICAgICAgIGZsb2F0IGFkanVzdGVkRHBpU2NhbGUgPSBkZXZpY2VE
cGlTY2FsZTsKKyAgICAgICAgLy8gVGhlcmUgYXJlIHRocmVlIG1haW4gY2FzZXMgaGVyZSB0aGF0
IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KKyAgICAgICAgLy8gMSkgb3ZlcnZpZXcgPCBtaW5fbWF4
IDwgYWRqdXN0ZWRfZHBpCisgICAgICAgIC8vICAgIC0gdGhpcyBhcHBsaWVzIHRvIG1vc3QgZGVz
a3RvcCBzaXRlcyB2aWV3ZWQgb24gYSBwaG9uZTsKKyAgICAgICAgLy8gICAgLSBpbiB0aGlzIGNh
c2UgZG91YmxlLXRhcCBvbiB1bmJvb3N0ZWQgdGV4dCBzaG91bGQgem9vbSB0bworICAgICAgICAv
LyAgICAgIGFkanVzdGVkX2RwaSBhcyB0aGF0IGlzIHRoZSB6b29tIGxldmVsIHJlcXVpcmVkIGZv
ciBsZWdpYmlsaXR5OworICAgICAgICAvLyAgICAtIHVubGVzcyB3ZSdyZSBhbHJlYWR5IGF0IGFk
anVzdGVkX2RwaSwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgem9vbQorICAgICAgICAvLyAgICAg
IG91dCB0byBvdmVydmlldzsKKyAgICAgICAgLy8gICAgLSBzbyBtYXggc2NhbGUgPSBhZGp1c3Rl
ZF9kcGkKKyAgICAgICAgLy8gMikgYWRqdXN0ZWRfZHBpIDwgb3ZlcnZpZXcgPCBtaW5fbWF4Cisg
ICAgICAgIC8vICAgIC0gdGhpcyBhcHBsaWVzIHRvIGRlc2t0b3Agc2l0ZXMgdmlld2VkIG9uIGEg
bGFuZHNjYXBlIDEwIiB0YWJsZXQsCisgICAgICAgIC8vICAgICAgd2hlcmUgdGhlIG92ZXJ2aWV3
IHNjYWxlIGlzIGFscmVhZHkgbW9yZSB6b29tZWQgaW4gdGhhbiBkcGkgc2NhbGU7CisgICAgICAg
IC8vICAgIC0gaW4gdGhpcyBjYXNlIGRvdWJsZS10YXAgb24gdW5ib29zdGVkIHRleHQgYXQgb3Zl
cnZpZXcgc2hvdWxkIHpvb20gdG8KKyAgICAgICAgLy8gICAgICBtaW5fbWF4LCBvdGhlcndpc2Ug
ZG91YmxlLXRhcCBmcm9tIG92ZXJ2aWV3IHdpbGwgZG8gbm90aGluZzsKKyAgICAgICAgLy8gICAg
LSBkb3VibGUtdGFwIG9uIHVuYm9vc3RlZCB0ZXh0IHdoZW4gbm90IGF0IG92ZXJ2aWV3IHNob3Vs
ZCB6b29tIG91dCB0bworICAgICAgICAvLyAgICAgIG92ZXJ2aWV3LCBhcyB3ZSBrbm93IGV2ZXJ5
dGhpbmcgc2hvdWxkIGJlIGxlZ2libGUgYXQgb3ZlcnZpZXcuCisgICAgICAgIC8vICAgIC0gc28g
bWF4X3NjYWxlID0geyBtaW5fbWF4ICBbaWYgYXQgb3ZlcnZpZXddCisgICAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgeyBvdmVydmlldyBbaWYgbm90IGF0IG92ZXJ2aWV3XQorICAgICAgICAv
LyAzKSBvdmVydmlldyA8IGFkanVzdGVkX2RwaSA8IG1pbl9tYXgKKyAgICAgICAgLy8gICAgLSB0
aGlzIGFwcGxpZXMgdG8gbW9iaWxlIHNpdGVzICh3aGVyZSBvdmVydmlldyA9IGRwaSBzY2FsZSks
IHdoZXJlCisgICAgICAgIC8vICAgICAgZm9udF9zY2FsZV9mYWN0b3IgPCBrRG91YmxlVGFwWm9v
bU1pbk1heDsKKyAgICAgICAgLy8gICAgLSBpbiB0aGlzIGNhc2UgZG91YmxlLXRhcCBvbiB1bmJv
b3N0ZWQgdGV4dCBhdCBvdmVydmlldyBzaG91bGQgem9vbSB0bworICAgICAgICAvLyAgICAgIG1p
bl9tYXgsIG90aGVyd2lzZSBkb3VibGUtdGFwIGZyb20gb3ZlcnZpZXcgd2lsbCB6b29tIGJ5IG9u
bHkgdGhlCisgICAgICAgIC8vICAgICAgZm9udCBzY2FsZSBmYWN0b3IgKGkuZS4gdG8gYWRqdXN0
ZWRfZHBpKSwgd2hpY2ggY291bGQgYmUgYXMgbGl0dGxlCisgICAgICAgIC8vICAgICAgYXMgYSA1
JSB6b29tOworICAgICAgICAvLyAgICAtIGhvd2V2ZXIgZG91YmxlLXRhcCB3aGVuIG5vdCBhdCBv
dmVydmlldyAoaS5lLiB3aGVuIHpvb21lZCBpbikgc2hvdWxkCisgICAgICAgIC8vICAgICAgYWx3
YXlzIHpvb20gb3V0IHRvIG92ZXJ2aWV3LCBzbyB0aGF0IHRoZSBiZWhhdmlvdXIgaXMgY29uc2lz
dGVudAorICAgICAgICAvLyAgICAgIHdpdGggY2FzZSAyLgorICAgICAgICAvLyAgICAtIHNvIG1h
eF9zY2FsZSA9IHsgbWluX21heCAgW2lmIGF0IG92ZXJ2aWV3XQorICAgICAgICAvLyAgICAgICAg
ICAgICAgICAgICAgIHsgb3ZlcnZpZXcgW2lmIG5vdCBhdCBvdmVydmlld10KKyAgICAgICAgLy8g
Tm90ZTogaXQgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHdlIGNhbm5vdCBlbnRlciBhIHRo
cmVlLXN0ZXAgY3ljbGUKKyAgICAgICAgLy8gZm9yIGRvdWJsZS10YXAgem9vbS4gSWYgbWF4X3Nj
YWxlIGlzIGNvbnN0YW50IChhcyBpbiBjYXNlIDEpLCB3ZSBhcmUgb2sKKyAgICAgICAgLy8gYXMg
d2Ugd2lsbCBnbzoKKyAgICAgICAgLy8gYXJiaXRyYXJ5X3NjYWxlIC0+IG1heF9zY2FsZSAtPiBv
dmVydmlldyAtPiBtYXhfc2NhbGUgLT4gb3ZlcnZpZXcgZXRjLgorICAgICAgICAvLyBJbiBjYXNl
cyAyIGFuZCAzIHdlIGFyZSBvayBhcyB3ZSB3aWxsIGdvOgorICAgICAgICAvLyBhcmJpdHJhcnlf
c2NhbGUgLT4gb3ZlcnZpZXcgLT4gbWluX21heCAtPiBvdmVydmlldyAtPiBtaW5fbWF4IGV0Yy4K
KyAgICAgICAgY29uc3QgZmxvYXQgbWluTWF4U2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3IgKiBkb3VibGVUYXBab29tTWluTWF4OworICAgICAgICBmbG9hdCBtYXhTY2FsZSA9IGFkanVz
dGVkRHBpU2NhbGU7CisgICAgICAgIGlmIChhZGp1c3RlZERwaVNjYWxlIDwgbWluTWF4U2NhbGUp
CisgICAgICAgICAgICBtYXhTY2FsZSA9IChzY2FsZSA9PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3IpID8gbWluTWF4U2NhbGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisKKyAgICAgICAg
Y29uc3QgZmxvYXQgZGVmYXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1h
cmdpbiAqIGRldmljZURwaVNjYWxlOworICAgICAgICBjb25zdCBmbG9hdCBtaW5pbXVtTWFyZ2lu
ID0gZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luICogZGV2aWNlRHBpU2NhbGU7CiAg
ICAgICAgIC8vIFdlIHdhbnQgdGhlIG1hcmdpbnMgdG8gaGF2ZSB0aGUgc2FtZSBwaHlzaWNhbCBz
aXplLCB3aGljaCBtZWFucyB3ZQogICAgICAgICAvLyBuZWVkIHRvIGV4cHJlc3MgdGhlbSBpbiBw
b3N0LXNjYWxlIHNpemUuIFRvIGRvIHRoYXQgd2UnZCBuZWVkIHRvIGtub3cKICAgICAgICAgLy8g
dGhlIHNjYWxlIHdlJ3JlIHNjYWxpbmcgdG8sIGJ1dCB0aGF0IGRlcGVuZHMgb24gdGhlIG1hcmdp
bnMuIEluc3RlYWQKQEAgLTEwMjEsNDggKzEwNzQsNzQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRv
Wm8KICAgICAgICAgc2NhbGVVbmNoYW5nZWQgPSBmYWJzKHBhZ2VTY2FsZUZhY3RvcigpIC0gc2Nh
bGUpIDwgbWluU2NhbGVEaWZmZXJlbmNlOwogICAgIH0KIAotICAgIGlmICh6b29tVHlwZSA9PSBE
b3VibGVUYXApIHsKLSAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5jaGFuZ2Vk
KSB7Ci0gICAgICAgICAgICAvLyBab29tIG91dCB0byBvdmVydmlldyBtb2RlLgotICAgICAgICAg
ICAgaWYgKG92ZXJ2aWV3U2NhbGUpCi0gICAgICAgICAgICAgICAgc2NhbGUgPSBvdmVydmlld1Nj
YWxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZWN0
LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5vIG5lZWQgdG8g
c2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKLSAgICAgICAgLy8gYmUgdmlzaWJs
ZSkuIEZJWE1FOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3QgYWx3YXlzIHRydWUuCi0gICAgICAg
IHJldHVybjsKKyAgICBpZiAoem9vbVR5cGUgPT0gRG91YmxlVGFwICYmIChyZWN0LmlzRW1wdHko
KSB8fCBzY2FsZVVuY2hhbmdlZCkpIHsKKyAgICAgICAgLy8gWm9vbSBvdXQgdG8gbWluaW11bSBz
Y2FsZS4KKyAgICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisgICAgICAg
IHNjcm9sbCA9IFdlYlBvaW50KGhpdFJlY3QueCwgaGl0UmVjdC55KTsKKyAgICAgICAgaXNBbmNo
b3IgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGJl
aW5nIGNhbGxlZCBmb3IgYXV0byB6b29tIGR1cmluZyBmaW5kIGluIHBhZ2UsCisgICAgICAgIC8v
IHRoZW4gaWYgdGhlIHVzZXIgbWFudWFsbHkgem9vbXMgaW4gaXQnZCBiZSBuaWNlIHRvIHByZXNl
cnZlIHRoZQorICAgICAgICAvLyByZWxhdGl2ZSBpbmNyZWFzZSBpbiB6b29tIHRoZXkgY2F1c2Vk
IChpZiB0aGV5IHpvb20gb3V0IHRoZW4gaXQncyBvaworICAgICAgICAvLyB0byB6b29tIHRoZW0g
YmFjayBpbiBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJsZSB3aXRoIG91ciBjdXJyZW50Cisg
ICAgICAgIC8vIGRvdWJsZS10YXAgem9vbSBzdHJhdGVneSAoZml0dGluZyB0aGUgY29udGFpbmlu
ZyBibG9jayB0byB0aGUgc2NyZWVuKQorICAgICAgICAvLyB0aG91Z2guCisKKyAgICAgICAgZmxv
YXQgc2NyZWVuSGVpZ2h0ID0gbV9zaXplLmhlaWdodCAvIHNjYWxlICogcGFnZVNjYWxlRmFjdG9y
KCk7CisgICAgICAgIGZsb2F0IHNjcmVlbldpZHRoID0gbV9zaXplLndpZHRoIC8gc2NhbGUgKiBw
YWdlU2NhbGVGYWN0b3IoKTsKKworICAgICAgICAvLyBTY3JvbGwgdG8gdmVydGljYWxseSBhbGln
biB0aGUgYmxvY2suCisgICAgICAgIGlmIChyZWN0LmhlaWdodCA8IHNjcmVlbkhlaWdodCkgewor
ICAgICAgICAgICAgLy8gVmVydGljYWxseSBjZW50ZXIgc2hvcnQgYmxvY2tzLgorICAgICAgICAg
ICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0LmhlaWdodCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgcG9zaXRpb24gd2UncmUgem9vbWluZyB0
byAoKyBwYWRkaW5nKSBpc24ndCBvZmYgdGhlIGJvdHRvbSBvZgorICAgICAgICAgICAgLy8gdGhl
IHNjcmVlbi4KKyAgICAgICAgICAgIHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55LCBoaXRSZWN0
LnkgKyBwYWRkaW5nIC0gc2NyZWVuSGVpZ2h0KTsKKyAgICAgICAgfSAvLyBPdGhlcndpc2UgdG9w
IGFsaWduIHRoZSBibG9jay4KKworICAgICAgICAvLyBEbyB0aGUgc2FtZSB0aGluZyBmb3IgaG9y
aXpvbnRhbCBhbGlnbm1lbnQuCisgICAgICAgIGlmIChyZWN0LndpZHRoIDwgc2NyZWVuV2lkdGgp
CisgICAgICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0aCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlY3QueCA9IG1heDxmbG9hdD4ocmVjdC54LCBo
aXRSZWN0LnggKyBwYWRkaW5nIC0gc2NyZWVuV2lkdGgpOworCisgICAgICAgIHNjcm9sbC54ID0g
cmVjdC54OworICAgICAgICBzY3JvbGwueSA9IHJlY3QueTsKKyAgICAgICAgaXNBbmNob3IgPSBm
YWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBjYWxsZWQgZm9y
IGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAotICAgIC8vIHRoZW4gaWYgdGhlIHVzZXIg
bWFudWFsbHkgem9vbXMgaW4gaXQnZCBiZSBuaWNlIHRvIHByZXNlcnZlIHRoZSByZWxhdGl2ZQot
ICAgIC8vIGluY3JlYXNlIGluIHpvb20gdGhleSBjYXVzZWQgKGlmIHRoZXkgem9vbSBvdXQgdGhl
biBpdCdzIG9rIHRvIHpvb20KLSAgICAvLyB0aGVtIGJhY2sgaW4gYWdhaW4pLiBUaGlzIGlzbid0
IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudCBkb3VibGUtdGFwCi0gICAgLy8gem9vbSBzdHJh
dGVneSAoZml0dGluZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVuKSB0aG91Z2gu
CisgICAgc2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlKTsKKyAgICBz
Y3JvbGwgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHNj
cm9sbCk7CisgICAgZmxvYXQgc2NhbGVEZWx0YSA9IHNjYWxlIC8gcGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgc2Nyb2xsID0gV2ViUG9pbnQoc2Nyb2xsLnggKiBzY2FsZURlbHRhLCBzY3JvbGwueSAq
IHNjYWxlRGVsdGEpOworICAgIGlmICghaXNBbmNob3IpCisgICAgICBzY3JvbGwgPSBjbGFtcE9m
ZnNldEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7Cit9CisjZW5kaWYKKwordm9pZCBXZWJWaWV3SW1w
bDo6YW5pbWF0ZVpvb21Bcm91bmRQb2ludChXZWJQb2ludCBwdCwgQXV0b1pvb21UeXBlIHpvb21U
eXBlKQoreworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBpZiAoIW1haW5GcmFtZUlt
cGwoKSkKKyAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHNjcmVlbkhlaWdodCA9IG1fc2l6ZS5o
ZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgIGZsb2F0IHNjcmVlbldpZHRo
ID0gbV9zaXplLndpZHRoIC8gc2NhbGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBmbG9hdCBz
Y2FsZTsKKyAgICBXZWJQb2ludCBzY3JvbGw7CisgICAgYm9vbCBpc0FuY2hvcjsKKyAgICBjb21w
dXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocHQueCwgcHQueSwgMCwgMCksIHpv
b21UeXBlLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CiAKLSAgICAvLyBTY3JvbGwgdG8gdmVy
dGljYWxseSBhbGlnbiB0aGUgYmxvY2suCi0gICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVuSGVp
Z2h0KSB7Ci0gICAgICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KLSAgICAg
ICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0LmhlaWdodCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgLy8gRW5zdXJlIHBvc2l0aW9uIHdlJ3JlIHpvb21pbmcgdG8gKCsgcGFk
ZGluZykgaXNuJ3Qgb2ZmIHRoZSBib3R0b20gb2YKLSAgICAgICAgLy8gdGhlIHNjcmVlbi4KLSAg
ICAgICAgcmVjdC55ID0gbWF4PGZsb2F0PihyZWN0LnksIGhpdFJlY3QueSArIHRvdWNoUG9pbnRQ
YWRkaW5nIC0gc2NyZWVuSGVpZ2h0KTsKLSAgICB9IC8vIE90aGVyd2lzZSB0b3AgYWxpZ24gdGhl
IGJsb2NrLgotCi0gICAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhvcml6b250YWwgYWxpZ25t
ZW50LgotICAgIGlmIChyZWN0LndpZHRoIDwgc2NyZWVuV2lkdGgpCi0gICAgICAgIHJlY3QueCAt
PSAwLjUgKiAoc2NyZWVuV2lkdGggLSByZWN0LndpZHRoKTsKLSAgICBlbHNlCi0gICAgICAgIHJl
Y3QueCA9IG1heDxmbG9hdD4ocmVjdC54LCBoaXRSZWN0LnggKyB0b3VjaFBvaW50UGFkZGluZyAt
IHNjcmVlbldpZHRoKTsKKyAgICBkb3VibGUgYW5pbWF0ZVNlYyA9ICh6b29tVHlwZSA9PSBEb3Vi
bGVUYXApID8gMC4yNSA6IDA7CisgICAgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsLCBp
c0FuY2hvciwgc2NhbGUsIGFuaW1hdGVTZWMpOworI2VuZGlmCit9CiAKLSAgICBzY3JvbGwueCA9
IHJlY3QueDsKLSAgICBzY3JvbGwueSA9IHJlY3QueTsKK3ZvaWQgV2ViVmlld0ltcGw6Onpvb21U
b0ZpbmRJblBhZ2VSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgLy8gVE9ETyhqb2hu
bWUpOiBQYXNzIGFjdHVhbCByZWN0IHRvIGNvbXB1dGVCbG9ja0JvdW5kcyBpbnN0ZWFkIG9mCisg
ICAgLy8gYXJiaXRyYXJpbHkgdXNpbmcgY2VudGVyICsgMTFweCBwYWRkaW5nLgorICAgIGFuaW1h
dGVab29tQXJvdW5kUG9pbnQoSW50UmVjdChyZWN0KS5jZW50ZXIoKSwgRmluZEluUGFnZSk7CiB9
Ci0jZW5kaWYKIAogdm9pZCBXZWJWaWV3SW1wbDo6bnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnND
aGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mV2hlZWxIYW5kbGVycykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGY2NTc1MDRmMmFkZGRkZWJkYTIwYmM4MmYy
N2ViYTViM2FmODI4ODMuLjcwODI0YmUxMWZlOWNiZjNkYzc4YTViNzRkYzQzMzMzODAyYTE1NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTk1LDYgKzE5
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxGb2N1c2VkTm9kZUludG9WaWV3KCk7CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbEZvY3VzZWROb2RlSW50b1JlY3QoY29uc3QgV2ViUmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCB6b29tVG9GaW5kSW5QYWdlUmVjdChjb25zdCBXZWJSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGFkdmFuY2VGb2N1cyhib29sIHJldmVyc2UpOwogICAgIHZpcnR1YWwgZG91YmxlIHpv
b21MZXZlbCgpOwogICAgIHZpcnR1YWwgZG91YmxlIHNldFpvb21MZXZlbChib29sIHRleHRPbmx5
LCBkb3VibGUgem9vbUxldmVsKTsKQEAgLTU0NSw4ICs1NDYsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmdWxsRnJhbWVQbHVnaW5ab29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpOwogCiAj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Nyb2xs
Rm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0JiBz
Y2FsZSwgV2ViUG9pbnQmIHNjcm9sbCk7CisgICAgdm9pZCBjb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSwgZmxvYXQmIHNj
YWxlLCBXZWJQb2ludCYgc2Nyb2xsLCBib29sICZpc0FuY2hvcik7CiAjZW5kaWYKKyAgICB2b2lk
IGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9pbnQgcHQsIEF1dG9ab29tVHlwZSk7CiAKICAg
ICB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggNGUyYjBjNWVhMDZi
OWU2MTExN2ViODE3MmIyYTBkNGViNTVjMmMyOC4uZmM1YWVlZjM4ZTg5ZWU0NjczMjI3YjBlNTZj
NzkwYzYxYjk5ZTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJh
bWVUZXN0LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZvcm1X
aXRoTnVsbEZyYW1lKQogVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2hyb21lUGFnZUphdmFzY3JpcHQp
CiB7CiAgICAgcmVnaXN0ZXJNb2NrZWRDaHJvbWVVUkxMb2FkKCJoaXN0b3J5Lmh0bWwiKTsKLSAK
KwogICAgIC8vIFBhc3MgdHJ1ZSB0byBlbmFibGUgSmF2YVNjcmlwdC4KICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9jaHJvbWVV
UkwgKyAiaGlzdG9yeS5odG1sIiwgdHJ1ZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBURVNUX0Yo
V2ViRnJhbWVUZXN0LCBEaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjaykKIAogICAg
IC8vIFBhc3MgdHJ1ZSB0byBlbmFibGUgSmF2YVNjcmlwdC4KICAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInBv
c3RtZXNzYWdlX3Rlc3QuaHRtbCIsIHRydWUpOwotICAgIAorCiAgICAgLy8gU2VuZCBhIG1lc3Nh
Z2Ugd2l0aCB0aGUgY29ycmVjdCBvcmlnaW4uCiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gY29ycmVj
dE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEdVUkwobV9iYXNlVVJMKSkpOwogICAg
IFdlYkRPTUV2ZW50IGV2ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuY3Jl
YXRlRXZlbnQoIk1lc3NhZ2VFdmVudCIpOwpAQCAtMzA3LDc2ICszMDcsNzQgQEAgVEVTVF9GKFdl
YkZyYW1lVGVzdCwgQ2FuT3ZlcnJpZGVNYXhpbXVtU2NhbGVGYWN0b3IpCiB9CiAKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IDog
cHVibGljIFdlYlZpZXdDbGllbnQgeworIHB1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYlJlY3Qgd2lu
ZG93UmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fd2luZG93UmVjdDsgfQorICAgIHZpcnR1YWwg
V2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JlZW5JbmZv
OyB9CisKKyAgICBXZWJSZWN0IG1fd2luZG93UmVjdDsKKyAgICBXZWJTY3JlZW5JbmZvIG1fc2Ny
ZWVuSW5mbzsKK307CisKIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tUGFyYW1zVGVz
dCkKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfZm9yX2F1dG9f
em9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwiKTsKIAotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1w
bCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2Vi
Vmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2
X3Rlc3QuaHRtbCIsIHRydWUpKTsKLSAgICBpbnQgcGFnZVdpZHRoID0gNjQwOwotICAgIGludCBw
YWdlSGVpZ2h0ID0gNDgwOwotICAgIGludCBkaXZQb3NYID0gMjAwOwotICAgIGludCBkaXZQb3NZ
ID0gMjAwOwotICAgIGludCBkaXZXaWR0aCA9IDIwMDsKLSAgICBpbnQgZGl2SGVpZ2h0ID0gMTUw
OwotICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnQoMjUwLCAyNTAsIDAsIDApOwotICAgIHdlYlZp
ZXdJbXBsLT5yZXNpemUoV2ViU2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICBEaXZB
dXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9
IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgZmxvYXQgZGV2aWNlRHBp
VW5pdCA9IDE2MDsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0gV2ViUmVjdCgwLCAwLCB2aWV3
cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgY2xpZW50Lm1fc2NyZWVuSW5mby5ob3Jp
em9udGFsRFBJID0gMiAqIGRldmljZURwaVVuaXQ7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJ
bXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVX
ZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19k
aXZfdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5lbmFi
bGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXpl
KHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBh
Z2VTY2FsZUZhY3RvckxpbWl0cygwLjAxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisKKyAgICBXZWJSZWN0IHdpZGVEaXYoMjAw
LCAxMDAsIDQwMCwgMTUwKTsKKyAgICBXZWJSZWN0IHRhbGxEaXYoMjAwLCAzMDAsIDQwMCwgODAw
KTsKKyAgICBXZWJSZWN0IGRvdWJsZVRhcFBvaW50V2lkZSgod2lkZURpdi54ICsgNTApICogd2Vi
Vmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh3aWRlRGl2LnkgKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksIDAs
IDApOworICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnRUYWxsKCh0YWxsRGl2LnggKyA1MCkgKiB3
ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHRhbGxEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwg
MCwgMCk7CiAgICAgZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAgIGJvb2wg
aXNBbmNob3I7CisKKyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdpZGUgZGl2
LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJs
ZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNB
bmNob3IpOworICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRoZSBzY3Jl
ZW4gKG1vZHVsbyBtYXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJlZCAobW9k
dWxvIGludGVnZXIgcm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAo
ZmxvYXQpIHdpZGVEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHdpZGVE
aXYueCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdpZGVEaXYu
eSArIHdpZGVEaXYuaGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAvIDIpOwor
ICAgIEVYUEVDVF9ORUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1RfRVEoZmFs
c2UsIGlzQW5jaG9yKTsKKworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2Nh
bGUsIFdlYlBvaW50KHNjcm9sbC54LCBzY3JvbGwueSkpOworICAgIHdlYlZpZXdJbXBsLT5tYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXQoKTsKIAotICAgIC8vIFRlc3QgZm9yIERv
dWJsZXRhcCBzY2FsaW5nCisgICAgLy8gVGVzdCB6b29tIG91dCBiYWNrIHRvIG1pbmltdW0gc2Nh
bGUuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91
YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBp
c0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNj
YWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBFWFBFQ1RfRVEodHJ1ZSwgaXNBbmNob3IpOwogCi0g
ICAgLy8gVGVzdHMgZm9yIHpvb21pbmcgaW4gYW5kIG91dCB3aXRob3V0IGNsYW1waW5nLgotICAg
IC8vIFNldCBkZXZpY2Ugc2NhbGUgYW5kIHNjYWxlIGxpbWl0cyBzbyB3ZSBkb250IGdldCBjbGFt
cGVkLgotICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0KTsKLSAgICB3ZWJW
aWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rvcihz
Y2FsZSwgV2ViUG9pbnQoMCwgMCkpOworICAgIHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLT5sYXlvdXQoKTsKIAotICAgIC8vIFRlc3Qgem9vbWluZyBpbnRvIGRpdi4K
LSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVU
YXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgZmxv
YXQgc2NhbGVkRGl2V2lkdGggPSBkaXZXaWR0aCAqIHNjYWxlOwotICAgIGZsb2F0IHNjYWxlZERp
dkhlaWdodCA9IGRpdkhlaWdodCAqIHNjYWxlOwotICAgIGludCBoU2Nyb2xsID0gKChkaXZQb3NY
ICogc2NhbGUpIC0gKChwYWdlV2lkdGggLSBzY2FsZWREaXZXaWR0aCkgLyAyKSkgLyBzY2FsZTsK
LSAgICBpbnQgdlNjcm9sbCA9ICgoZGl2UG9zWSAqIHNjYWxlKSAtICgocGFnZUhlaWdodCAtIHNj
YWxlZERpdkhlaWdodCkgLyAyKSkgLyBzY2FsZTsKLSAgICBFWFBFQ1RfTkVBUihwYWdlV2lkdGgg
LyBkaXZXaWR0aCwgc2NhbGUsIDAuMSk7Ci0gICAgRVhQRUNUX0VRKGhTY3JvbGwsIHNjcm9sbC54
KTsKLSAgICBFWFBFQ1RfRVEodlNjcm9sbCwgc2Nyb2xsLnkpOwotCi0gICAgLy8gVGVzdCB6b29t
IG91dCB0byBvdmVydmlldyBzY2FsZS4KLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRT
Y2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBh
Z2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xs
Rm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUs
IHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEsIHNjYWxlKTsKLSAgICBFWFBFQ1RfRVEo
V2ViUG9pbnQoMCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0cyBmb3IgY2xhbXBlZCBzY2Fs
aW5nLgotICAgIC8vIFRlc3QgY2xhbXAgdG8gZGV2aWNlIHNjYWxlOgotICAgIHdlYlZpZXdJbXBs
LT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2NhbGUg
LyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRE
ZXZpY2VTY2FsZUZhY3RvcigyLjUpOwotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRT
Y3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBz
Y2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMi41LCBzY2FsZSk7Ci0KLSAgICAv
LyBUZXN0IGNsYW1wIHRvIG1pbmltdW0gc2NhbGU6Ci0gICAgd2ViVmlld0ltcGwtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJ
bXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZh
Y3RvckxpbWl0cygxLjUgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgNCAvIHdl
YlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0
ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRv
dWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuNSwgc2NhbGUp
OwotICAgIEVYUEVDVF9FUShXZWJQb2ludCgwLCAwKSwgc2Nyb2xsKTsKLQotICAgIC8vIFRlc3Qg
Y2xhbXAgdG8gbWF4aW11bSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRT
Y2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBh
Z2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
NCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLCAzIC8gd2Vi
Vmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRl
U2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6RG91
YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMywgc2NhbGUpOwor
ICAgIC8vIFRlc3QgZG91YmxlLXRhcCB6b29taW5nIGludG8gdGFsbCBkaXYuCisgICAgd2ViVmll
d0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnRUYWxs
LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAg
Ly8gVGhlIGRpdiBzaG91bGQgc3RhcnQgYXQgdGhlIHRvcCBsZWZ0IG9mIHRoZSB2aWV3cG9ydC4K
KyAgICBFWFBFQ1RfTkVBUih2aWV3cG9ydFdpZHRoIC8gKGZsb2F0KSB0YWxsRGl2LndpZHRoLCBz
Y2FsZSwgMC4xKTsKKyAgICBFWFBFQ1RfTkVBUih0YWxsRGl2LnggKiBzY2FsZSwgc2Nyb2xsLngs
IDIwKTsKKyAgICBFWFBFQ1RfTkVBUih0YWxsRGl2LnkgKiBzY2FsZSwgc2Nyb2xsLnksIDIwKTsK
KyAgICBFWFBFQ1RfRVEoZmFsc2UsIGlzQW5jaG9yKTsKIAogICAgIC8vIFRlc3QgZm9yIE5vbi1k
b3VibGV0YXAgc2NhbGluZwotICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMSwg
V2ViUG9pbnQoMCwgMCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0
KTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQgLyB3ZWJW
aWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgLy8gVGVzdCB6b29taW5nIGludG8g
ZGl2LgotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdl
YlJlY3QoMjUwLCAyNTAsIDEwLCAxMCksIFdlYlZpZXdJbXBsOjpGaW5kSW5QYWdlLCBzY2FsZSwg
c2Nyb2xsKTsKLSAgICBFWFBFQ1RfTkVBUihwYWdlV2lkdGggLyBkaXZXaWR0aCwgc2NhbGUsIDAu
MSk7Ci0KLSAgICAvLyBEcm9wIGFueSBwZW5kaW5nIGZha2UgbW91c2UgZXZlbnRzIGZyb20gem9v
bWluZyBiZWZvcmUgbGVhdmluZyB0aGUgdGVzdC4KLSAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmNsZWFyKCk7CisgICAgd2ViVmlld0ltcGwtPmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwg
V2ViVmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICBF
WFBFQ1RfTkVBUih2aWV3cG9ydFdpZHRoIC8gKGZsb2F0KSB3aWRlRGl2LndpZHRoLCBzY2FsZSwg
MC4xKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159213</attachid>
            <date>2012-08-17 14:57:33 -0700</date>
            <delta_ts>2012-09-26 14:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120817145657.patch</filename>
            <type>text/plain</type>
            <size>29771</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDI4YmU0YmIzMGZhNjM2NWZjNTYxZDk4OGJjZGZmYmFhYzc0NzE2NWUuLmIxMDdjMGY0ZTcyZmQ2
ZDYxMTIyYmFmOGNjYTIyZWJkYmM0N2VlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOC0xNCAgSWFpbiBNZXJyaWNrICA8aHVz
a3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGEgdGVzdCB0byBXZWJG
cmFtZVRlc3QgZm9yIHNlbGVjdFJhbmdlIGFuZCB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2lu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwYmQz
ZWExMTZlNGMwNTJkZWFhMDVlNjYzMDc2NGUzMmY5Y2E0MTY4Li41NmM4NzQyZmQ1NjI1YWM5ZGNj
ZGVjNTRkYTBkNzRiZjNiMzUwMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0xODYsMTQgKzE4NiwxOCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCitzdGF0aWMgY29uc3QgZmxvYXQgZGV2aWNlRHBp
VW5pdCA9IDE2MDsKKwogLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudHMgY29udHJvbCBwYXJhbWV0
ZXJzIGZvciBhdXRvbWF0ZWQgc2NhbGluZyBvZiB3ZWJwYWdlcwogLy8gKHN1Y2ggYXMgZHVlIHRv
IGEgZG91YmxlIHRhcCBnZXN0dXJlIG9yIGZpbmQgaW4gcGFnZSBldGMuKS4gVGhlc2UgYXJlCiAv
LyBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkLgogc3RhdGljIGNvbnN0IGludCB0b3VjaFBvaW50
UGFkZGluZyA9IDMyOworc3RhdGljIGNvbnN0IGludCBub25Vc2VySW5pdGlhdGVkUG9pbnRQYWRk
aW5nID0gMTE7CiBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2NhbGVEaWZmZXJlbmNlID0gMC4wMWY7
CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnREZWZhdWx0TWFyZ2luID0g
NTsKIHN0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQ29udGVudE1pbmltdW1NYXJnaW4g
PSAyOwogc3RhdGljIGNvbnN0IGRvdWJsZSBkb3VibGVUYXBab29tQW5pbWF0aW9uRHVyYXRpb25J
blNlY29uZHMgPSAwLjI1Oworc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpvb21NaW5NYXgg
PSAxLjI7CiAKIC8vIENvbnN0YW50cyBmb3Igem9vbWluZyBpbiBvbiBhIGZvY3VzZWQgdGV4dCBm
aWVsZC4KIHN0YXRpYyBjb25zdCBkb3VibGUgc2Nyb2xsQW5kU2NhbGVBbmltYXRpb25EdXJhdGlv
bkluU2Vjb25kcyA9IDAuMjsKQEAgLTM5Myw2ICszOTcsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9pZ25vcmVWaWV3cG9ydFRhZ01h
eGltdW1TY2FsZShmYWxzZSkKICAgICAsIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQoZmFsc2UpCiAg
ICAgLCBtX3NhdmVkUGFnZVNjYWxlRmFjdG9yKDApCisgICAgLCBtX2RvdWJsZVRhcFpvb21JbkVm
ZmVjdChmYWxzZSkKICAgICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9k
b2luZ0RyYWdBbmREcm9wKGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkK
QEAgLTY4Nyw2ICs2OTIsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGRlbHRhKQogYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7CiAgICAgc3dpdGNoIChldmVudC50
eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOiB7CisgICAg
ICAgIGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSksIERv
dWJsZVRhcCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CiAgICAgICAgIG1fbGFzdFdoZWVsUG9zaXRpb24g
PSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAgICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQ
b3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmdsb2JhbFkpOwpAQCAtNzM0
LDcgKzc0Myw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNj
cm9sbEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
UGluY2hCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKICAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTogewpAQCAtMTAzOCwyNyAr
MTA0NiwzNyBAQCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRz
KGNvbnN0IFdlYlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAgIHJldHVybiBXZWJSZWN0KG5l
d1gsIHNvdXJjZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7CiB9CiAKLXZvaWQgV2ViVmll
d0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0
UmVjdCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3Jv
bGwpCit2b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGNv
bnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSwgZmxvYXQmIHNjYWxl
LCBXZWJQb2ludCYgc2Nyb2xsLCBib29sJiBpc0FuY2hvcikKIHsKICAgICBzY2FsZSA9IHBhZ2VT
Y2FsZUZhY3RvcigpOwogICAgIHNjcm9sbC54ID0gc2Nyb2xsLnkgPSAwOwogICAgIFdlYlJlY3Qg
dGFyZ2V0UmVjdCA9IGhpdFJlY3Q7CisgICAgLy8gUGFkZGluZyBvbmx5IGRlcGVuZHMgb24gcGFn
ZSBzY2FsZSB3aGVuIHRyaWdnZXJlZCBieSBtYW51YWxseSB0YXBwaW5nCisgICAgaW50IHBhZGRp
bmcgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKSA/IHRvdWNoUG9pbnRQYWRkaW5nIDogbm9uVXNl
ckluaXRpYXRlZFBvaW50UGFkZGluZzsKICAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCi0g
ICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRSZWN0LmhlaWdodCA9IHRvdWNoUG9pbnRQ
YWRkaW5nOwotCisgICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRSZWN0LmhlaWdodCA9
IHBhZGRpbmc7CiAgICAgV2ViUmVjdCByZWN0ID0gY29tcHV0ZUJsb2NrQm91bmRzKHRhcmdldFJl
Y3QsIHpvb21UeXBlKTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRmluZEluUGFnZSAmJiByZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5vIG5lZWQgdG8gc2Ny
b2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKKyAgICAgICAgLy8gYmUgdmlzaWJsZSku
IFRPRE8oam9obm1lKTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5cyB0cnVlLgorICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgY29uc3QgZmxvYXQgb3ZlcnZpZXdTY2FsZSA9IG1f
bWluaW11bVBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIHNjYWxlVW5jaGFuZ2VkID0gdHJ1ZTsK
ICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBhZ2VzIHNob3VsZCBiZSBh
cyBsZWdpYmxlIGFzIG9uIGRlc2t0b3Agd2hlbiBhdCBkcGkgc2NhbGUsIHNvIG5vCiAgICAgICAg
IC8vIG5lZWQgdG8gem9vbSBpbiBmdXJ0aGVyIHdoZW4gYXV0b21hdGljYWxseSBkZXRlcm1pbmlu
ZyB6b29tIGxldmVsCiAgICAgICAgIC8vIChhZnRlciBkb3VibGUgdGFwLCBmaW5kIGluIHBhZ2Us
IGV0YyksIHRob3VnaCB0aGUgdXNlciBzaG91bGQgc3RpbGwKICAgICAgICAgLy8gYmUgYWxsb3dl
ZCB0byBtYW51YWxseSBwaW5jaCB6b29tIGluIGZ1cnRoZXIgaWYgdGhleSBkZXNpcmUuCi0gICAg
ICAgIGNvbnN0IGZsb2F0IG1heFNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKTsKLQotICAgICAg
ICBjb25zdCBmbG9hdCBkZWZhdWx0TWFyZ2luID0gZG91YmxlVGFwWm9vbUNvbnRlbnREZWZhdWx0
TWFyZ2luICogZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgY29uc3QgZmxvYXQgbWluaW11
bU1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50TWluaW11bU1hcmdpbiAqIGRldmljZVNjYWxl
RmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZsb2F0IGRldmljZURwaVNjYWxlID0gc2NyZWVuSG9y
aXpvbnRhbERQSShtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKSAvIGRldmljZURwaVVuaXQ7
CisgICAgICAgIGZsb2F0IGFkanVzdGVkRHBpU2NhbGUgPSBkZXZpY2VEcGlTY2FsZTsKKyAgICAg
ICAgY29uc3QgZmxvYXQgbWluTWF4U2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgKiBk
b3VibGVUYXBab29tTWluTWF4OworICAgICAgICBmbG9hdCBtYXhTY2FsZSA9IGFkanVzdGVkRHBp
U2NhbGU7CisgICAgICAgIGlmIChhZGp1c3RlZERwaVNjYWxlIDwgbWluTWF4U2NhbGUpCisgICAg
ICAgICAgICBtYXhTY2FsZSA9IChzY2FsZSA9PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpID8g
bWluTWF4U2NhbGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisKKyAgICAgICAgY29uc3Qg
ZmxvYXQgZGVmYXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiAq
IGRldmljZURwaVNjYWxlOworICAgICAgICBjb25zdCBmbG9hdCBtaW5pbXVtTWFyZ2luID0gZG91
YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luICogZGV2aWNlRHBpU2NhbGU7CiAgICAgICAg
IC8vIFdlIHdhbnQgdGhlIG1hcmdpbnMgdG8gaGF2ZSB0aGUgc2FtZSBwaHlzaWNhbCBzaXplLCB3
aGljaCBtZWFucyB3ZQogICAgICAgICAvLyBuZWVkIHRvIGV4cHJlc3MgdGhlbSBpbiBwb3N0LXNj
YWxlIHNpemUuIFRvIGRvIHRoYXQgd2UnZCBuZWVkIHRvIGtub3cKICAgICAgICAgLy8gdGhlIHNj
YWxlIHdlJ3JlIHNjYWxpbmcgdG8sIGJ1dCB0aGF0IGRlcGVuZHMgb24gdGhlIG1hcmdpbnMuIElu
c3RlYWQKQEAgLTEwNjgsNyArMTA4Niw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2Fs
ZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvCiAgICAg
ICAgIHJlY3QgPSB3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRzKHJlY3QsCiAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihkZWZhdWx0TWFyZ2luICogcmVjdC53aWR0aCAvIG1fc2l6ZS53
aWR0aCksCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihtaW5pbXVtTWFyZ2luICog
cmVjdC53aWR0aCAvIG1fc2l6ZS53aWR0aCkpOwotCiAgICAgICAgIC8vIEZpdCBibG9jayB0byBz
Y3JlZW4sIHJlc3BlY3RpbmcgbGltaXRzLgogICAgICAgICBzY2FsZSAqPSBzdGF0aWNfY2FzdDxm
bG9hdD4obV9zaXplLndpZHRoKSAvIHJlY3Qud2lkdGg7CiAgICAgICAgIHNjYWxlID0gbWluKHNj
YWxlLCBtYXhTY2FsZSk7CkBAIC0xMDc3LDQ2ICsxMDk0LDUzIEBAIHZvaWQgV2ViVmlld0ltcGw6
OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwg
QXV0b1pvCiAgICAgICAgIHNjYWxlVW5jaGFuZ2VkID0gZmFicyhwYWdlU2NhbGVGYWN0b3IoKSAt
IHNjYWxlKSA8IG1pblNjYWxlRGlmZmVyZW5jZTsKICAgICB9CiAKLSAgICBpZiAoem9vbVR5cGUg
PT0gRG91YmxlVGFwKSB7Ci0gICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8fCBzY2FsZVVuY2hh
bmdlZCkgewotICAgICAgICAgICAgLy8gWm9vbSBvdXQgdG8gb3ZlcnZpZXcgbW9kZS4KLSAgICAg
ICAgICAgIGlmIChvdmVydmlld1NjYWxlKQotICAgICAgICAgICAgICAgIHNjYWxlID0gb3ZlcnZp
ZXdTY2FsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
cmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gS2VlcCBjdXJyZW50IHNjYWxlIChubyBuZWVk
IHRvIHNjcm9sbCBhcyB4LHkgd2lsbCBub3JtYWxseSBhbHJlYWR5Ci0gICAgICAgIC8vIGJlIHZp
c2libGUpLiBGSVhNRTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5cyB0cnVlLgotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYmVpbmcgY2Fs
bGVkIGZvciBhdXRvIHpvb20gZHVyaW5nIGZpbmQgaW4gcGFnZSwKLSAgICAvLyB0aGVuIGlmIHRo
ZSB1c2VyIG1hbnVhbGx5IHpvb21zIGluIGl0J2QgYmUgbmljZSB0byBwcmVzZXJ2ZSB0aGUgcmVs
YXRpdmUKLSAgICAvLyBpbmNyZWFzZSBpbiB6b29tIHRoZXkgY2F1c2VkIChpZiB0aGV5IHpvb20g
b3V0IHRoZW4gaXQncyBvayB0byB6b29tCi0gICAgLy8gdGhlbSBiYWNrIGluIGFnYWluKS4gVGhp
cyBpc24ndCBjb21wYXRpYmxlIHdpdGggb3VyIGN1cnJlbnQgZG91YmxlLXRhcAotICAgIC8vIHpv
b20gc3RyYXRlZ3kgKGZpdHRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdG8gdGhlIHNjcmVlbikg
dGhvdWdoLgotCi0gICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gbV9zaXplLmhlaWdodCAvIHNjYWxl
ICogcGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgZmxvYXQgc2NyZWVuV2lkdGggPSBtX3NpemUud2lk
dGggLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgLy8gU2Nyb2xsIHRvIHZlcnRp
Y2FsbHkgYWxpZ24gdGhlIGJsb2NrLgotICAgIGlmIChyZWN0LmhlaWdodCA8IHNjcmVlbkhlaWdo
dCkgewotICAgICAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBzaG9ydCBibG9ja3MuCi0gICAgICAg
IHJlY3QueSAtPSAwLjUgKiAoc2NyZWVuSGVpZ2h0IC0gcmVjdC5oZWlnaHQpOworICAgIGlmICh6
b29tVHlwZSA9PSBEb3VibGVUYXAgJiYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5jaGFuZ2Vk
IHx8IG1fZG91YmxlVGFwWm9vbUluRWZmZWN0KSkgeworICAgICAgICAgIC8vIFpvb20gb3V0IHRv
IG1pbmltdW0gc2NhbGUuCisgICAgICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3I7CisgICAgICAgICAgc2Nyb2xsID0gV2ViUG9pbnQoaGl0UmVjdC54LCBoaXRSZWN0LnkpOwor
ICAgICAgICAgIGlzQW5jaG9yID0gdHJ1ZTsKKyAgICAgICAgICBtX2RvdWJsZVRhcFpvb21JbkVm
ZmVjdCA9IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3
ZSdyZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCi0gICAg
ICAgIC8vIHRoZSBzY3JlZW4uCi0gICAgICAgIHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55LCBo
aXRSZWN0LnkgKyB0b3VjaFBvaW50UGFkZGluZyAtIHNjcmVlbkhlaWdodCk7Ci0gICAgfSAvLyBP
dGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9jay4KLQotICAgIC8vIERvIHRoZSBzYW1lIHRoaW5n
IGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KLSAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVlbldp
ZHRoKQotICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0aCk7
Ci0gICAgZWxzZQotICAgICAgICByZWN0LnggPSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54
ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIGlmICh6b29tVHlw
ZSA9PSBEb3VibGVUYXAgJiYgc2NhbGUgIT0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKQorICAg
ICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CisgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgYXV0byB6b29tIGR1cmluZyBmaW5kIGluIHBh
Z2UsCisgICAgICAgIC8vIHRoZW4gaWYgdGhlIHVzZXIgbWFudWFsbHkgem9vbXMgaW4gaXQnZCBi
ZSBuaWNlIHRvIHByZXNlcnZlIHRoZQorICAgICAgICAvLyByZWxhdGl2ZSBpbmNyZWFzZSBpbiB6
b29tIHRoZXkgY2F1c2VkIChpZiB0aGV5IHpvb20gb3V0IHRoZW4gaXQncyBvaworICAgICAgICAv
LyB0byB6b29tIHRoZW0gYmFjayBpbiBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJsZSB3aXRo
IG91ciBjdXJyZW50CisgICAgICAgIC8vIGRvdWJsZS10YXAgem9vbSBzdHJhdGVneSAoZml0dGlu
ZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVuKQorICAgICAgICAvLyB0aG91Z2gu
CisKKyAgICAgICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gbV9zaXplLmhlaWdodCAvIHNjYWxlICog
cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGZsb2F0IHNjcmVlbldpZHRoID0gbV9zaXplLndp
ZHRoIC8gc2NhbGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKKworICAgICAgICAvLyBTY3JvbGwgdG8g
dmVydGljYWxseSBhbGlnbiB0aGUgYmxvY2suCisgICAgICAgIGlmIChyZWN0LmhlaWdodCA8IHNj
cmVlbkhlaWdodCkgeworICAgICAgICAgICAgLy8gVmVydGljYWxseSBjZW50ZXIgc2hvcnQgYmxv
Y2tzLgorICAgICAgICAgICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0Lmhl
aWdodCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgcG9zaXRpb24g
d2UncmUgem9vbWluZyB0byAoKyBwYWRkaW5nKSBpc24ndCBvZmYgdGhlIGJvdHRvbSBvZgorICAg
ICAgICAgICAgLy8gdGhlIHNjcmVlbi4KKyAgICAgICAgICAgIHJlY3QueSA9IG1heDxmbG9hdD4o
cmVjdC55LCBoaXRSZWN0LnkgKyBwYWRkaW5nIC0gc2NyZWVuSGVpZ2h0KTsKKyAgICAgICAgfSAv
LyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9jay4KKworICAgICAgICAvLyBEbyB0aGUgc2Ft
ZSB0aGluZyBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuCisgICAgICAgIGlmIChyZWN0LndpZHRo
IDwgc2NyZWVuV2lkdGgpCisgICAgICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldpZHRo
IC0gcmVjdC53aWR0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlY3QueCA9IG1heDxm
bG9hdD4ocmVjdC54LCBoaXRSZWN0LnggKyBwYWRkaW5nIC0gc2NyZWVuV2lkdGgpOworICAgICAg
ICBzY3JvbGwueCA9IHJlY3QueDsKKyAgICAgICAgc2Nyb2xsLnkgPSByZWN0Lnk7CisgICAgICAg
IGlzQW5jaG9yID0gZmFsc2U7CisgICAgfQogCi0gICAgc2Nyb2xsLnggPSByZWN0Lng7Ci0gICAg
c2Nyb2xsLnkgPSByZWN0Lnk7CisgICAgc2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGlt
aXRzKHNjYWxlKTsKKyAgICBzY3JvbGwgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHNjcm9sbCk7CisgICAgZmxvYXQgc2NhbGVEZWx0YSA9IHNjYWxlIC8g
cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgc2Nyb2xsID0gV2ViUG9pbnQoc2Nyb2xsLnggKiBzY2Fs
ZURlbHRhLCBzY3JvbGwueSAqIHNjYWxlRGVsdGEpOworICAgIGlmICghaXNBbmNob3IpCisgICAg
ICBzY3JvbGwgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7CiB9CiAjZW5kaWYK
IApAQCAtMTEyOCw3ICsxMTUyLDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZVpvb21Bcm91
bmRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIEF1dG9ab29tVHlwZSB6b28KIAogICAgIGZs
b2F0IHNjYWxlOwogICAgIFdlYlBvaW50IHNjcm9sbDsKLSAgICBjb21wdXRlU2NhbGVBbmRTY3Jv
bGxGb3JIaXRSZWN0KFdlYlJlY3QocG9pbnQueCgpLCBwb2ludC55KCksIDAsIDApLCB6b29tVHlw
ZSwgc2NhbGUsIHNjcm9sbCk7CisgICAgYm9vbCBpc0FuY2hvcjsKKyAgICBXZWJQb2ludCBwdCA9
IHBvaW50OworICAgIGNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdChwdC54
LCBwdC55LCAwLCAwKSwgem9vbVR5cGUsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKIAogICAg
IGJvb2wgaXNEb3VibGVUYXAgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKTsKICAgICBkb3VibGUg
ZHVyYXRpb25JblNlY29uZHMgPSBpc0RvdWJsZVRhcCA/IGRvdWJsZVRhcFpvb21BbmltYXRpb25E
dXJhdGlvbkluU2Vjb25kcyA6IDA7CkBAIC0zMzA4LDggKzMzMzQsMTAgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBpc05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZpZ2F0
aW9uV2l0aGluUGEKICAgICBtX25ld05hdmlnYXRpb25Mb2FkZXIgPSAwOwogI2VuZGlmCiAgICAg
bV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoKmlzTmV3TmF2aWdhdGlv
biAmJiAhaXNOYXZpZ2F0aW9uV2l0aGluUGFnZSkKKyAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAm
JiAhaXNOYXZpZ2F0aW9uV2l0aGluUGFnZSkgewogICAgICAgICBtX3BhZ2VTY2FsZUZhY3Rvcklz
U2V0ID0gZmFsc2U7CisgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7Cisg
ICAgfQogCiAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgcmVzZXRTYXZlZFNj
cm9sbEFuZFNjYWxlU3RhdGUoKTsKQEAgLTM3NjUsNiArMzc5Myw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0
IHBhZ2VTY2FsCiAgICAgICAgIFdlYlBvaW50IHNjYWxlZFNjcm9sbE9mZnNldChzY3JvbGxPZmZz
ZXQud2lkdGggKiBwYWdlU2NhbGVEZWx0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcm9sbE9mZnNldC5oZWlnaHQgKiBwYWdlU2NhbGVEZWx0YSk7CiAgICAgICAgIHNl
dFBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZURlbHRhLCBzY2Fs
ZWRTY3JvbGxPZmZzZXQpOworICAgICAgICBtX2RvdWJsZVRhcFpvb21JbkVmZmVjdCA9IGZhbHNl
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggMzk3ODM2ODBmYTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uOWUyZTRlYTVmZTIx
ZDIwYTY2ZDNiMDY5MjFiNTgzNGUwNjRhODBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC01NjAsNyArNTYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZnVs
bEZyYW1lUGx1Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKTsKIAogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhp
dFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9hdCYgc2NhbGUs
IFdlYlBvaW50JiBzY3JvbGwpOworICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0
UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0JiBzY2FsZSwg
V2ViUG9pbnQmIHNjcm9sbCwgYm9vbCAmaXNBbmNob3IpOwogI2VuZGlmCiAgICAgdm9pZCBhbmlt
YXRlWm9vbUFyb3VuZFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgQXV0b1pvb21UeXBl
KTsKIApAQCAtNzMxLDYgKzczMSw5IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9zYXZlZFBhZ2VT
Y2FsZUZhY3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFjdG9yIGlzIHNhdmVk
LgogICAgIFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9sbE9mZnNldDsKIAorICAgIC8vIFdo
ZXRoZXIgdGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVkIGJ5IHpvb21pbmcgaW4gd2l0aCBk
b3VibGUgdGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29tSW5FZmZlY3Q7CisKICAgICBib29s
IG1fY29udGV4dE1lbnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2RvaW5nRHJhZ0FuZERyb3A7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggOGZj
NzQ5ODhlYjU2NGJmMDVjM2M0NmNhODJmYzZlYTY5ZjI4OTYxMi4uOWE5MGU4OThhMTQ0NzlkNTFh
ZTA1OWExMTk2MTRkZTQwYTkzNWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMzE0LDc2ICszMTQsMTk3IEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIENhbk92ZXJyaWRlTWF4aW11bVNjYWxlRmFjdG9yKQogfQogCiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorY2xhc3MgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCA6IHB1Ymxp
YyBXZWJWaWV3Q2xpZW50IHsKKyBwdWJsaWM6CisgICAgdmlydHVhbCBXZWJSZWN0IHdpbmRvd1Jl
Y3QoKSBPVkVSUklERSB7IHJldHVybiBtX3dpbmRvd1JlY3Q7IH0KKyAgICB2aXJ0dWFsIFdlYlNj
cmVlbkluZm8gc2NyZWVuSW5mbygpIE9WRVJSSURFIHsgcmV0dXJuIG1fc2NyZWVuSW5mbzsgfQor
CisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3Q7CisgICAgV2ViU2NyZWVuSW5mbyBtX3NjcmVlbklu
Zm87Cit9OworCit2b2lkIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCwgV2ViUG9pbnQgc2Nyb2xsLCBmbG9hdCBzY2FsZSkKK3sKKyAgICB3ZWJWaWV3
SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBXZWJQb2ludChzY3JvbGwueCwgc2Nyb2xs
LnkpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5
b3V0KCk7Cit9CisKIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tUGFyYW1zVGVzdCkK
IHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfZm9yX2F1dG9fem9v
bV9pbnRvX2Rpdl90ZXN0Lmh0bWwiKTsKIAotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9
IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rl
c3QuaHRtbCIsIHRydWUpKTsKLSAgICBpbnQgcGFnZVdpZHRoID0gNjQwOwotICAgIGludCBwYWdl
SGVpZ2h0ID0gNDgwOwotICAgIGludCBkaXZQb3NYID0gMjAwOwotICAgIGludCBkaXZQb3NZID0g
MjAwOwotICAgIGludCBkaXZXaWR0aCA9IDIwMDsKLSAgICBpbnQgZGl2SGVpZ2h0ID0gMTUwOwot
ICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnQoMjUwLCAyNTAsIDAsIDApOwotICAgIHdlYlZpZXdJ
bXBsLT5yZXNpemUoV2ViU2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICBEaXZBdXRv
Wm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0
MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgZmxvYXQgZGV2aWNlRHBpVW5p
dCA9IDE2MDsKKyAgICBpbnQgZGVmYXVsdEZpeGVkTGF5b3V0V2lkdGggPSA5ODA7CisgICAgY2xp
ZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRI
ZWlnaHQpOworICAgIGNsaWVudC5tX3NjcmVlbkluZm8uaG9yaXpvbnRhbERQSSA9IDIgKiBkZXZp
Y2VEcGlVbml0OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUs
IDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRy
dWUpOworCisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZp
ZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0
cygwLjAxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KS0+bGF5b3V0KCk7CisKKyAgICBXZWJSZWN0IHdpZGVEaXYoMjAwLCAxMDAsIDQwMCwgMTUwKTsK
KyAgICBXZWJSZWN0IHRhbGxEaXYoMjAwLCAzMDAsIDQwMCwgODAwKTsKKyAgICBXZWJSZWN0IGRv
dWJsZVRhcFBvaW50V2lkZSgod2lkZURpdi54ICsgNTApICogd2ViVmlld0ltcGwtPnBhZ2VTY2Fs
ZUZhY3RvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRlRGl2LnkgKyA1
MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksIDAsIDApOworICAgIFdlYlJlY3Qg
ZG91YmxlVGFwUG9pbnRUYWxsKCh0YWxsRGl2LnggKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNj
YWxlRmFjdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhbGxEaXYueSAr
IDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwgMCwgMCk7CiAgICAgZmxvYXQg
c2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAgIGJvb2wgaXNBbmNob3I7CisKKyAgICAv
LyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdpZGUgZGl2LgorICAgIHdlYlZpZXdJbXBs
LT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50V2lkZSwgV2Vi
Vmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRoZSBzY3JlZW4gKG1vZHVsbyBtYXJnaW5z
KSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJlZCAobW9kdWxvIGludGVnZXIgcm91bmRp
bmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHdpZGVEaXYud2lk
dGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHdpZGVEaXYueCAqIHNjYWxlLCBzY3Jv
bGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdpZGVEaXYueSArIHdpZGVEaXYuaGVpZ2h0
IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAvIDIpOworICAgIEVYUEVDVF9ORUFSKHZT
Y3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIGlzQW5jaG9yKTsKKwor
ICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBzY3JvbGwsIHNjYWxl
KTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0byBtaW5pbXVtIHNjYWxlLgorICAgIHdl
YlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50
V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
LCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlzQW5jaG9yKTsKKworICAgIHNldFNjYWxl
QW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgc2NhbGUpOwor
CisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcgaW50byB0YWxsIGRpdi4KKyAgICB3ZWJW
aWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludFRh
bGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAg
ICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUgdG9wIGxlZnQgb2YgdGhlIHZpZXdwb3J0
LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHRhbGxEaXYud2lkdGgs
IHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueCAqIHNjYWxlLCBzY3JvbGwu
eCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueSAqIHNjYWxlLCBzY3JvbGwueSwgMjAp
OworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3IpOworCisgICAgLy8gVGVzdCBmb3IgTm9u
LWRvdWJsZXRhcCBzY2FsaW5nCisgICAgLy8gVGVzdCB6b29taW5nIGludG8gZGl2LgorICAgIHdl
YlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QoMjUwLCAy
NTAsIDEwLCAxMCksIFdlYlZpZXdJbXBsOjpGaW5kSW5QYWdlLCBzY2FsZSwgc2Nyb2xsLCBpc0Fu
Y2hvcik7CisgICAgRVhQRUNUX05FQVIodmlld3BvcnRXaWR0aCAvIChmbG9hdCkgd2lkZURpdi53
aWR0aCwgc2NhbGUsIDAuMSk7Cit9CisKK3ZvaWQgc2ltdWxhdGVEb3VibGVUYXAoV2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsLCBXZWJQb2ludCYgcG9pbnQsIFdlYlBvaW50JiBzY3JvbGwsIGZsb2F0
JiBzY2FsZSwgYm9vbCYgaXNBbmNob3IpCit7CisgICAgV2ViUmVjdCByZWN0KHN0YXRpY19jYXN0
PGludD4oKHBvaW50LnggKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpLAor
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KChwb2ludC55ICsgNTApICogd2ViVmll
d0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKSwgMCwgMCk7CisgICAgd2ViVmlld0ltcGwtPmNvbXB1
dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QocmVjdCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwg
c2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0
KHdlYlZpZXdJbXBsLCBzY3JvbGwsIHNjYWxlKTsKK30KIAotICAgIC8vIFRlc3QgZm9yIERvdWJs
ZXRhcCBzY2FsaW5nCitURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbU11bHRpcGxlRGl2
c1Rlc3QpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZ2V0X211bHRpcGxlX2Rp
dnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwiKTsKIAotICAgIC8vIFRlc3RzIGZvciB6b29taW5n
IGluIGFuZCBvdXQgd2l0aG91dCBjbGFtcGluZy4KLSAgICAvLyBTZXQgZGV2aWNlIHNjYWxlIGFu
ZCBzY2FsZSBsaW1pdHMgc28gd2UgZG9udCBnZXQgY2xhbXBlZC4KLSAgICB3ZWJWaWV3SW1wbC0+
c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZh
Y3RvckxpbWl0cygwLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAg
IERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGludCB2aWV3cG9ydFdp
ZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBmbG9hdCBkZXZp
Y2VEcGlVbml0ID0gMTYwOworICAgIGZsb2F0IGRvdWJsZVRhcFpvb21NaW5NYXggPSAxLjI7Cisg
ICAgaW50IGRlZmF1bHRGaXhlZExheW91dFdpZHRoID0gOTgwOworICAgIGNsaWVudC5tX3dpbmRv
d1JlY3QgPSBXZWJSZWN0KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAg
ICBjbGllbnQubV9zY3JlZW5JbmZvLmhvcml6b250YWxEUEkgPSAxLjUgKiBkZXZpY2VEcGlVbml0
OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBs
Kj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdl
dF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAg
d2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0
KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAg
ICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CiAK
LSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVT
Y2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3Vi
bGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIGZsb2F0IHNjYWxlZERpdldpZHRoID0gZGl2V2lk
dGggKiBzY2FsZTsKLSAgICBmbG9hdCBzY2FsZWREaXZIZWlnaHQgPSBkaXZIZWlnaHQgKiBzY2Fs
ZTsKLSAgICBpbnQgaFNjcm9sbCA9ICgoZGl2UG9zWCAqIHNjYWxlKSAtICgocGFnZVdpZHRoIC0g
c2NhbGVkRGl2V2lkdGgpIC8gMikpIC8gc2NhbGU7Ci0gICAgaW50IHZTY3JvbGwgPSAoKGRpdlBv
c1kgKiBzY2FsZSkgLSAoKHBhZ2VIZWlnaHQgLSBzY2FsZWREaXZIZWlnaHQpIC8gMikpIC8gc2Nh
bGU7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lkdGgsIHNjYWxlLCAwLjEpOwot
ICAgIEVYUEVDVF9FUShoU2Nyb2xsLCBzY3JvbGwueCk7Ci0gICAgRVhQRUNUX0VRKHZTY3JvbGws
IHNjcm9sbC55KTsKLQotICAgIC8vIFRlc3Qgem9vbSBvdXQgdG8gb3ZlcnZpZXcgc2NhbGUuCi0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQs
IFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSgxLCBzY2FsZSk7Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50KDAsIDApLCBzY3JvbGwpOwot
Ci0gICAgLy8gVGVzdHMgZm9yIGNsYW1wZWQgc2NhbGluZy4KLSAgICAvLyBUZXN0IGNsYW1wIHRv
IGRldmljZSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJT
aXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZh
Y3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMi41KTsKLSAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQ
b2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDIuNSwgc2NhbGUpOwotCi0gICAgLy8gVGVzdCBjbGFtcCB0byBtaW5pbXVtIHNj
YWxlOgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xs
LngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMS41IC8gd2ViVmlld0lt
cGwtPmRldmljZVNjYWxlRmFjdG9yKCksIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3Qo
ZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgxLjUsIHNjYWxlKTsKLSAgICBFWFBFQ1RfRVEoV2ViUG9pbnQo
MCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRvIG1heGltdW0gc2NhbGU6Ci0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgMyAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChk
b3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDMsIHNjYWxlKTsKKyAgICBXZWJSZWN0IHRvcERpdigyMDAsIDEw
MCwgMjAwLCAxNTApOworICAgIFdlYlJlY3QgYm90dG9tRGl2KDIwMCwgMzAwLCAyMDAsIDE1MCk7
CisgICAgV2ViUG9pbnQgdG9wUG9pbnQodG9wRGl2LnggKyA1MCwgdG9wRGl2LnkgKyA1MCk7Cisg
ICAgV2ViUG9pbnQgYm90dG9tUG9pbnQoYm90dG9tRGl2LnggKyA1MCwgYm90dG9tRGl2LnkgKyA1
MCk7CisgICAgZmxvYXQgc2NhbGU7CisgICAgV2ViUG9pbnQgc2Nyb2xsOworICAgIGJvb2wgaXNB
bmNob3I7CisgICAgZmxvYXQgZGV2aWNlRHBpU2NhbGUgPSBzY3JlZW5Ib3Jpem9udGFsRFBJKHdl
YlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKSAvIGRldmljZURwaVVuaXQ7
CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAs
IDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSkgKiAoMSArIGRvdWJs
ZVRhcFpvb21NaW5NYXgpIC8gMik7CisKKyAgICAvLyBUZXN0IGRvdWJsZSB0YXAgb24gdHdvIGRp
ZmZlcmVudCBkaXZzCisgICAgLy8gQWZ0ZXIgZmlyc3Qgem9vbSwgd2Ugc2hvdWxkIGdvIGJhY2sg
dG8gbWluaW11bSBwYWdlIHNjYWxlIHdpdGggYSBzZWNvbmQgZG91YmxlIHRhcC4KKyAgICBzaW11
bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgdG9wUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5j
aG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoZGV2aWNlRHBpU2NhbGUsIHNjYWxlKTsKKyAgICBz
aW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgYm90dG9tUG9pbnQsIHNjcm9sbCwgc2NhbGUs
IGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdl
U2NhbGVGYWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gSWYgdGhlIHVzZXIgcGluY2ggem9vbXMg
YWZ0ZXIgZG91YmxlIHRhcCwgYSBzZWNvbmQgZG91YmxlIHRhcCBzaG91bGQgem9vbSBiYWNrIHRv
IHRoZSBkaXYuCisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIHRvcFBvaW50LCBz
Y3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKGRldmljZURwaVNj
YWxlLCBzY2FsZSk7CisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6
ZSgpLCAwLjYpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBib3R0b21Qb2lu
dCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUShkZXZpY2VE
cGlTY2FsZSwgc2NhbGUpOworfQogCi0gICAgLy8gVGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2Fs
aW5nCi0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigxLCBXZWJQb2ludCgwLCAw
KSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZp
ZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgNCAvIHdlYlZpZXdJbXBsLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1
MCwgMTAsIDEwKSwgV2ViVmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwpOwotICAg
IEVYUEVDVF9ORUFSKHBhZ2VXaWR0aCAvIGRpdldpZHRoLCBzY2FsZSwgMC4xKTsKK1RFU1RfRihX
ZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tU2NhbGVCb3VuZHNUZXN0KQoreworICAgIHJlZ2lzdGVy
TW9ja2VkSHR0cFVSTExvYWQoImdldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90
ZXN0Lmh0bWwiKTsKIAotICAgIC8vIERyb3AgYW55IHBlbmRpbmcgZmFrZSBtb3VzZSBldmVudHMg
ZnJvbSB6b29taW5nIGJlZm9yZSBsZWF2aW5nIHRoZSB0ZXN0LgotICAgIHdlYlZpZXdJbXBsLT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y2xlYXIoKTsKKyAgICBEaXZBdXRv
Wm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0
MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgZmxvYXQgZGV2aWNlRHBpVW5p
dCA9IDE2MDsKKyAgICBmbG9hdCBkb3VibGVUYXBab29tTWluTWF4ID0gMS4yOworICAgIGludCBk
ZWZhdWx0Rml4ZWRMYXlvdXRXaWR0aCA9IDk4MDsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0g
V2ViUmVjdCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgY2xpZW50
Lm1fc2NyZWVuSW5mby5ob3Jpem9udGFsRFBJID0gMS41ICogZGV2aWNlRHBpVW5pdDsKKyAgICBX
ZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVf
Ym91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkp
OworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2Vi
Vmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7
CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAgICB3
ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisgICAg
ZmxvYXQgZG91YmxlVGFwWm9vbU1pbk1heFNjYWxlID0gd2ViVmlld0ltcGwtPm1pbmltdW1QYWdl
U2NhbGVGYWN0b3IoKSAqIGRvdWJsZVRhcFpvb21NaW5NYXg7CisKKyAgICBXZWJSZWN0IGRpdigy
MDAsIDEwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IGRvdWJsZVRhcFBvaW50KGRpdi54ICsg
NTAsIGRpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxlOworICAgIFdlYlBvaW50IHNjcm9sbDsK
KyAgICBib29sIGlzQW5jaG9yOworCisgICAgLy8gVGVzdCBkb3VibGUgdGFwIHNjYWxlIGJvdW5k
cy4KKworICAgIC8vIG1pbmltdW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29tTWluTWF4U2NhbGUg
PCBkZXZpY2VEcGlTY2FsZQorICAgIGZsb2F0IGRldmljZURwaVNjYWxlID0gc2NyZWVuSG9yaXpv
bnRhbERQSSh3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkgLyBkZXZp
Y2VEcGlVbml0OworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBX
ZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICog
KDEgKyBkb3VibGVUYXBab29tTWluTWF4KSAvIDIpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdl
YlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAg
IEVYUEVDVF9GTE9BVF9FUShkZXZpY2VEcGlTY2FsZSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91
YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNo
b3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZh
Y3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJs
ZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KGRldmljZURwaVNjYWxlLCBzY2FsZSk7CisKKyAgICAvLyBab29tIGluIHRvIHJlc2V0IGRvdWJs
ZV90YXBfem9vbV9pbl9lZmZlY3QgZmxhZy4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxB
bmRTY2FsZShXZWJTaXplKCksIDEuMSk7CisgICAgLy8gZGV2aWNlRHBpU2NhbGUgPCBtaW5pbXVt
UGFnZVNjYWxlIDwgZG91YmxlVGFwWm9vbU1pbk1heFNjYWxlCisgICAgY2xpZW50Lm1fc2NyZWVu
SW5mby5ob3Jpem9udGFsRFBJID0gMC41ICogZGV2aWNlRHBpVW5pdDsKKyAgICBkZXZpY2VEcGlT
Y2FsZSA9IHNjcmVlbkhvcml6b250YWxEUEkod2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCkpIC8gZGV2aWNlRHBpVW5pdDsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExh
eW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1pbk1heCkgLyAyKTsKKworICAg
IHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBz
Y2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmll
d0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKGRvdWJsZVRhcFpvb21NaW5NYXhTY2FsZSwgc2NhbGUpOworICAgIHNpbXVs
YXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwg
aXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAvLyBab29tIGluIHRvIHJlc2V0IGRvdWJsZV90
YXBfem9vbV9pbl9lZmZlY3QgZmxhZy4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRT
Y2FsZShXZWJTaXplKCksIDEuMSk7CisgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRh
cFpvb21NaW5NYXhTY2FsZSA8IGRldmljZURwaVNjYWxlCisgICAgY2xpZW50Lm1fc2NyZWVuSW5m
by5ob3Jpem9udGFsRFBJID0gMS4xICogZGV2aWNlRHBpVW5pdDsKKyAgICBkZXZpY2VEcGlTY2Fs
ZSA9IHNjcmVlbkhvcml6b250YWxEUEkod2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCkpIC8gZGV2aWNlRHBpVW5pdDsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91
dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1pbk1heCkgLyAyKTsKKworICAgIHNp
bXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2Fs
ZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0lt
cGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKGRvdWJsZVRhcFpvb21NaW5NYXhTY2FsZSwgc2NhbGUpOworICAgIHNpbXVsYXRl
RG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNB
bmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2Fs
ZUZhY3RvcigpLCBzY2FsZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9k
aXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmU2NDQyZmJhZmJiMzRm
NTNkYWZjNjVlZjgwNGQ2NGZjZDRiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4
OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9
IkRpdiI+VG9wIERpdjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAzMDBw
eDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4Ij4KKyAgICAgIDxwIGlkPSJEaXYiPkJvdHRv
bSBEaXY8L3A+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zv
cl9hdXRvX3pvb21fdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWNjOGU5YzE2NTAzNDhiYzZiODU2M2Q3MjdiYTI4MGE1NmI0NWNlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRz
X2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cisg
IDxib2R5PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlv
bjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdo
dDogNDAwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+RGl2PC9wPgorICAgIDwvZGl2PgorICA8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2
X3Rlc3QuaHRtbAppbmRleCAxODE3ZGM0N2Q1NGI1M2JhMmM0NmE1YjBhOWJhNzQ5OWZjYTI3MGVj
Li45NWU3YjM3ODdkNWM2MTAxNmJkN2NhMjUwZDhhODNmZDZlNzU4MmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21f
aW50b19kaXZfdGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0
YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwKQEAgLTEsMTMgKzEs
MTAgQEAKIDxodG1sPgogICA8Ym9keT4KLSAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0aDog
NjQwcHg7IGhlaWdodDogNDgwcHgiPgotICAgICAgPHA+VG9wIERpdjwvcD4KLSAgICAgIDxkaXYg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6
IDIwMHB4OyB0b3A6IDIwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgotICAgICAg
ICA8cCBpZD0iaW5uZXJEaXYiPkRpdiB0byB6b29tIHRvPC9wPgotICAgICAgICA8ZGl2IHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMjIwcHg7IHRv
cDogMzUwcHg7IHdpZHRoOiAxNjBweDsgaGVpZ2h0OiA0MHB4Ij4KLSAgICAgICAgICA8cCBpZD0i
aW5uZXJJbm5lckRpdiI+RGl2IE5PVCB0byB6b29tIHRvPC9wPgotICAgICAgICA8L2Rpdj4KLSAg
ICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3Np
dGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogNDAwcHg7IGhl
aWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IndpZGVEaXYiPldpZGUgZGl2PC9wPgorICAgIDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjog
YWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDMwMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDog
ODAwIj4KKyAgICAgIDxwIGlkPSJ0YWxsRGl2Ij5UYWxsIGRpdjwvcD4KICAgICA8L2Rpdj4KICAg
PC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165880</attachid>
            <date>2012-09-26 14:43:42 -0700</date>
            <delta_ts>2012-09-26 14:48:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120926144300.patch</filename>
            <type>text/plain</type>
            <size>28278</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZlY2Y5OTUxY2Y3ZTk2OWZmZjMxYTI1NTZhZTc1MmJlNzU1MjE5ZmEuLmVhZGVkNWMwMTYyNmE2
MWNiNGQwMWI2YWMyZDA3NTA5NzY4ZTA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yMCAgRGlyayBQcmFua2UgIDxkcHJh
bmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICByb2xsIENocm9taXVtIHRvIHIxNTc4MjkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzY0YWU2ZGNh
MWFhYTVlYjJkYmNmMmY3MDNkYmEwM2Y2Y2U0ODZhMS4uY2Y1MTVlMDI3N2E4OTFiNTIyZWU2ODg1
OGUxMDlmOGY3NzI4M2U0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChz
dWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAgZ2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLiku
IFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBp
bnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsKK3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRp
YXRlZFBvaW50UGFkZGluZyA9IDExOwogc3RhdGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVy
ZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVm
YXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRN
aW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBjb25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1h
dGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4yNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVU
YXBab29tTWluTWF4ID0gMS4yOwogCiAvLyBDb25zdGFudHMgZm9yIHpvb21pbmcgaW4gb24gYSBm
b2N1c2VkIHRleHQgZmllbGQuCiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbEFuZFNjYWxlQW5p
bWF0aW9uRHVyYXRpb25JblNlY29uZHMgPSAwLjI7CkBAIC0zOTEsNiArMzkzLDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1faWdub3Jl
Vmlld3BvcnRUYWdNYXhpbXVtU2NhbGUoZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3Rvcklz
U2V0KGZhbHNlKQogICAgICwgbV9zYXZlZFBhZ2VTY2FsZUZhY3RvcigwKQorICAgICwgbV9kb3Vi
bGVUYXBab29tSW5FZmZlY3QoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxz
ZSkKICAgICAsIG1fZG9pbmdEcmFnQW5kRHJvcChmYWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRF
dmVudHMoZmFsc2UpCkBAIC03NzAsNiArNzczLDkgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxl
R2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAg
ICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBh
bmltYXRlWm9vbUFyb3VuZFBvaW50KFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpLCBEb3VibGVU
YXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2lu
OgogICAgICAgICBtX2NsaWVudC0+Y2FuY2VsU2NoZWR1bGVkQ29udGVudEludGVudHMoKTsKQEAg
LTEwNjksMjQgKzEwNzUsMzQgQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6d2lkZW5SZWN0V2l0aGlu
UGFnZUJvdW5kcyhjb25zdCBXZWJSZWN0JiBzb3VyY2UsIGludCB0YXJnZXQKICAgICByZXR1cm4g
V2ViUmVjdChuZXdYLCBzb3VyY2UueSwgbmV3V2lkdGgsIHNvdXJjZS5oZWlnaHQpOwogfQogCi12
b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGNvbnN0IFdl
YlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSwgZmxvYXQmIHNjYWxlLCBXZWJQ
b2ludCYgc2Nyb2xsKQordm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5cGUsIGZs
b2F0JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpCiB7CisKICAgICBz
Y2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOwogICAgIHNjcm9sbC54ID0gc2Nyb2xsLnkgPSAwOwog
ICAgIFdlYlJlY3QgdGFyZ2V0UmVjdCA9IGhpdFJlY3Q7CisgICAgLy8gUGFkZGluZyBvbmx5IGRl
cGVuZHMgb24gcGFnZSBzY2FsZSB3aGVuIHRyaWdnZXJlZCBieSBtYW51YWxseSB0YXBwaW5nCisg
ICAgaW50IHBhZGRpbmcgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKSA/IHRvdWNoUG9pbnRQYWRk
aW5nIDogbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZzsKICAgICBpZiAodGFyZ2V0UmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRSZWN0LmhlaWdodCA9
IHRvdWNoUG9pbnRQYWRkaW5nOwotCisgICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRS
ZWN0LmhlaWdodCA9IHBhZGRpbmc7CiAgICAgV2ViUmVjdCByZWN0ID0gY29tcHV0ZUJsb2NrQm91
bmRzKHRhcmdldFJlY3QsIHpvb21UeXBlKTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRmluZEluUGFn
ZSAmJiByZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5v
IG5lZWQgdG8gc2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKKyAgICAgICAgLy8g
YmUgdmlzaWJsZSkuIFRPRE8oam9obm1lKTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5
cyB0cnVlLgorICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgY29uc3QgZmxvYXQgb3ZlcnZp
ZXdTY2FsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIHNjYWxlVW5jaGFu
Z2VkID0gdHJ1ZTsKICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBhZ2Vz
IHNob3VsZCBiZSBhcyBsZWdpYmxlIGFzIG9uIGRlc2t0b3Agd2hlbiBhdCBkcGkgc2NhbGUsIHNv
IG5vCiAgICAgICAgIC8vIG5lZWQgdG8gem9vbSBpbiBmdXJ0aGVyIHdoZW4gYXV0b21hdGljYWxs
eSBkZXRlcm1pbmluZyB6b29tIGxldmVsCiAgICAgICAgIC8vIChhZnRlciBkb3VibGUgdGFwLCBm
aW5kIGluIHBhZ2UsIGV0YyksIHRob3VnaCB0aGUgdXNlciBzaG91bGQgc3RpbGwKICAgICAgICAg
Ly8gYmUgYWxsb3dlZCB0byBtYW51YWxseSBwaW5jaCB6b29tIGluIGZ1cnRoZXIgaWYgdGhleSBk
ZXNpcmUuCi0gICAgICAgIGNvbnN0IGZsb2F0IG1heFNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3Io
KTsKKyAgICAgICAgZmxvYXQgYWRqdXN0ZWREcGlTY2FsZSA9IGRldmljZVNjYWxlRmFjdG9yKCk7
CisgICAgICAgIGNvbnN0IGZsb2F0IG1pbk1heFNjYWxlID0gbV9taW5pbXVtUGFnZVNjYWxlRmFj
dG9yICogZG91YmxlVGFwWm9vbU1pbk1heDsKKyAgICAgICAgZmxvYXQgbWF4U2NhbGUgPSBhZGp1
c3RlZERwaVNjYWxlOworICAgICAgICBpZiAoYWRqdXN0ZWREcGlTY2FsZSA8IG1pbk1heFNjYWxl
KQorICAgICAgICAgICAgbWF4U2NhbGUgPSAoc2NhbGUgPT0gbV9taW5pbXVtUGFnZVNjYWxlRmFj
dG9yKSA/IG1pbk1heFNjYWxlIDogbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogCiAgICAgICAg
IGNvbnN0IGZsb2F0IGRlZmF1bHRNYXJnaW4gPSBkb3VibGVUYXBab29tQ29udGVudERlZmF1bHRN
YXJnaW4gKiBkZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBjb25zdCBmbG9hdCBtaW5pbXVt
TWFyZ2luID0gZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luICogZGV2aWNlU2NhbGVG
YWN0b3IoKTsKQEAgLTEwOTksNyArMTExNSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVT
Y2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvCiAg
ICAgICAgIHJlY3QgPSB3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRzKHJlY3QsCiAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihkZWZhdWx0TWFyZ2luICogcmVjdC53aWR0aCAvIG1fc2l6
ZS53aWR0aCksCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihtaW5pbXVtTWFyZ2lu
ICogcmVjdC53aWR0aCAvIG1fc2l6ZS53aWR0aCkpOwotCiAgICAgICAgIC8vIEZpdCBibG9jayB0
byBzY3JlZW4sIHJlc3BlY3RpbmcgbGltaXRzLgogICAgICAgICBzY2FsZSAqPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9zaXplLndpZHRoKSAvIHJlY3Qud2lkdGg7CiAgICAgICAgIHNjYWxlID0gbWlu
KHNjYWxlLCBtYXhTY2FsZSk7CkBAIC0xMTA4LDQ2ICsxMTIzLDUzIEBAIHZvaWQgV2ViVmlld0lt
cGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVj
dCwgQXV0b1pvCiAgICAgICAgIHNjYWxlVW5jaGFuZ2VkID0gZmFicyhwYWdlU2NhbGVGYWN0b3Io
KSAtIHNjYWxlKSA8IG1pblNjYWxlRGlmZmVyZW5jZTsKICAgICB9CiAKLSAgICBpZiAoem9vbVR5
cGUgPT0gRG91YmxlVGFwKSB7Ci0gICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSB8fCBzY2FsZVVu
Y2hhbmdlZCkgewotICAgICAgICAgICAgLy8gWm9vbSBvdXQgdG8gb3ZlcnZpZXcgbW9kZS4KLSAg
ICAgICAgICAgIGlmIChvdmVydmlld1NjYWxlKQotICAgICAgICAgICAgICAgIHNjYWxlID0gb3Zl
cnZpZXdTY2FsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAocmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gS2VlcCBjdXJyZW50IHNjYWxlIChubyBu
ZWVkIHRvIHNjcm9sbCBhcyB4LHkgd2lsbCBub3JtYWxseSBhbHJlYWR5Ci0gICAgICAgIC8vIGJl
IHZpc2libGUpLiBGSVhNRTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5cyB0cnVlLgot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYmVpbmcg
Y2FsbGVkIGZvciBhdXRvIHpvb20gZHVyaW5nIGZpbmQgaW4gcGFnZSwKLSAgICAvLyB0aGVuIGlm
IHRoZSB1c2VyIG1hbnVhbGx5IHpvb21zIGluIGl0J2QgYmUgbmljZSB0byBwcmVzZXJ2ZSB0aGUg
cmVsYXRpdmUKLSAgICAvLyBpbmNyZWFzZSBpbiB6b29tIHRoZXkgY2F1c2VkIChpZiB0aGV5IHpv
b20gb3V0IHRoZW4gaXQncyBvayB0byB6b29tCi0gICAgLy8gdGhlbSBiYWNrIGluIGFnYWluKS4g
VGhpcyBpc24ndCBjb21wYXRpYmxlIHdpdGggb3VyIGN1cnJlbnQgZG91YmxlLXRhcAotICAgIC8v
IHpvb20gc3RyYXRlZ3kgKGZpdHRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdG8gdGhlIHNjcmVl
bikgdGhvdWdoLgotCi0gICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gbV9zaXplLmhlaWdodCAvIHNj
YWxlICogcGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgZmxvYXQgc2NyZWVuV2lkdGggPSBtX3NpemUu
d2lkdGggLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgLy8gU2Nyb2xsIHRvIHZl
cnRpY2FsbHkgYWxpZ24gdGhlIGJsb2NrLgotICAgIGlmIChyZWN0LmhlaWdodCA8IHNjcmVlbkhl
aWdodCkgewotICAgICAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBzaG9ydCBibG9ja3MuCi0gICAg
ICAgIHJlY3QueSAtPSAwLjUgKiAoc2NyZWVuSGVpZ2h0IC0gcmVjdC5oZWlnaHQpOworICAgIGlm
ICh6b29tVHlwZSA9PSBEb3VibGVUYXAgJiYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5jaGFu
Z2VkIHx8IG1fZG91YmxlVGFwWm9vbUluRWZmZWN0KSkgeworICAgICAgICAgIC8vIFpvb20gb3V0
IHRvIG1pbmltdW0gc2NhbGUuCisgICAgICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVG
YWN0b3I7CisgICAgICAgICAgc2Nyb2xsID0gV2ViUG9pbnQoaGl0UmVjdC54LCBoaXRSZWN0Lnkp
OworICAgICAgICAgIGlzQW5jaG9yID0gdHJ1ZTsKKyAgICAgICAgICBtX2RvdWJsZVRhcFpvb21J
bkVmZmVjdCA9IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEVuc3VyZSBwb3NpdGlv
biB3ZSdyZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCi0g
ICAgICAgIC8vIHRoZSBzY3JlZW4uCi0gICAgICAgIHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55
LCBoaXRSZWN0LnkgKyB0b3VjaFBvaW50UGFkZGluZyAtIHNjcmVlbkhlaWdodCk7Ci0gICAgfSAv
LyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9jay4KLQotICAgIC8vIERvIHRoZSBzYW1lIHRo
aW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KLSAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVl
bldpZHRoKQotICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0
aCk7Ci0gICAgZWxzZQotICAgICAgICByZWN0LnggPSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVj
dC54ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIGlmICh6b29t
VHlwZSA9PSBEb3VibGVUYXAgJiYgc2NhbGUgIT0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKQor
ICAgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CisgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgYXV0byB6b29tIGR1cmluZyBmaW5kIGlu
IHBhZ2UsCisgICAgICAgIC8vIHRoZW4gaWYgdGhlIHVzZXIgbWFudWFsbHkgem9vbXMgaW4gaXQn
ZCBiZSBuaWNlIHRvIHByZXNlcnZlIHRoZQorICAgICAgICAvLyByZWxhdGl2ZSBpbmNyZWFzZSBp
biB6b29tIHRoZXkgY2F1c2VkIChpZiB0aGV5IHpvb20gb3V0IHRoZW4gaXQncyBvaworICAgICAg
ICAvLyB0byB6b29tIHRoZW0gYmFjayBpbiBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJsZSB3
aXRoIG91ciBjdXJyZW50CisgICAgICAgIC8vIGRvdWJsZS10YXAgem9vbSBzdHJhdGVneSAoZml0
dGluZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVuKQorICAgICAgICAvLyB0aG91
Z2guCisKKyAgICAgICAgZmxvYXQgc2NyZWVuSGVpZ2h0ID0gbV9zaXplLmhlaWdodCAvIHNjYWxl
ICogcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGZsb2F0IHNjcmVlbldpZHRoID0gbV9zaXpl
LndpZHRoIC8gc2NhbGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKKworICAgICAgICAvLyBTY3JvbGwg
dG8gdmVydGljYWxseSBhbGlnbiB0aGUgYmxvY2suCisgICAgICAgIGlmIChyZWN0LmhlaWdodCA8
IHNjcmVlbkhlaWdodCkgeworICAgICAgICAgICAgLy8gVmVydGljYWxseSBjZW50ZXIgc2hvcnQg
YmxvY2tzLgorICAgICAgICAgICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0
LmhlaWdodCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgcG9zaXRp
b24gd2UncmUgem9vbWluZyB0byAoKyBwYWRkaW5nKSBpc24ndCBvZmYgdGhlIGJvdHRvbSBvZgor
ICAgICAgICAgICAgLy8gdGhlIHNjcmVlbi4KKyAgICAgICAgICAgIHJlY3QueSA9IG1heDxmbG9h
dD4ocmVjdC55LCBoaXRSZWN0LnkgKyBwYWRkaW5nIC0gc2NyZWVuSGVpZ2h0KTsKKyAgICAgICAg
fSAvLyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9jay4KKworICAgICAgICAvLyBEbyB0aGUg
c2FtZSB0aGluZyBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuCisgICAgICAgIGlmIChyZWN0Lndp
ZHRoIDwgc2NyZWVuV2lkdGgpCisgICAgICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldp
ZHRoIC0gcmVjdC53aWR0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlY3QueCA9IG1h
eDxmbG9hdD4ocmVjdC54LCBoaXRSZWN0LnggKyBwYWRkaW5nIC0gc2NyZWVuV2lkdGgpOworICAg
ICAgICBzY3JvbGwueCA9IHJlY3QueDsKKyAgICAgICAgc2Nyb2xsLnkgPSByZWN0Lnk7CisgICAg
ICAgIGlzQW5jaG9yID0gZmFsc2U7CisgICAgfQogCi0gICAgc2Nyb2xsLnggPSByZWN0Lng7Ci0g
ICAgc2Nyb2xsLnkgPSByZWN0Lnk7CisgICAgc2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRv
TGltaXRzKHNjYWxlKTsKKyAgICBzY3JvbGwgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKHNjcm9sbCk7CisgICAgZmxvYXQgc2NhbGVEZWx0YSA9IHNjYWxl
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgc2Nyb2xsID0gV2ViUG9pbnQoc2Nyb2xsLnggKiBz
Y2FsZURlbHRhLCBzY3JvbGwueSAqIHNjYWxlRGVsdGEpOworICAgIGlmICghaXNBbmNob3IpCisg
ICAgICBzY3JvbGwgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7CiB9CiAKIHN0
YXRpYyBib29sIGhpZ2hsaWdodENvbmRpdGlvbnMoTm9kZSogbm9kZSkKQEAgLTEyMTMsMTEgKzEy
MzUsMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZVpvb21Bcm91bmRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIEF1dG9ab29tVHlwZSB6b28KIAogICAgIGZsb2F0IHNjYWxlOwogICAg
IFdlYlBvaW50IHNjcm9sbDsKLSAgICBjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdl
YlJlY3QocG9pbnQueCgpLCBwb2ludC55KCksIDAsIDApLCB6b29tVHlwZSwgc2NhbGUsIHNjcm9s
bCk7CisgICAgYm9vbCBpc0FuY2hvcjsKKyAgICBXZWJQb2ludCBwdCA9IHBvaW50OworICAgIGNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdChwdC54LCBwdC55LCAwLCAwKSwg
em9vbVR5cGUsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKIAogICAgIGJvb2wgaXNEb3VibGVU
YXAgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKTsKICAgICBkb3VibGUgZHVyYXRpb25JblNlY29u
ZHMgPSBpc0RvdWJsZVRhcCA/IGRvdWJsZVRhcFpvb21BbmltYXRpb25EdXJhdGlvbkluU2Vjb25k
cyA6IDA7Ci0gICAgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsLCBpc0RvdWJsZVRhcCwg
c2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihz
Y3JvbGwsIGlzQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogI2VuZGlmCiB9CiAK
QEAgLTM0NTksOCArMzQ4MywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJv
b2wqIGlzTmV3TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIG1fbmV3
TmF2aWdhdGlvbkxvYWRlciA9IDA7CiAjZW5kaWYKICAgICBtX29ic2VydmVkTmV3TmF2aWdhdGlv
biA9IGZhbHNlOwotICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25XaXRo
aW5QYWdlKQorICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25XaXRoaW5Q
YWdlKSB7CiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSBmYWxzZTsKKyAgICAgICAg
bV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBNYWtlIHN1
cmUgbGluayBoaWdobGlnaHQgZnJvbSBwcmV2aW91cyBwYWdlIGlzIGNsZWFyZWQuCiAgICAgbV9s
aW5rSGlnaGxpZ2h0LmNsZWFyKCk7CkBAIC0zOTI3LDYgKzM5NTMsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9h
dCBwYWdlU2NhbAogICAgICAgICBXZWJQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zm
c2V0LndpZHRoICogcGFnZVNjYWxlRGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzY3JvbGxPZmZzZXQuaGVpZ2h0ICogcGFnZVNjYWxlRGVsdGEpOwogICAgICAgICBz
ZXRQYWdlU2NhbGVGYWN0b3IocGFnZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVEZWx0YSwgc2Nh
bGVkU2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxz
ZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmlu
ZGV4IDg2NTg5ODYwODQ0YzVkMjhjZGRmZDA0YWFhZDkwOGM2YWU2Y2FlZmYuLmNkOTJiYzk5ZDhi
NGUyZDA1NTlkMmJiYzJlMjBlZjM3Nzk5ZWQxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtNTYwLDcgKzU2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZ1
bGxGcmFtZVBsdWdpblpvb21MZXZlbENoYW5nZWQoZG91YmxlIHpvb21MZXZlbCk7CiAKICNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JI
aXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSwgZmxvYXQmIHNjYWxl
LCBXZWJQb2ludCYgc2Nyb2xsKTsKKyAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhp
dFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9hdCYgc2NhbGUs
IFdlYlBvaW50JiBzY3JvbGwsIGJvb2wgJmlzQW5jaG9yKTsKICAgICBXZWJDb3JlOjpOb2RlKiBi
ZXN0VG91Y2hMaW5rTm9kZShXZWJDb3JlOjpJbnRQb2ludCB0b3VjaEV2ZW50TG9jYXRpb24pOwog
ICAgIHZvaWQgZW5hYmxlVG91Y2hIaWdobGlnaHQoV2ViQ29yZTo6SW50UG9pbnQgdG91Y2hFdmVu
dExvY2F0aW9uKTsKICNlbmRpZgpAQCAtNzM5LDYgKzczOSw5IEBAIHByaXZhdGU6CiAgICAgZmxv
YXQgbV9zYXZlZFBhZ2VTY2FsZUZhY3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUg
ZmFjdG9yIGlzIHNhdmVkLgogICAgIFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9sbE9mZnNl
dDsKIAorICAgIC8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVkIGJ5IHpv
b21pbmcgaW4gd2l0aCBkb3VibGUgdGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29tSW5FZmZl
Y3Q7CisKICAgICBib29sIG1fY29udGV4dE1lbnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2RvaW5n
RHJhZ0FuZERyb3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAKaW5kZXggYTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5YTEwMGQ2OWM2MDZmNDAzMS4uZGFm
OTdmN2Y2ZWI5ZmQ0MWQ3OTA1NjBjMGJhNzJlY2UzMjFlODgzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLQogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVy
cy5oIgpAQCAtMzE2LDc2ICszMTUsMTgyIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENhbk92ZXJy
aWRlTWF4aW11bVNjYWxlRmFjdG9yKQogfQogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQor
Y2xhc3MgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCA6IHB1YmxpYyBXZWJWaWV3Q2xpZW50
IHsKKyBwdWJsaWM6CisgICAgdmlydHVhbCBXZWJSZWN0IHdpbmRvd1JlY3QoKSBPVkVSUklERSB7
IHJldHVybiBtX3dpbmRvd1JlY3Q7IH0KKworICAgIFdlYlJlY3QgbV93aW5kb3dSZWN0OworfTsK
Kwordm9pZCBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dChXZWJWaWV3SW1wbCogd2ViVmlld0lt
cGwsIFdlYlBvaW50IHNjcm9sbCwgZmxvYXQgc2NhbGUpCit7CisgICAgd2ViVmlld0ltcGwtPnNl
dFBhZ2VTY2FsZUZhY3RvcihzY2FsZSwgV2ViUG9pbnQoc2Nyb2xsLngsIHNjcm9sbC55KSk7Cisg
ICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOwor
fQorCiBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVBhcmFtc1Rlc3QpCiB7CiAgICAg
cmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19k
aXZfdGVzdC5odG1sIik7CiAKLSAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KG1fYmFzZVVSTCArICJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwi
LCB0cnVlKSk7Ci0gICAgaW50IHBhZ2VXaWR0aCA9IDY0MDsKLSAgICBpbnQgcGFnZUhlaWdodCA9
IDQ4MDsKLSAgICBpbnQgZGl2UG9zWCA9IDIwMDsKLSAgICBpbnQgZGl2UG9zWSA9IDIwMDsKLSAg
ICBpbnQgZGl2V2lkdGggPSAyMDA7Ci0gICAgaW50IGRpdkhlaWdodCA9IDE1MDsKLSAgICBXZWJS
ZWN0IGRvdWJsZVRhcFBvaW50KDI1MCwgMjUwLCAwLCAwKTsKLSAgICB3ZWJWaWV3SW1wbC0+cmVz
aXplKFdlYlNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7CisgICAgRGl2QXV0b1pvb21UZXN0
V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAg
aW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGNsaWVudC5tX3dpbmRvd1JlY3QgPSBXZWJS
ZWN0KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAgICBXZWJWaWV3SW1w
bCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBl
cnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVfZm9yX2F1dG9f
em9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAgd2ViVmll
d0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0
RGV2aWNlU2NhbGVGYWN0b3IoMi4wZik7CisKKyAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNp
emUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0
UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAuMDEsIDQpOworICAgIHdlYlZpZXdJbXBsLT5tYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXQoKTsKKworICAgIFdlYlJlY3Qgd2lkZURpdigy
MDAsIDEwMCwgNDAwLCAxNTApOworICAgIFdlYlJlY3QgdGFsbERpdigyMDAsIDMwMCwgNDAwLCA4
MDApOworICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnRXaWRlKCh3aWRlRGl2LnggKyA1MCkgKiB3
ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHdpZGVEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwg
MCwgMCk7CisgICAgV2ViUmVjdCBkb3VibGVUYXBQb2ludFRhbGwoKHRhbGxEaXYueCArIDUwKSAq
IHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodGFsbERpdi55ICsgNTApICogd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3Rvcigp
LCAwLCAwKTsKICAgICBmbG9hdCBzY2FsZTsKICAgICBXZWJQb2ludCBzY3JvbGw7CisgICAgYm9v
bCBpc0FuY2hvcjsKKworICAgIC8vIFRlc3QgZG91YmxlLXRhcCB6b29taW5nIGludG8gd2lkZSBk
aXYuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91
YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBp
c0FuY2hvcik7CisgICAgLy8gVGhlIGRpdiBzaG91bGQgaG9yaXpvbnRhbGx5IGZpbGwgdGhlIHNj
cmVlbiAobW9kdWxvIG1hcmdpbnMpLCBhbmQKKyAgICAvLyB2ZXJ0aWNhbGx5IGNlbnRlcmVkICht
b2R1bG8gaW50ZWdlciByb3VuZGluZykuCisgICAgRVhQRUNUX05FQVIodmlld3BvcnRXaWR0aCAv
IChmbG9hdCkgd2lkZURpdi53aWR0aCwgc2NhbGUsIDAuMSk7CisgICAgRVhQRUNUX05FQVIod2lk
ZURpdi54ICogc2NhbGUsIHNjcm9sbC54LCAyMCk7CisgICAgaW50IHZTY3JvbGwgPSAod2lkZURp
di55ICsgd2lkZURpdi5oZWlnaHQgLyAyKSAqIHNjYWxlIC0gKHZpZXdwb3J0SGVpZ2h0IC8gMik7
CisgICAgRVhQRUNUX05FQVIodlNjcm9sbCwgc2Nyb2xsLnksIDEpOworICAgIEVYUEVDVF9FUShm
YWxzZSwgaXNBbmNob3IpOworCisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmll
d0ltcGwsIHNjcm9sbCwgc2NhbGUpOworCisgICAgLy8gVGVzdCB6b29tIG91dCBiYWNrIHRvIG1p
bmltdW0gc2NhbGUuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhp
dFJlY3QoZG91YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwg
c2Nyb2xsLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5p
bXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBFWFBFQ1RfRVEodHJ1ZSwgaXNBbmNo
b3IpOworCisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIFdlYlBv
aW50KDAsIDApLCBzY2FsZSk7CisKKyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRv
IHRhbGwgZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRS
ZWN0KGRvdWJsZVRhcFBvaW50VGFsbCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNj
cm9sbCwgaXNBbmNob3IpOworICAgIC8vIFRoZSBkaXYgc2hvdWxkIHN0YXJ0IGF0IHRoZSB0b3Ag
bGVmdCBvZiB0aGUgdmlld3BvcnQuCisgICAgRVhQRUNUX05FQVIodmlld3BvcnRXaWR0aCAvIChm
bG9hdCkgdGFsbERpdi53aWR0aCwgc2NhbGUsIDAuMSk7CisgICAgRVhQRUNUX05FQVIodGFsbERp
di54ICogc2NhbGUsIHNjcm9sbC54LCAyMCk7CisgICAgRVhQRUNUX05FQVIodGFsbERpdi55ICog
c2NhbGUsIHNjcm9sbC55LCAyMCk7CisgICAgRVhQRUNUX0VRKGZhbHNlLCBpc0FuY2hvcik7CisK
KyAgICAvLyBUZXN0IGZvciBOb24tZG91YmxldGFwIHNjYWxpbmcKKyAgICAvLyBUZXN0IHpvb21p
bmcgaW50byBkaXYuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhp
dFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwgV2ViVmlld0ltcGw6OkZpbmRJblBhZ2Us
IHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfTkVBUih2aWV3cG9ydFdpZHRo
IC8gKGZsb2F0KSB3aWRlRGl2LndpZHRoLCBzY2FsZSwgMC4xKTsKK30KKwordm9pZCBzaW11bGF0
ZURvdWJsZVRhcChXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFdlYlBvaW50JiBwb2ludCwgV2Vi
UG9pbnQmIHNjcm9sbCwgZmxvYXQmIHNjYWxlLCBib29sJiBpc0FuY2hvcikKK3sKKyAgICBXZWJS
ZWN0IHJlY3Qoc3RhdGljX2Nhc3Q8aW50PigocG9pbnQueCArIDUwKSAqIHdlYlZpZXdJbXBsLT5w
YWdlU2NhbGVGYWN0b3IoKSksCisgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oKHBv
aW50LnkgKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpLCAwLCAwKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChyZWN0LCBXZWJW
aWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAgc2V0U2Nh
bGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIHNjcm9sbCwgc2NhbGUpOworfQogCi0g
ICAgLy8gVGVzdCBmb3IgRG91YmxldGFwIHNjYWxpbmcKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERp
dkF1dG9ab29tTXVsdGlwbGVEaXZzVGVzdCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxM
b2FkKCJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOwogCi0gICAg
Ly8gVGVzdHMgZm9yIHpvb21pbmcgaW4gYW5kIG91dCB3aXRob3V0IGNsYW1waW5nLgotICAgIC8v
IFNldCBkZXZpY2Ugc2NhbGUgYW5kIHNjYWxlIGxpbWl0cyBzbyB3ZSBkb250IGdldCBjbGFtcGVk
LgotICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0KTsKLSAgICB3ZWJWaWV3
SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CisgICAgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7
CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0g
NDgwOworICAgIGZsb2F0IGRvdWJsZVRhcFpvb21NaW5NYXggPSAxLjI7CisgICAgY2xpZW50Lm1f
d2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQp
OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBs
Kj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdl
dF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAg
d2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0
KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAg
ICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7Cisg
ICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYpOwogCi0gICAgLy8gVGVz
dCB6b29taW5nIGludG8gZGl2LgotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3Jv
bGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2Fs
ZSwgc2Nyb2xsKTsKLSAgICBmbG9hdCBzY2FsZWREaXZXaWR0aCA9IGRpdldpZHRoICogc2NhbGU7
Ci0gICAgZmxvYXQgc2NhbGVkRGl2SGVpZ2h0ID0gZGl2SGVpZ2h0ICogc2NhbGU7Ci0gICAgaW50
IGhTY3JvbGwgPSAoKGRpdlBvc1ggKiBzY2FsZSkgLSAoKHBhZ2VXaWR0aCAtIHNjYWxlZERpdldp
ZHRoKSAvIDIpKSAvIHNjYWxlOwotICAgIGludCB2U2Nyb2xsID0gKChkaXZQb3NZICogc2NhbGUp
IC0gKChwYWdlSGVpZ2h0IC0gc2NhbGVkRGl2SGVpZ2h0KSAvIDIpKSAvIHNjYWxlOwotICAgIEVY
UEVDVF9ORUFSKHBhZ2VXaWR0aCAvIGRpdldpZHRoLCBzY2FsZSwgMC4xKTsKLSAgICBFWFBFQ1Rf
RVEoaFNjcm9sbCwgc2Nyb2xsLngpOwotICAgIEVYUEVDVF9FUSh2U2Nyb2xsLCBzY3JvbGwueSk7
Ci0KLSAgICAvLyBUZXN0IHpvb20gb3V0IHRvIG92ZXJ2aWV3IHNjYWxlLgotICAgIHdlYlZpZXdJ
bXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2Nh
bGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5j
b21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1w
bDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2Nh
bGUpOwotICAgIEVYUEVDVF9FUShXZWJQb2ludCgwLCAwKSwgc2Nyb2xsKTsKLQotICAgIC8vIFRl
c3RzIGZvciBjbGFtcGVkIHNjYWxpbmcuCi0gICAgLy8gVGVzdCBjbGFtcCB0byBkZXZpY2Ugc2Nh
bGU6Ci0gICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwu
eCwgc2Nyb2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0g
ICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDIuNSk7Ci0gICAgd2ViVmlld0lt
cGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZp
ZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
LjUsIHNjYWxlKTsKLQotICAgIC8vIFRlc3QgY2xhbXAgdG8gbWluaW11bSBzY2FsZToKLSAgICB3
ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwu
eSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3
SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEuNSAvIHdlYlZpZXdJbXBsLT5kZXZpY2VT
Y2FsZUZhY3RvcigpLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAg
IHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBv
aW50LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMS41LCBzY2FsZSk7Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50KDAsIDApLCBzY3Jv
bGwpOwotCi0gICAgLy8gVGVzdCBjbGFtcCB0byBtYXhpbXVtIHNjYWxlOgotICAgIHdlYlZpZXdJ
bXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2Nh
bGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5z
ZXREZXZpY2VTY2FsZUZhY3Rvcig0KTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFj
dG9yTGltaXRzKDAsIDMgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
d2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9p
bnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgzLCBzY2FsZSk7CisgICAgV2ViUmVjdCB0b3BEaXYoMjAwLCAxMDAsIDIwMCwgMTUw
KTsKKyAgICBXZWJSZWN0IGJvdHRvbURpdigyMDAsIDMwMCwgMjAwLCAxNTApOworICAgIFdlYlBv
aW50IHRvcFBvaW50KHRvcERpdi54ICsgNTAsIHRvcERpdi55ICsgNTApOworICAgIFdlYlBvaW50
IGJvdHRvbVBvaW50KGJvdHRvbURpdi54ICsgNTAsIGJvdHRvbURpdi55ICsgNTApOworICAgIGZs
b2F0IHNjYWxlOworICAgIFdlYlBvaW50IHNjcm9sbDsKKyAgICBib29sIGlzQW5jaG9yOworICAg
IHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwg
KHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBa
b29tTWluTWF4KSAvIDIpOworCisgICAgLy8gVGVzdCBkb3VibGUgdGFwIG9uIHR3byBkaWZmZXJl
bnQgZGl2cworICAgIC8vIEFmdGVyIGZpcnN0IHpvb20sIHdlIHNob3VsZCBnbyBiYWNrIHRvIG1p
bmltdW0gcGFnZSBzY2FsZSB3aXRoIGEgc2Vjb25kIGRvdWJsZSB0YXAuCisgICAgc2ltdWxhdGVE
b3VibGVUYXAod2ViVmlld0ltcGwsIHRvcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBz
Y2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGJvdHRvbVBvaW50LCBz
Y3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBs
LT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKworICAgIC8vIElmIHRoZSB1c2Vy
IHBpbmNoIHpvb21zIGFmdGVyIGRvdWJsZSB0YXAsIGEgc2Vjb25kIGRvdWJsZSB0YXAgc2hvdWxk
IHpvb20gYmFjayB0byB0aGUgZGl2LgorICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBs
LCB0b3BQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9F
USh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHdlYlZpZXdJ
bXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMC42KTsKKyAgICBzaW11bGF0ZURv
dWJsZVRhcCh3ZWJWaWV3SW1wbCwgYm90dG9tUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9y
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCks
IHNjYWxlKTsKK30KIAotICAgIC8vIFRlc3QgZm9yIE5vbi1kb3VibGV0YXAgc2NhbGluZwotICAg
IHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMSwgV2ViUG9pbnQoMCwgMCkpOwotICAg
IHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0KTsKLSAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7Ci0gICAgLy8gVGVzdCB6b29taW5nIGludG8gZGl2LgotICAgIHdlYlZpZXdJbXBs
LT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QoMjUwLCAyNTAsIDEwLCAx
MCksIFdlYlZpZXdJbXBsOjpGaW5kSW5QYWdlLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1Rf
TkVBUihwYWdlV2lkdGggLyBkaXZXaWR0aCwgc2NhbGUsIDAuMSk7CitURVNUX0YoV2ViRnJhbWVU
ZXN0LCBEaXZBdXRvWm9vbVNjYWxlQm91bmRzVGVzdCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJnZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1s
Iik7CisKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQg
dmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAg
ZmxvYXQgZG91YmxlVGFwWm9vbU1pbk1heCA9IDEuMjsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0
ID0gV2ViUmVjdCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgV2Vi
Vmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRl
c3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X3NjYWxlX2Jv
dW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsK
KyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZp
ZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwor
ICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgNCk7CisgICAgd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworICAgIHdl
YlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxLjVmKTsKKyAgICBmbG9hdCBkb3VibGVU
YXBab29tTWluTWF4U2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
ICogZG91YmxlVGFwWm9vbU1pbk1heDsKIAotICAgIC8vIERyb3AgYW55IHBlbmRpbmcgZmFrZSBt
b3VzZSBldmVudHMgZnJvbSB6b29taW5nIGJlZm9yZSBsZWF2aW5nIHRoZSB0ZXN0LgotICAgIHdl
YlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+Y2xlYXIoKTsK
KyAgICBXZWJSZWN0IGRpdigyMDAsIDEwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IGRvdWJs
ZVRhcFBvaW50KGRpdi54ICsgNTAsIGRpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxlOworICAg
IFdlYlBvaW50IHNjcm9sbDsKKyAgICBib29sIGlzQW5jaG9yOworCisgICAgLy8gVGVzdCBkb3Vi
bGUgdGFwIHNjYWxlIGJvdW5kcy4KKyAgICAvLyBtaW5pbXVtUGFnZVNjYWxlIDwgZG91YmxlVGFw
Wm9vbU1pbk1heFNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFu
ZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1pbk1heCkgLyAyKTsKKyAg
ICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwg
c2NhbGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmlj
ZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1w
bCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOwor
ICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nyb2xs
LCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gWm9vbSBpbiB0byByZXNldCBkb3Vi
bGVfdGFwX3pvb21faW5fZWZmZWN0IGZsYWcuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xs
QW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjEpOworICAgIC8vIGRldmljZURwaVNjYWxlIDwgbWluaW11
bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21NaW5NYXhTY2FsZQorICAgIHdlYlZpZXdJbXBsLT5z
ZXREZXZpY2VTY2FsZUZhY3RvcigwLjVmKTsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91
dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1pbk1heCkgLyAyKTsKKyAgICBzaW11
bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUs
IGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdl
U2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBs
LCBkb3VibGVUYXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9G
TE9BVF9FUShkb3VibGVUYXBab29tTWluTWF4U2NhbGUsIHNjYWxlKTsKKyAgICBzaW11bGF0ZURv
dWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5j
aG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVG
YWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gWm9vbSBpbiB0byByZXNldCBkb3VibGVfdGFwX3pv
b21faW5fZWZmZWN0IGZsYWcuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUo
V2ViU2l6ZSgpLCAxLjEpOworICAgIC8vIG1pbmltdW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29t
TWluTWF4U2NhbGUgPCBkZXZpY2VEcGlTY2FsZQorICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcigxLjFmKTsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3
SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rv
cigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1pbk1heCkgLyAyKTsKKyAgICBzaW11bGF0ZURvdWJs
ZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9y
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0
b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVU
YXBQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUShk
b3VibGVUYXBab29tTWluTWF4U2NhbGUsIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3
ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9yKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwg
c2NhbGUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0
b196b29tX3Rlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJlNjQ0MmZiYWZiYjM0ZjUzZGFmYzY1ZWY4
MDRkNjRmY2Q0YjlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAxMDBw
eDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4Ij4KKyAgICAgIDxwIGlkPSJEaXYiPlRvcCBE
aXY8L3A+CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMzAwcHg7IHdpZHRoOiAy
MDBweDsgaGVpZ2h0OiAxNTBweCI+CisgICAgICA8cCBpZD0iRGl2Ij5Cb3R0b20gRGl2PC9wPgor
ICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3JfYXV0b196b29t
X3Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVf
Ym91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYzhlOWMx
NjUwMzQ4YmM2Yjg1NjNkNzI3YmEyODBhNTZiNDVjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3Jf
YXV0b196b29tX3Rlc3QuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICA8Ym9keT4KKyAg
ICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRl
OyBsZWZ0OiAyMDBweDsgdG9wOiAxMDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDQwMHB4Ij4K
KyAgICAgIDxwIGlkPSJEaXYiPkRpdjwvcD4KKyAgICA8L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2Fs
ZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwK
aW5kZXggMTgxN2RjNDdkNTRiNTNiYTJjNDZhNWIwYTliYTc0OTlmY2EyNzBlYy4uOTVlN2IzNzg3
ZDVjNjEwMTZiZDdjYTI1MGQ4YTgzZmQ2ZTc1ODJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rl
c3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxl
X2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sCkBAIC0xLDEzICsxLDEwIEBACiA8aHRt
bD4KICAgPGJvZHk+Ci0gICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDY0MHB4OyBoZWln
aHQ6IDQ4MHB4Ij4KLSAgICAgIDxwPlRvcCBEaXY8L3A+Ci0gICAgICA8ZGl2IHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZTsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9w
OiAyMDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4Ij4KLSAgICAgICAgPHAgaWQ9Imlu
bmVyRGl2Ij5EaXYgdG8gem9vbSB0bzwvcD4KLSAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogcmVkOyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDIyMHB4OyB0b3A6IDM1MHB4OyB3
aWR0aDogMTYwcHg7IGhlaWdodDogNDBweCI+Ci0gICAgICAgICAgPHAgaWQ9ImlubmVySW5uZXJE
aXYiPkRpdiBOT1QgdG8gem9vbSB0bzwvcD4KLSAgICAgICAgPC9kaXY+Ci0gICAgICA8L2Rpdj4K
KyAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAxMDBweDsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDE1MHB4
Ij4KKyAgICAgIDxwIGlkPSJ3aWRlRGl2Ij5XaWRlIGRpdjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBs
ZWZ0OiAyMDBweDsgdG9wOiAzMDBweDsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDgwMCI+CisgICAg
ICA8cCBpZD0idGFsbERpdiI+VGFsbCBkaXY8L3A+CiAgICAgPC9kaXY+CiAgIDwvYm9keT4KIDwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165882</attachid>
            <date>2012-09-26 14:48:13 -0700</date>
            <delta_ts>2012-09-27 11:58:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120926144732.patch</filename>
            <type>text/plain</type>
            <size>28273</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZlY2Y5OTUxY2Y3ZTk2OWZmZjMxYTI1NTZhZTc1MmJlNzU1MjE5ZmEuLmVhZGVkNWMwMTYyNmE2
MWNiNGQwMWI2YWMyZDA3NTA5NzY4ZTA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yMCAgRGlyayBQcmFua2UgIDxkcHJh
bmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICByb2xsIENocm9taXVtIHRvIHIxNTc4MjkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzY0YWU2ZGNh
MWFhYTVlYjJkYmNmMmY3MDNkYmEwM2Y2Y2U0ODZhMS4uMDU3NTgyZjZlZDAyOGU0OWU4YTg1YThh
YmJhODE1NjI5NWE0ZDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChz
dWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAgZ2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLiku
IFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBp
bnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsKK3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRp
YXRlZFBvaW50UGFkZGluZyA9IDExOwogc3RhdGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVy
ZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVm
YXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRN
aW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBjb25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1h
dGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4yNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVU
YXBab29tTWluTWF4ID0gMS4yOwogCiAvLyBDb25zdGFudHMgZm9yIHpvb21pbmcgaW4gb24gYSBm
b2N1c2VkIHRleHQgZmllbGQuCiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbEFuZFNjYWxlQW5p
bWF0aW9uRHVyYXRpb25JblNlY29uZHMgPSAwLjI7CkBAIC0zOTEsNiArMzkzLDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1faWdub3Jl
Vmlld3BvcnRUYWdNYXhpbXVtU2NhbGUoZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3Rvcklz
U2V0KGZhbHNlKQogICAgICwgbV9zYXZlZFBhZ2VTY2FsZUZhY3RvcigwKQorICAgICwgbV9kb3Vi
bGVUYXBab29tSW5FZmZlY3QoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxz
ZSkKICAgICAsIG1fZG9pbmdEcmFnQW5kRHJvcChmYWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRF
dmVudHMoZmFsc2UpCkBAIC03NzAsNiArNzczLDkgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxl
R2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAg
ICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBh
bmltYXRlWm9vbUFyb3VuZFBvaW50KFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpLCBEb3VibGVU
YXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2lu
OgogICAgICAgICBtX2NsaWVudC0+Y2FuY2VsU2NoZWR1bGVkQ29udGVudEludGVudHMoKTsKQEAg
LTEwNjksMjQgKzEwNzUsMzQgQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6d2lkZW5SZWN0V2l0aGlu
UGFnZUJvdW5kcyhjb25zdCBXZWJSZWN0JiBzb3VyY2UsIGludCB0YXJnZXQKICAgICByZXR1cm4g
V2ViUmVjdChuZXdYLCBzb3VyY2UueSwgbmV3V2lkdGgsIHNvdXJjZS5oZWlnaHQpOwogfQogCi12
b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGNvbnN0IFdl
YlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHlwZSwgZmxvYXQmIHNjYWxlLCBXZWJQ
b2ludCYgc2Nyb2xsKQordm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5cGUsIGZs
b2F0JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpCiB7CisKICAgICBz
Y2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOwogICAgIHNjcm9sbC54ID0gc2Nyb2xsLnkgPSAwOwog
ICAgIFdlYlJlY3QgdGFyZ2V0UmVjdCA9IGhpdFJlY3Q7CisgICAgLy8gUGFkZGluZyBvbmx5IGRl
cGVuZHMgb24gcGFnZSBzY2FsZSB3aGVuIHRyaWdnZXJlZCBieSBtYW51YWxseSB0YXBwaW5nCisg
ICAgaW50IHBhZGRpbmcgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKSA/IHRvdWNoUG9pbnRQYWRk
aW5nIDogbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZzsKICAgICBpZiAodGFyZ2V0UmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRSZWN0LmhlaWdodCA9
IHRvdWNoUG9pbnRQYWRkaW5nOwotCisgICAgICAgIHRhcmdldFJlY3Qud2lkdGggPSB0YXJnZXRS
ZWN0LmhlaWdodCA9IHBhZGRpbmc7CiAgICAgV2ViUmVjdCByZWN0ID0gY29tcHV0ZUJsb2NrQm91
bmRzKHRhcmdldFJlY3QsIHpvb21UeXBlKTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRmluZEluUGFn
ZSAmJiByZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5v
IG5lZWQgdG8gc2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKKyAgICAgICAgLy8g
YmUgdmlzaWJsZSkuIEZJWE1FOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3QgYWx3YXlzIHRydWUu
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBjb25zdCBmbG9hdCBvdmVydmlld1NjYWxl
ID0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgc2NhbGVVbmNoYW5nZWQgPSB0
cnVlOwogICAgIGlmICghcmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gUGFnZXMgc2hvdWxk
IGJlIGFzIGxlZ2libGUgYXMgb24gZGVza3RvcCB3aGVuIGF0IGRwaSBzY2FsZSwgc28gbm8KICAg
ICAgICAgLy8gbmVlZCB0byB6b29tIGluIGZ1cnRoZXIgd2hlbiBhdXRvbWF0aWNhbGx5IGRldGVy
bWluaW5nIHpvb20gbGV2ZWwKICAgICAgICAgLy8gKGFmdGVyIGRvdWJsZSB0YXAsIGZpbmQgaW4g
cGFnZSwgZXRjKSwgdGhvdWdoIHRoZSB1c2VyIHNob3VsZCBzdGlsbAogICAgICAgICAvLyBiZSBh
bGxvd2VkIHRvIG1hbnVhbGx5IHBpbmNoIHpvb20gaW4gZnVydGhlciBpZiB0aGV5IGRlc2lyZS4K
LSAgICAgICAgY29uc3QgZmxvYXQgbWF4U2NhbGUgPSBkZXZpY2VTY2FsZUZhY3RvcigpOworICAg
ICAgICBmbG9hdCBhZGp1c3RlZERwaVNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgY29uc3QgZmxvYXQgbWluTWF4U2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgKiBk
b3VibGVUYXBab29tTWluTWF4OworICAgICAgICBmbG9hdCBtYXhTY2FsZSA9IGFkanVzdGVkRHBp
U2NhbGU7CisgICAgICAgIGlmIChhZGp1c3RlZERwaVNjYWxlIDwgbWluTWF4U2NhbGUpCisgICAg
ICAgICAgICBtYXhTY2FsZSA9IChzY2FsZSA9PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpID8g
bWluTWF4U2NhbGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAKICAgICAgICAgY29uc3Qg
ZmxvYXQgZGVmYXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiAq
IGRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIGNvbnN0IGZsb2F0IG1pbmltdW1NYXJnaW4g
PSBkb3VibGVUYXBab29tQ29udGVudE1pbmltdW1NYXJnaW4gKiBkZXZpY2VTY2FsZUZhY3Rvcigp
OwpAQCAtMTA5OSw3ICsxMTE1LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5k
U2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm8KICAgICAgICAg
cmVjdCA9IHdpZGVuUmVjdFdpdGhpblBhZ2VCb3VuZHMocmVjdCwKICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KGRlZmF1bHRNYXJnaW4gKiByZWN0LndpZHRoIC8gbV9zaXplLndpZHRo
KSwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1pbmltdW1NYXJnaW4gKiByZWN0
LndpZHRoIC8gbV9zaXplLndpZHRoKSk7Ci0KICAgICAgICAgLy8gRml0IGJsb2NrIHRvIHNjcmVl
biwgcmVzcGVjdGluZyBsaW1pdHMuCiAgICAgICAgIHNjYWxlICo9IHN0YXRpY19jYXN0PGZsb2F0
PihtX3NpemUud2lkdGgpIC8gcmVjdC53aWR0aDsKICAgICAgICAgc2NhbGUgPSBtaW4oc2NhbGUs
IG1heFNjYWxlKTsKQEAgLTExMDgsNDYgKzExMjMsNTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRv
Wm8KICAgICAgICAgc2NhbGVVbmNoYW5nZWQgPSBmYWJzKHBhZ2VTY2FsZUZhY3RvcigpIC0gc2Nh
bGUpIDwgbWluU2NhbGVEaWZmZXJlbmNlOwogICAgIH0KIAotICAgIGlmICh6b29tVHlwZSA9PSBE
b3VibGVUYXApIHsKLSAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5jaGFuZ2Vk
KSB7Ci0gICAgICAgICAgICAvLyBab29tIG91dCB0byBvdmVydmlldyBtb2RlLgotICAgICAgICAg
ICAgaWYgKG92ZXJ2aWV3U2NhbGUpCi0gICAgICAgICAgICAgICAgc2NhbGUgPSBvdmVydmlld1Nj
YWxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZWN0
LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5vIG5lZWQgdG8g
c2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKLSAgICAgICAgLy8gYmUgdmlzaWJs
ZSkuIEZJWE1FOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3QgYWx3YXlzIHRydWUuCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBjYWxsZWQg
Zm9yIGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAotICAgIC8vIHRoZW4gaWYgdGhlIHVz
ZXIgbWFudWFsbHkgem9vbXMgaW4gaXQnZCBiZSBuaWNlIHRvIHByZXNlcnZlIHRoZSByZWxhdGl2
ZQotICAgIC8vIGluY3JlYXNlIGluIHpvb20gdGhleSBjYXVzZWQgKGlmIHRoZXkgem9vbSBvdXQg
dGhlbiBpdCdzIG9rIHRvIHpvb20KLSAgICAvLyB0aGVtIGJhY2sgaW4gYWdhaW4pLiBUaGlzIGlz
bid0IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudCBkb3VibGUtdGFwCi0gICAgLy8gem9vbSBz
dHJhdGVneSAoZml0dGluZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVuKSB0aG91
Z2guCi0KLSAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2NhbGUgKiBw
YWdlU2NhbGVGYWN0b3IoKTsKLSAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1fc2l6ZS53aWR0aCAv
IHNjYWxlICogcGFnZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAvLyBTY3JvbGwgdG8gdmVydGljYWxs
eSBhbGlnbiB0aGUgYmxvY2suCi0gICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVuSGVpZ2h0KSB7
Ci0gICAgICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KLSAgICAgICAgcmVj
dC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0LmhlaWdodCk7CisgICAgaWYgKHpvb21U
eXBlID09IERvdWJsZVRhcCAmJiAocmVjdC5pc0VtcHR5KCkgfHwgc2NhbGVVbmNoYW5nZWQgfHwg
bV9kb3VibGVUYXBab29tSW5FZmZlY3QpKSB7CisgICAgICAgICAgLy8gWm9vbSBvdXQgdG8gbWlu
aW11bSBzY2FsZS4KKyAgICAgICAgICBzY2FsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcjsK
KyAgICAgICAgICBzY3JvbGwgPSBXZWJQb2ludChoaXRSZWN0LngsIGhpdFJlY3QueSk7CisgICAg
ICAgICAgaXNBbmNob3IgPSB0cnVlOworICAgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0
ID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRW5zdXJlIHBvc2l0aW9uIHdlJ3Jl
IHpvb21pbmcgdG8gKCsgcGFkZGluZykgaXNuJ3Qgb2ZmIHRoZSBib3R0b20gb2YKLSAgICAgICAg
Ly8gdGhlIHNjcmVlbi4KLSAgICAgICAgcmVjdC55ID0gbWF4PGZsb2F0PihyZWN0LnksIGhpdFJl
Y3QueSArIHRvdWNoUG9pbnRQYWRkaW5nIC0gc2NyZWVuSGVpZ2h0KTsKLSAgICB9IC8vIE90aGVy
d2lzZSB0b3AgYWxpZ24gdGhlIGJsb2NrLgotCi0gICAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9y
IGhvcml6b250YWwgYWxpZ25tZW50LgotICAgIGlmIChyZWN0LndpZHRoIDwgc2NyZWVuV2lkdGgp
Ci0gICAgICAgIHJlY3QueCAtPSAwLjUgKiAoc2NyZWVuV2lkdGggLSByZWN0LndpZHRoKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlY3QueCA9IG1heDxmbG9hdD4ocmVjdC54LCBoaXRSZWN0LnggKyB0
b3VjaFBvaW50UGFkZGluZyAtIHNjcmVlbldpZHRoKTsKKyAgICAgICAgaWYgKHpvb21UeXBlID09
IERvdWJsZVRhcCAmJiBzY2FsZSAhPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpCisgICAgICAg
ICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAg
ICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICAgICAgLy8gRklYTUU6IElm
IHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZvciBhdXRvIHpvb20gZHVyaW5nIGZpbmQgaW4gcGFnZSwK
KyAgICAgICAgLy8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6b29tcyBpbiBpdCdkIGJlIG5p
Y2UgdG8gcHJlc2VydmUgdGhlCisgICAgICAgIC8vIHJlbGF0aXZlIGluY3JlYXNlIGluIHpvb20g
dGhleSBjYXVzZWQgKGlmIHRoZXkgem9vbSBvdXQgdGhlbiBpdCdzIG9rCisgICAgICAgIC8vIHRv
IHpvb20gdGhlbSBiYWNrIGluIGFnYWluKS4gVGhpcyBpc24ndCBjb21wYXRpYmxlIHdpdGggb3Vy
IGN1cnJlbnQKKyAgICAgICAgLy8gZG91YmxlLXRhcCB6b29tIHN0cmF0ZWd5IChmaXR0aW5nIHRo
ZSBjb250YWluaW5nIGJsb2NrIHRvIHRoZSBzY3JlZW4pCisgICAgICAgIC8vIHRob3VnaC4KKwor
ICAgICAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2NhbGUgKiBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQgc2NyZWVuV2lkdGggPSBtX3NpemUud2lkdGgg
LyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworCisgICAgICAgIC8vIFNjcm9sbCB0byB2ZXJ0
aWNhbGx5IGFsaWduIHRoZSBibG9jay4KKyAgICAgICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVu
SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBzaG9ydCBibG9ja3Mu
CisgICAgICAgICAgICByZWN0LnkgLT0gMC41ICogKHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3ZSdy
ZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCisgICAgICAg
ICAgICAvLyB0aGUgc2NyZWVuLgorICAgICAgICAgICAgcmVjdC55ID0gbWF4PGZsb2F0PihyZWN0
LnksIGhpdFJlY3QueSArIHBhZGRpbmcgLSBzY3JlZW5IZWlnaHQpOworICAgICAgICB9IC8vIE90
aGVyd2lzZSB0b3AgYWxpZ24gdGhlIGJsb2NrLgorCisgICAgICAgIC8vIERvIHRoZSBzYW1lIHRo
aW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KKyAgICAgICAgaWYgKHJlY3Qud2lkdGggPCBz
Y3JlZW5XaWR0aCkKKyAgICAgICAgICAgIHJlY3QueCAtPSAwLjUgKiAoc2NyZWVuV2lkdGggLSBy
ZWN0LndpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVjdC54ID0gbWF4PGZsb2F0
PihyZWN0LngsIGhpdFJlY3QueCArIHBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIHNj
cm9sbC54ID0gcmVjdC54OworICAgICAgICBzY3JvbGwueSA9IHJlY3QueTsKKyAgICAgICAgaXNB
bmNob3IgPSBmYWxzZTsKKyAgICB9CiAKLSAgICBzY3JvbGwueCA9IHJlY3QueDsKLSAgICBzY3Jv
bGwueSA9IHJlY3QueTsKKyAgICBzY2FsZSA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMo
c2NhbGUpOworICAgIHNjcm9sbCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPndpbmRv
d1RvQ29udGVudHMoc2Nyb2xsKTsKKyAgICBmbG9hdCBzY2FsZURlbHRhID0gc2NhbGUgLyBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICBzY3JvbGwgPSBXZWJQb2ludChzY3JvbGwueCAqIHNjYWxlRGVs
dGEsIHNjcm9sbC55ICogc2NhbGVEZWx0YSk7CisgICAgaWYgKCFpc0FuY2hvcikKKyAgICAgICAg
c2Nyb2xsID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbCwgc2NhbGUpOwogfQogCiBzdGF0aWMg
Ym9vbCBoaWdobGlnaHRDb25kaXRpb25zKE5vZGUqIG5vZGUpCkBAIC0xMjEzLDExICsxMjM1LDEz
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGVab29tQXJvdW5kUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBBdXRvWm9vbVR5cGUgem9vCiAKICAgICBmbG9hdCBzY2FsZTsKICAgICBXZWJQ
b2ludCBzY3JvbGw7Ci0gICAgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChXZWJSZWN0
KHBvaW50LngoKSwgcG9pbnQueSgpLCAwLCAwKSwgem9vbVR5cGUsIHNjYWxlLCBzY3JvbGwpOwor
ICAgIGJvb2wgaXNBbmNob3I7CisgICAgV2ViUG9pbnQgcHQgPSBwb2ludDsKKyAgICBjb21wdXRl
U2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocHQueCwgcHQueSwgMCwgMCksIHpvb21U
eXBlLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CiAKICAgICBib29sIGlzRG91YmxlVGFwID0g
KHpvb21UeXBlID09IERvdWJsZVRhcCk7CiAgICAgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzID0g
aXNEb3VibGVUYXAgPyBkb3VibGVUYXBab29tQW5pbWF0aW9uRHVyYXRpb25JblNlY29uZHMgOiAw
OwotICAgIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbCwgaXNEb3VibGVUYXAsIHNjYWxl
LCBkdXJhdGlvbkluU2Vjb25kcyk7CisgICAgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xs
LCBpc0FuY2hvciwgc2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKICNlbmRpZgogfQogCkBAIC0z
NDU5LDggKzM0ODMsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBp
c05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZpZ2F0aW9uV2l0aGluUGEKICAgICBtX25ld05hdmln
YXRpb25Mb2FkZXIgPSAwOwogI2VuZGlmCiAgICAgbV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBm
YWxzZTsKLSAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0aW9uV2l0aGluUGFn
ZSkKKyAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0aW9uV2l0aGluUGFnZSkg
ewogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7CisgICAgICAgIG1fZG91
YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIGxp
bmsgaGlnaGxpZ2h0IGZyb20gcHJldmlvdXMgcGFnZSBpcyBjbGVhcmVkLgogICAgIG1fbGlua0hp
Z2hsaWdodC5jbGVhcigpOwpAQCAtMzkyNyw2ICszOTUzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFn
ZVNjYWwKICAgICAgICAgV2ViUG9pbnQgc2NhbGVkU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldC53
aWR0aCAqIHBhZ2VTY2FsZURlbHRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsT2Zmc2V0LmhlaWdodCAqIHBhZ2VTY2FsZURlbHRhKTsKICAgICAgICAgc2V0UGFn
ZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxlRGVsdGEsIHNjYWxlZFNj
cm9sbE9mZnNldCk7CisgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA4
NjU4OTg2MDg0NGM1ZDI4Y2RkZmQwNGFhYWQ5MDhjNmFlNmNhZWZmLi5jZDkyYmM5OWQ4YjRlMmQw
NTU5ZDJiYmMyZTIwZWYzNzc5OWVkMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTU2MCw3ICs1NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmdWxsRnJh
bWVQbHVnaW5ab29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpOwogCiAjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVj
dChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0JiBzY2FsZSwgV2Vi
UG9pbnQmIHNjcm9sbCk7CisgICAgdm9pZCBjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0
KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSwgZmxvYXQmIHNjYWxlLCBXZWJQ
b2ludCYgc2Nyb2xsLCBib29sICZpc0FuY2hvcik7CiAgICAgV2ViQ29yZTo6Tm9kZSogYmVzdFRv
dWNoTGlua05vZGUoV2ViQ29yZTo6SW50UG9pbnQgdG91Y2hFdmVudExvY2F0aW9uKTsKICAgICB2
b2lkIGVuYWJsZVRvdWNoSGlnaGxpZ2h0KFdlYkNvcmU6OkludFBvaW50IHRvdWNoRXZlbnRMb2Nh
dGlvbik7CiAjZW5kaWYKQEAgLTczOSw2ICs3MzksOSBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1f
c2F2ZWRQYWdlU2NhbGVGYWN0b3I7IC8vIDAgbWVhbnMgdGhhdCBubyBwYWdlIHNjYWxlIGZhY3Rv
ciBpcyBzYXZlZC4KICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2F2ZWRTY3JvbGxPZmZzZXQ7CiAK
KyAgICAvLyBXaGV0aGVyIHRoZSBjdXJyZW50IHNjYWxlIHdhcyBhY2hpZXZlZCBieSB6b29taW5n
IGluIHdpdGggZG91YmxlIHRhcC4KKyAgICBib29sIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0Owor
CiAgICAgYm9vbCBtX2NvbnRleHRNZW51QWxsb3dlZDsKIAogICAgIGJvb2wgbV9kb2luZ0RyYWdB
bmREcm9wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3Bw
CmluZGV4IGEwMDQ5YjY3ZThkNDFiNjJiYTUyODViOWExMDBkNjljNjA2ZjQwMzEuLmRhZjk3Zjdm
NmViOWZkNDFkNzkwNTYwYzBiYTcyZWNlMzIxZTg4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0KICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIK
QEAgLTMxNiw3NiArMzE1LDE4MiBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDYW5PdmVycmlkZU1h
eGltdW1TY2FsZUZhY3RvcikKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2NsYXNz
IERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgOiBwdWJsaWMgV2ViVmlld0NsaWVudCB7Cisg
cHVibGljOgorICAgIHZpcnR1YWwgV2ViUmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUgeyByZXR1
cm4gbV93aW5kb3dSZWN0OyB9CisKKyAgICBXZWJSZWN0IG1fd2luZG93UmVjdDsKK307CisKK3Zv
aWQgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBX
ZWJQb2ludCBzY3JvbGwsIGZsb2F0IHNjYWxlKQoreworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdl
U2NhbGVGYWN0b3Ioc2NhbGUsIFdlYlBvaW50KHNjcm9sbC54LCBzY3JvbGwueSkpOworICAgIHdl
YlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXQoKTsKK30KKwog
VEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2QXV0b1pvb21QYXJhbXNUZXN0KQogewogICAgIHJlZ2lz
dGVyTW9ja2VkSHR0cFVSTExvYWQoImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rl
c3QuaHRtbCIpOwogCi0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sIiwgdHJ1
ZSkpOwotICAgIGludCBwYWdlV2lkdGggPSA2NDA7Ci0gICAgaW50IHBhZ2VIZWlnaHQgPSA0ODA7
Ci0gICAgaW50IGRpdlBvc1ggPSAyMDA7Ci0gICAgaW50IGRpdlBvc1kgPSAyMDA7Ci0gICAgaW50
IGRpdldpZHRoID0gMjAwOwotICAgIGludCBkaXZIZWlnaHQgPSAxNTA7Ci0gICAgV2ViUmVjdCBk
b3VibGVUYXBQb2ludCgyNTAsIDI1MCwgMCwgMCk7Ci0gICAgd2ViVmlld0ltcGwtPnJlc2l6ZShX
ZWJTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworICAgIERpdkF1dG9ab29tVGVzdFdlYlZp
ZXdDbGllbnQgY2xpZW50OworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2
aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0gV2ViUmVjdCgw
LCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgV2ViVmlld0ltcGwqIHdl
YlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpj
cmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21f
aW50b19kaXZfdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBs
LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldERldmlj
ZVNjYWxlRmFjdG9yKDIuMGYpOworCisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZp
ZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VT
Y2FsZUZhY3RvckxpbWl0cygwLjAxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1w
bCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisKKyAgICBXZWJSZWN0IHdpZGVEaXYoMjAwLCAx
MDAsIDQwMCwgMTUwKTsKKyAgICBXZWJSZWN0IHRhbGxEaXYoMjAwLCAzMDAsIDQwMCwgODAwKTsK
KyAgICBXZWJSZWN0IGRvdWJsZVRhcFBvaW50V2lkZSgod2lkZURpdi54ICsgNTApICogd2ViVmll
d0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh3aWRlRGl2LnkgKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksIDAsIDAp
OworICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnRUYWxsKCh0YWxsRGl2LnggKyA1MCkgKiB3ZWJW
aWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHRhbGxEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwgMCwg
MCk7CiAgICAgZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAgIGJvb2wgaXNB
bmNob3I7CisKKyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdpZGUgZGl2Lgor
ICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRh
cFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNo
b3IpOworICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRoZSBzY3JlZW4g
KG1vZHVsbyBtYXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJlZCAobW9kdWxv
IGludGVnZXIgcm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxv
YXQpIHdpZGVEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHdpZGVEaXYu
eCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdpZGVEaXYueSAr
IHdpZGVEaXYuaGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAvIDIpOworICAg
IEVYUEVDVF9ORUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1RfRVEoZmFsc2Us
IGlzQW5jaG9yKTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBs
LCBzY3JvbGwsIHNjYWxlKTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0byBtaW5pbXVt
IHNjYWxlLgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0
KGRvdWJsZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9s
bCwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlzQW5jaG9yKTsK
KworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgw
LCAwKSwgc2NhbGUpOworCisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcgaW50byB0YWxs
IGRpdi4KKyAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChk
b3VibGVUYXBQb2ludFRhbGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGws
IGlzQW5jaG9yKTsKKyAgICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUgdG9wIGxlZnQg
b2YgdGhlIHZpZXdwb3J0LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQp
IHRhbGxEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueCAq
IHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueSAqIHNjYWxl
LCBzY3JvbGwueSwgMjApOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3IpOworCisgICAg
Ly8gVGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2FsaW5nCisgICAgLy8gVGVzdCB6b29taW5nIGlu
dG8gZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0
KFdlYlJlY3QoMjUwLCAyNTAsIDEwLCAxMCksIFdlYlZpZXdJbXBsOjpGaW5kSW5QYWdlLCBzY2Fs
ZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX05FQVIodmlld3BvcnRXaWR0aCAvIChm
bG9hdCkgd2lkZURpdi53aWR0aCwgc2NhbGUsIDAuMSk7Cit9CisKK3ZvaWQgc2ltdWxhdGVEb3Vi
bGVUYXAoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBXZWJQb2ludCYgcG9pbnQsIFdlYlBvaW50
JiBzY3JvbGwsIGZsb2F0JiBzY2FsZSwgYm9vbCYgaXNBbmNob3IpCit7CisgICAgV2ViUmVjdCBy
ZWN0KHN0YXRpY19jYXN0PGludD4oKHBvaW50LnggKyA1MCkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNj
YWxlRmFjdG9yKCkpLAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KChwb2ludC55
ICsgNTApICogd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKSwgMCwgMCk7CisgICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QocmVjdCwgV2ViVmlld0lt
cGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIHNldFNjYWxlQW5k
U2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBzY3JvbGwsIHNjYWxlKTsKK30KIAotICAgIC8v
IFRlc3QgZm9yIERvdWJsZXRhcCBzY2FsaW5nCitURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRv
Wm9vbU11bHRpcGxlRGl2c1Rlc3QpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgi
Z2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwiKTsKIAotICAgIC8vIFRl
c3RzIGZvciB6b29taW5nIGluIGFuZCBvdXQgd2l0aG91dCBjbGFtcGluZy4KLSAgICAvLyBTZXQg
ZGV2aWNlIHNjYWxlIGFuZCBzY2FsZSBsaW1pdHMgc28gd2UgZG9udCBnZXQgY2xhbXBlZC4KLSAg
ICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwt
PnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAg
IGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsK
KyAgICBmbG9hdCBkb3VibGVUYXBab29tTWluTWF4ID0gMS4yOworICAgIGNsaWVudC5tX3dpbmRv
d1JlY3QgPSBXZWJSZWN0KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAg
ICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfbXVs
dGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsK
KyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZp
ZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOwor
ICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgNCk7CisgICAgd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworICAgIHdl
YlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxLjVmKTsKIAotICAgIC8vIFRlc3Qgem9v
bWluZyBpbnRvIGRpdi4KLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNj
cm9sbCk7Ci0gICAgZmxvYXQgc2NhbGVkRGl2V2lkdGggPSBkaXZXaWR0aCAqIHNjYWxlOwotICAg
IGZsb2F0IHNjYWxlZERpdkhlaWdodCA9IGRpdkhlaWdodCAqIHNjYWxlOwotICAgIGludCBoU2Ny
b2xsID0gKChkaXZQb3NYICogc2NhbGUpIC0gKChwYWdlV2lkdGggLSBzY2FsZWREaXZXaWR0aCkg
LyAyKSkgLyBzY2FsZTsKLSAgICBpbnQgdlNjcm9sbCA9ICgoZGl2UG9zWSAqIHNjYWxlKSAtICgo
cGFnZUhlaWdodCAtIHNjYWxlZERpdkhlaWdodCkgLyAyKSkgLyBzY2FsZTsKLSAgICBFWFBFQ1Rf
TkVBUihwYWdlV2lkdGggLyBkaXZXaWR0aCwgc2NhbGUsIDAuMSk7Ci0gICAgRVhQRUNUX0VRKGhT
Y3JvbGwsIHNjcm9sbC54KTsKLSAgICBFWFBFQ1RfRVEodlNjcm9sbCwgc2Nyb2xsLnkpOwotCi0g
ICAgLy8gVGVzdCB6b29tIG91dCB0byBvdmVydmlldyBzY2FsZS4KLSAgICB3ZWJWaWV3SW1wbC0+
YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8g
d2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0
ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRv
dWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEsIHNjYWxlKTsK
LSAgICBFWFBFQ1RfRVEoV2ViUG9pbnQoMCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0cyBm
b3IgY2xhbXBlZCBzY2FsaW5nLgotICAgIC8vIFRlc3QgY2xhbXAgdG8gZGV2aWNlIHNjYWxlOgot
ICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xsLngsIHNj
cm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHdl
YlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigyLjUpOwotICAgIHdlYlZpZXdJbXBsLT5j
b21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1w
bDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMi41LCBz
Y2FsZSk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRvIG1pbmltdW0gc2NhbGU6Ci0gICAgd2ViVmll
d0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBz
Y2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwt
PnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjUgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSwgNCAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJW
aWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwg
V2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FU
X0VRKDEuNSwgc2NhbGUpOwotICAgIEVYUEVDVF9FUShXZWJQb2ludCgwLCAwKSwgc2Nyb2xsKTsK
LQotICAgIC8vIFRlc3QgY2xhbXAgdG8gbWF4aW11bSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+
YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8g
d2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2
aWNlU2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rvckxp
bWl0cygwLCAzIC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZp
ZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBX
ZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMywgc2NhbGUpOworICAgIFdlYlJlY3QgdG9wRGl2KDIwMCwgMTAwLCAyMDAsIDE1MCk7Cisg
ICAgV2ViUmVjdCBib3R0b21EaXYoMjAwLCAzMDAsIDIwMCwgMTUwKTsKKyAgICBXZWJQb2ludCB0
b3BQb2ludCh0b3BEaXYueCArIDUwLCB0b3BEaXYueSArIDUwKTsKKyAgICBXZWJQb2ludCBib3R0
b21Qb2ludChib3R0b21EaXYueCArIDUwLCBib3R0b21EaXYueSArIDUwKTsKKyAgICBmbG9hdCBz
Y2FsZTsKKyAgICBXZWJQb2ludCBzY3JvbGw7CisgICAgYm9vbCBpc0FuY2hvcjsKKyAgICBzZXRT
Y2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJW
aWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbU1p
bk1heCkgLyAyKTsKKworICAgIC8vIFRlc3QgZG91YmxlIHRhcCBvbiB0d28gZGlmZmVyZW50IGRp
dnMKKyAgICAvLyBBZnRlciBmaXJzdCB6b29tLCB3ZSBzaG91bGQgZ28gYmFjayB0byBtaW5pbXVt
IHBhZ2Ugc2NhbGUgd2l0aCBhIHNlY29uZCBkb3VibGUgdGFwLgorICAgIHNpbXVsYXRlRG91Ymxl
VGFwKHdlYlZpZXdJbXBsLCB0b3BQb2ludCwgc2Nyb2xsLCBzY2FsZSwgaXNBbmNob3IpOworICAg
IEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUp
OworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBib3R0b21Qb2ludCwgc2Nyb2xs
LCBzY2FsZSwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWlu
aW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAvLyBJZiB0aGUgdXNlciBwaW5j
aCB6b29tcyBhZnRlciBkb3VibGUgdGFwLCBhIHNlY29uZCBkb3VibGUgdGFwIHNob3VsZCB6b29t
IGJhY2sgdG8gdGhlIGRpdi4KKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgdG9w
UG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2Vi
Vmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICB3ZWJWaWV3SW1wbC0+
YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCksIDAuNik7CisgICAgc2ltdWxhdGVEb3VibGVU
YXAod2ViVmlld0ltcGwsIGJvdHRvbVBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBzY2Fs
ZSk7Cit9CiAKLSAgICAvLyBUZXN0IGZvciBOb24tZG91YmxldGFwIHNjYWxpbmcKLSAgICB3ZWJW
aWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDEsIFdlYlBvaW50KDAsIDApKTsKLSAgICB3ZWJW
aWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBh
Z2VTY2FsZUZhY3RvckxpbWl0cygwLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9y
KCkpOwotICAgIC8vIFRlc3Qgem9vbWluZyBpbnRvIGRpdi4KLSAgICB3ZWJWaWV3SW1wbC0+Y29t
cHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChXZWJSZWN0KDI1MCwgMjUwLCAxMCwgMTApLCBX
ZWJWaWV3SW1wbDo6RmluZEluUGFnZSwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX05FQVIo
cGFnZVdpZHRoIC8gZGl2V2lkdGgsIHNjYWxlLCAwLjEpOworVEVTVF9GKFdlYkZyYW1lVGVzdCwg
RGl2QXV0b1pvb21TY2FsZUJvdW5kc1Rlc3QpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJM
TG9hZCgiZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOwor
CisgICAgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgaW50IHZpZXdw
b3J0V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGZsb2F0
IGRvdWJsZVRhcFpvb21NaW5NYXggPSAxLjI7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdl
YlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJ
bXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9ib3VuZHNf
Y2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KSk7CisgICAg
d2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3SW1w
bC0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3
ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEsIDQpOworICAgIHdlYlZpZXdJ
bXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXQoKTsKKyAgICB3ZWJWaWV3
SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41Zik7CisgICAgZmxvYXQgZG91YmxlVGFwWm9v
bU1pbk1heFNjYWxlID0gd2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSAqIGRv
dWJsZVRhcFpvb21NaW5NYXg7CiAKLSAgICAvLyBEcm9wIGFueSBwZW5kaW5nIGZha2UgbW91c2Ug
ZXZlbnRzIGZyb20gem9vbWluZyBiZWZvcmUgbGVhdmluZyB0aGUgdGVzdC4KLSAgICB3ZWJWaWV3
SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmNsZWFyKCk7CisgICAg
V2ViUmVjdCBkaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsKKyAgICBXZWJQb2ludCBkb3VibGVUYXBQ
b2ludChkaXYueCArIDUwLCBkaXYueSArIDUwKTsKKyAgICBmbG9hdCBzY2FsZTsKKyAgICBXZWJQ
b2ludCBzY3JvbGw7CisgICAgYm9vbCBpc0FuY2hvcjsKKworICAgIC8vIFRlc3QgZG91YmxlIHRh
cCBzY2FsZSBib3VuZHMuCisgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21N
aW5NYXhTY2FsZSA8IGRldmljZURwaVNjYWxlCisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlv
dXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdl
U2NhbGVGYWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21NaW5NYXgpIC8gMik7CisgICAgc2lt
dWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxl
LCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRv
dWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBz
aW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2Nh
bGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNj
YWxlRmFjdG9yKCksIHNjYWxlKTsKKworICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3Rh
cF96b29tX2luX2VmZmVjdCBmbGFnLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoKSwgMS4xKTsKKyAgICAvLyBkZXZpY2VEcGlTY2FsZSA8IG1pbmltdW1QYWdl
U2NhbGUgPCBkb3VibGVUYXBab29tTWluTWF4U2NhbGUKKyAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2
aWNlU2NhbGVGYWN0b3IoMC41Zik7CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2Vi
Vmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVG
YWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21NaW5NYXgpIC8gMik7CisgICAgc2ltdWxhdGVE
b3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0Fu
Y2hvcik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxl
RmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91
YmxlVGFwUG9pbnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoZG91YmxlVGFwWm9vbU1pbk1heFNjYWxlLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVU
YXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9y
KCksIHNjYWxlKTsKKworICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3RhcF96b29tX2lu
X2VmZmVjdCBmbGFnLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNp
emUoKSwgMS4xKTsKKyAgICAvLyBtaW5pbXVtUGFnZVNjYWxlIDwgZG91YmxlVGFwWm9vbU1pbk1h
eFNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IoMS4xZik7CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGws
IFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSkg
KiAoMSArIGRvdWJsZVRhcFpvb21NaW5NYXgpIC8gMik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAo
d2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCks
IHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9p
bnQsIHNjcm9sbCwgc2NhbGUsIGlzQW5jaG9yKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoZG91Ymxl
VGFwWm9vbU1pbk1heFNjYWxlLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmll
d0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY3JvbGwsIHNjYWxlLCBpc0FuY2hvcik7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxl
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9v
bV90ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTY0NDJmYmFmYmIzNGY1M2RhZmM2NWVmODA0ZDY0
ZmNkNGI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbApAQCAtMCwwICsx
LDEwIEBACis8aHRtbD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMTAwcHg7IHdp
ZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweCI+CisgICAgICA8cCBpZD0iRGl2Ij5Ub3AgRGl2PC9w
PgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDMwMHB4OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+Qm90dG9tIERpdjwvcD4KKyAgICA8
L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2JvdW5k
c19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2M4ZTljMTY1MDM0
OGJjNmI4NTYzZDcyN2JhMjgwYTU2YjQ1Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9f
em9vbV90ZXN0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKyAgPGJvZHk+CisgICAgPGRp
diBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVm
dDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweCI+CisgICAg
ICA8cCBpZD0iRGl2Ij5EaXY8L3A+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9y
X2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sCmluZGV4
IDE4MTdkYzQ3ZDU0YjUzYmEyYzQ2YTViMGE5YmE3NDk5ZmNhMjcwZWMuLjk1ZTdiMzc4N2Q1YzYx
MDE2YmQ3Y2EyNTBkOGE4M2ZkNmU3NTgyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0
bWwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3Jf
YXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbApAQCAtMSwxMyArMSwxMCBAQAogPGh0bWw+CiAg
IDxib2R5PgotICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlv
bjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiAwcHg7IHdpZHRoOiA2NDBweDsgaGVpZ2h0OiA0
ODBweCI+Ci0gICAgICA8cD5Ub3AgRGl2PC9wPgotICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogd2hpdGU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMjAw
cHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweCI+Ci0gICAgICAgIDxwIGlkPSJpbm5lckRp
diI+RGl2IHRvIHpvb20gdG88L3A+Ci0gICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IHJlZDsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAyMjBweDsgdG9wOiAzNTBweDsgd2lkdGg6
IDE2MHB4OyBoZWlnaHQ6IDQwcHgiPgotICAgICAgICAgIDxwIGlkPSJpbm5lcklubmVyRGl2Ij5E
aXYgTk9UIHRvIHpvb20gdG88L3A+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9kaXY+CisgICAg
PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsg
bGVmdDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAxNTBweCI+Cisg
ICAgICA8cCBpZD0id2lkZURpdiI+V2lkZSBkaXY8L3A+CisgICAgPC9kaXY+CisgICAgPGRpdiBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDog
MjAwcHg7IHRvcDogMzAwcHg7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA4MDAiPgorICAgICAgPHAg
aWQ9InRhbGxEaXYiPlRhbGwgZGl2PC9wPgogICAgIDwvZGl2PgogICA8L2JvZHk+CiA8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166041</attachid>
            <date>2012-09-27 11:58:52 -0700</date>
            <delta_ts>2012-09-27 13:00:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120927115810.patch</filename>
            <type>text/plain</type>
            <size>29633</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDljMTAzZGQ1YTZkMzQ1OTcwOTZjNjgyYWI5ZGIyNWMyMGRhOWMxYzAuLjhiNGNiMjYxMThkNTMy
YTA0MjZjYjJmYjU3ZTliYWIwNjI3NWQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhZ2Ugb3ZlcmxheXMgYXJlIG5vdCB1cGRh
dGVkIHdoZW4gV2ViVmlldyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYmVlMzQ3M2Y2YzE1YWM4NzA0ZDRkZmE3NDI5NDYxYzNhOWY1
NmM0Zi4uMzJhNzAyOTBhZDY5YmFhYzFmMjIwN2FkOGJlZTRmMjdmNDkzZDFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChzdWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAg
Z2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLikuIFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFs
bHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsK
K3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZyA9IDExOwogc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVyZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0
IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29u
c3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4y
NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9
IDEuMjsKIAogLy8gQ29uc3RhbnRzIGZvciB6b29taW5nIGluIG9uIGEgZm9jdXNlZCB0ZXh0IGZp
ZWxkLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9u
SW5TZWNvbmRzID0gMC4yOwpAQCAtMzkxLDYgKzM5Myw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0VGFnTWF4
aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxzZSkKICAg
ICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKKyAgICAsIG1fZG91YmxlVGFwWm9vbUluRWZm
ZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9w
KGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTc0Miw2ICs3NDYs
OSBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBldmVudCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxl
ZENvbnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9p
bnQoZXZlbnQueCwgZXZlbnQueSksIERvdWJsZVRhcCk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAgICAgICAgIG1fY2xpZW50LT5jYW5jZWxT
Y2hlZHVsZWRDb250ZW50SW50ZW50cygpOwpAQCAtNzgxLDE3ICs3ODgsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAog
CiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uSW5TZWNvbmRzKQogewotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBJbnRQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsK
KyAgICBXZWJQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsKICAgICBpZiAoIXVz
ZUFuY2hvcikKICAgICAgICAgY2xhbXBlZFBvaW50ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHRhcmdl
dFBvc2l0aW9uLCBuZXdTY2FsZSk7Ci0KLSAgICBpZiAoIWR1cmF0aW9uSW5TZWNvbmRzICYmICF1
c2VBbmNob3IpIHsKKyAgICBpZiAoKCFkdXJhdGlvbkluU2Vjb25kcyAmJiAhdXNlQW5jaG9yKSB8
fCBtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJvKSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZh
Y3RvcihuZXdTY2FsZSwgY2xhbXBlZFBvaW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllclRy
ZWVWaWV3LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogfQpAQCAtMTA0MSwyNCArMTA0NiwzOCBA
QCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRzKGNvbnN0IFdl
YlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAgIHJldHVybiBXZWJSZWN0KG5ld1gsIHNvdXJj
ZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0
b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwpCit2b2lk
IFdlYlZpZXdJbXBsOjpzaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm8oYm9vbCBzZXRU
b1plcm8pCit7CisgICAgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyA9IHNldFRvWmVybzsK
K30KKwordm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChj
b25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5cGUsIGZsb2F0JiBzY2Fs
ZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpCiB7CiAgICAgc2NhbGUgPSBwYWdl
U2NhbGVGYWN0b3IoKTsKICAgICBzY3JvbGwueCA9IHNjcm9sbC55ID0gMDsKICAgICBXZWJSZWN0
IHRhcmdldFJlY3QgPSBoaXRSZWN0OworICAgIC8vIFBhZGRpbmcgb25seSBkZXBlbmRzIG9uIHBh
Z2Ugc2NhbGUgd2hlbiB0cmlnZ2VyZWQgYnkgbWFudWFsbHkgdGFwcGluZworICAgIGludCBwYWRk
aW5nID0gKHpvb21UeXBlID09IERvdWJsZVRhcCkgPyB0b3VjaFBvaW50UGFkZGluZyA6IG5vblVz
ZXJJbml0aWF0ZWRQb2ludFBhZGRpbmc7CiAgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQot
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoID0gdGFyZ2V0UmVjdC5oZWlnaHQgPSB0b3VjaFBvaW50
UGFkZGluZzsKLQorICAgICAgICB0YXJnZXRSZWN0LndpZHRoID0gdGFyZ2V0UmVjdC5oZWlnaHQg
PSBwYWRkaW5nOwogICAgIFdlYlJlY3QgcmVjdCA9IGNvbXB1dGVCbG9ja0JvdW5kcyh0YXJnZXRS
ZWN0LCB6b29tVHlwZSk7CisgICAgaWYgKHpvb21UeXBlID09IEZpbmRJblBhZ2UgJiYgcmVjdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gS2VlcCBjdXJyZW50IHNjYWxlIChubyBuZWVkIHRvIHNj
cm9sbCBhcyB4LHkgd2lsbCBub3JtYWxseSBhbHJlYWR5CisgICAgICAgIC8vIGJlIHZpc2libGUp
LiBGSVhNRTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5cyB0cnVlLgorICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgY29uc3QgZmxvYXQgb3ZlcnZpZXdTY2FsZSA9IG1fbWluaW11
bVBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIHNjYWxlVW5jaGFuZ2VkID0gdHJ1ZTsKICAgICBp
ZiAoIXJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBhZ2VzIHNob3VsZCBiZSBhcyBsZWdp
YmxlIGFzIG9uIGRlc2t0b3Agd2hlbiBhdCBkcGkgc2NhbGUsIHNvIG5vCiAgICAgICAgIC8vIG5l
ZWQgdG8gem9vbSBpbiBmdXJ0aGVyIHdoZW4gYXV0b21hdGljYWxseSBkZXRlcm1pbmluZyB6b29t
IGxldmVsCiAgICAgICAgIC8vIChhZnRlciBkb3VibGUgdGFwLCBmaW5kIGluIHBhZ2UsIGV0Yyks
IHRob3VnaCB0aGUgdXNlciBzaG91bGQgc3RpbGwKICAgICAgICAgLy8gYmUgYWxsb3dlZCB0byBt
YW51YWxseSBwaW5jaCB6b29tIGluIGZ1cnRoZXIgaWYgdGhleSBkZXNpcmUuCi0gICAgICAgIGNv
bnN0IGZsb2F0IG1heFNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQg
YWRqdXN0ZWREcGlTY2FsZSA9IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZs
b2F0IGRlZmF1bHRTY2FsZVdoZW5BbHJlYWR5TGVnaWJsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZh
Y3RvciAqIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvOworICAgICAgICBmbG9hdCBs
ZWdpYmxlU2NhbGUgPSBhZGp1c3RlZERwaVNjYWxlOworICAgICAgICBpZiAoYWRqdXN0ZWREcGlT
Y2FsZSA8IGRlZmF1bHRTY2FsZVdoZW5BbHJlYWR5TGVnaWJsZSkKKyAgICAgICAgICAgIGxlZ2li
bGVTY2FsZSA9IChzY2FsZSA9PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpID8gZGVmYXVsdFNj
YWxlV2hlbkFscmVhZHlMZWdpYmxlIDogbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogCiAgICAg
ICAgIGNvbnN0IGZsb2F0IGRlZmF1bHRNYXJnaW4gPSBkb3VibGVUYXBab29tQ29udGVudERlZmF1
bHRNYXJnaW4gKiBkZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBjb25zdCBmbG9hdCBtaW5p
bXVtTWFyZ2luID0gZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luICogZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKQEAgLTEwNzEsNTUgKzEwOTAsNjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRv
Wm8KICAgICAgICAgcmVjdCA9IHdpZGVuUmVjdFdpdGhpblBhZ2VCb3VuZHMocmVjdCwKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlZmF1bHRNYXJnaW4gKiByZWN0LndpZHRoIC8g
bV9zaXplLndpZHRoKSwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1pbmltdW1N
YXJnaW4gKiByZWN0LndpZHRoIC8gbV9zaXplLndpZHRoKSk7Ci0KICAgICAgICAgLy8gRml0IGJs
b2NrIHRvIHNjcmVlbiwgcmVzcGVjdGluZyBsaW1pdHMuCiAgICAgICAgIHNjYWxlICo9IHN0YXRp
Y19jYXN0PGZsb2F0PihtX3NpemUud2lkdGgpIC8gcmVjdC53aWR0aDsKLSAgICAgICAgc2NhbGUg
PSBtaW4oc2NhbGUsIG1heFNjYWxlKTsKKyAgICAgICAgc2NhbGUgPSBtaW4oc2NhbGUsIGxlZ2li
bGVTY2FsZSk7CiAgICAgICAgIHNjYWxlID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhz
Y2FsZSk7CiAKICAgICAgICAgc2NhbGVVbmNoYW5nZWQgPSBmYWJzKHBhZ2VTY2FsZUZhY3Rvcigp
IC0gc2NhbGUpIDwgbWluU2NhbGVEaWZmZXJlbmNlOwogICAgIH0KIAotICAgIGlmICh6b29tVHlw
ZSA9PSBEb3VibGVUYXApIHsKLSAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5j
aGFuZ2VkKSB7Ci0gICAgICAgICAgICAvLyBab29tIG91dCB0byBvdmVydmlldyBtb2RlLgotICAg
ICAgICAgICAgaWYgKG92ZXJ2aWV3U2NhbGUpCi0gICAgICAgICAgICAgICAgc2NhbGUgPSBvdmVy
dmlld1NjYWxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChyZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5vIG5l
ZWQgdG8gc2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKLSAgICAgICAgLy8gYmUg
dmlzaWJsZSkuIEZJWE1FOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3QgYWx3YXlzIHRydWUuCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBj
YWxsZWQgZm9yIGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAotICAgIC8vIHRoZW4gaWYg
dGhlIHVzZXIgbWFudWFsbHkgem9vbXMgaW4gaXQnZCBiZSBuaWNlIHRvIHByZXNlcnZlIHRoZSBy
ZWxhdGl2ZQotICAgIC8vIGluY3JlYXNlIGluIHpvb20gdGhleSBjYXVzZWQgKGlmIHRoZXkgem9v
bSBvdXQgdGhlbiBpdCdzIG9rIHRvIHpvb20KLSAgICAvLyB0aGVtIGJhY2sgaW4gYWdhaW4pLiBU
aGlzIGlzbid0IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudCBkb3VibGUtdGFwCi0gICAgLy8g
em9vbSBzdHJhdGVneSAoZml0dGluZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVu
KSB0aG91Z2guCi0KLSAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2Nh
bGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1fc2l6ZS53
aWR0aCAvIHNjYWxlICogcGFnZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAvLyBTY3JvbGwgdG8gdmVy
dGljYWxseSBhbGlnbiB0aGUgYmxvY2suCi0gICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVuSGVp
Z2h0KSB7Ci0gICAgICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KLSAgICAg
ICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0LmhlaWdodCk7CisgICAgaWYg
KHpvb21UeXBlID09IERvdWJsZVRhcCAmJiAocmVjdC5pc0VtcHR5KCkgfHwgc2NhbGVVbmNoYW5n
ZWQgfHwgbV9kb3VibGVUYXBab29tSW5FZmZlY3QpKSB7CisgICAgICAgIC8vIFpvb20gb3V0IHRv
IG1pbmltdW0gc2NhbGUuCisgICAgICAgIHNjYWxlID0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9y
OworICAgICAgICBzY3JvbGwgPSBXZWJQb2ludChoaXRSZWN0LngsIGhpdFJlY3QueSk7CisgICAg
ICAgIGlzQW5jaG9yID0gdHJ1ZTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBm
YWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBFbnN1cmUgcG9zaXRpb24gd2UncmUgem9v
bWluZyB0byAoKyBwYWRkaW5nKSBpc24ndCBvZmYgdGhlIGJvdHRvbSBvZgotICAgICAgICAvLyB0
aGUgc2NyZWVuLgotICAgICAgICByZWN0LnkgPSBtYXg8ZmxvYXQ+KHJlY3QueSwgaGl0UmVjdC55
ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3JlZW5IZWlnaHQpOwotICAgIH0gLy8gT3RoZXJ3aXNl
IHRvcCBhbGlnbiB0aGUgYmxvY2suCi0KLSAgICAvLyBEbyB0aGUgc2FtZSB0aGluZyBmb3IgaG9y
aXpvbnRhbCBhbGlnbm1lbnQuCi0gICAgaWYgKHJlY3Qud2lkdGggPCBzY3JlZW5XaWR0aCkKLSAg
ICAgICAgcmVjdC54IC09IDAuNSAqIChzY3JlZW5XaWR0aCAtIHJlY3Qud2lkdGgpOwotICAgIGVs
c2UKLSAgICAgICAgcmVjdC54ID0gbWF4PGZsb2F0PihyZWN0LngsIGhpdFJlY3QueCArIHRvdWNo
UG9pbnRQYWRkaW5nIC0gc2NyZWVuV2lkdGgpOworICAgICAgICBpZiAoem9vbVR5cGUgPT0gRG91
YmxlVGFwICYmIHNjYWxlICE9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcikKKyAgICAgICAgICAg
IG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICAgICAgLy8gRklYTUU6IElm
IHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZvciBhdXRvIHpvb20gZHVyaW5nIGZpbmQgaW4gcGFnZSwK
KyAgICAgICAgLy8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6b29tcyBpbiBpdCdkIGJlIG5p
Y2UgdG8gcHJlc2VydmUgdGhlCisgICAgICAgIC8vIHJlbGF0aXZlIGluY3JlYXNlIGluIHpvb20g
dGhleSBjYXVzZWQgKGlmIHRoZXkgem9vbSBvdXQgdGhlbiBpdCdzIG9rCisgICAgICAgIC8vIHRv
IHpvb20gdGhlbSBiYWNrIGluIGFnYWluKS4gVGhpcyBpc24ndCBjb21wYXRpYmxlIHdpdGggb3Vy
IGN1cnJlbnQKKyAgICAgICAgLy8gZG91YmxlLXRhcCB6b29tIHN0cmF0ZWd5IChmaXR0aW5nIHRo
ZSBjb250YWluaW5nIGJsb2NrIHRvIHRoZSBzY3JlZW4pCisgICAgICAgIC8vIHRob3VnaC4KKwor
ICAgICAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2NhbGUgKiBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQgc2NyZWVuV2lkdGggPSBtX3NpemUud2lkdGgg
LyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworCisgICAgICAgIC8vIFNjcm9sbCB0byB2ZXJ0
aWNhbGx5IGFsaWduIHRoZSBibG9jay4KKyAgICAgICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVu
SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBzaG9ydCBibG9ja3Mu
CisgICAgICAgICAgICByZWN0LnkgLT0gMC41ICogKHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3ZSdy
ZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCisgICAgICAg
ICAgICAvLyB0aGUgc2NyZWVuLgorICAgICAgICAgICAgcmVjdC55ID0gbWF4PGZsb2F0PihyZWN0
LnksIGhpdFJlY3QueSArIHBhZGRpbmcgLSBzY3JlZW5IZWlnaHQpOworICAgICAgICB9IC8vIE90
aGVyd2lzZSB0b3AgYWxpZ24gdGhlIGJsb2NrLgorCisgICAgICAgIC8vIERvIHRoZSBzYW1lIHRo
aW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KKyAgICAgICAgaWYgKHJlY3Qud2lkdGggPCBz
Y3JlZW5XaWR0aCkKKyAgICAgICAgICAgIHJlY3QueCAtPSAwLjUgKiAoc2NyZWVuV2lkdGggLSBy
ZWN0LndpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVjdC54ID0gbWF4PGZsb2F0
PihyZWN0LngsIGhpdFJlY3QueCArIHBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIHNj
cm9sbC54ID0gcmVjdC54OworICAgICAgICBzY3JvbGwueSA9IHJlY3QueTsKKyAgICAgICAgaXNB
bmNob3IgPSBmYWxzZTsKKyAgICB9CiAKLSAgICBzY3JvbGwueCA9IHJlY3QueDsKLSAgICBzY3Jv
bGwueSA9IHJlY3QueTsKKyAgICBzY2FsZSA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMo
c2NhbGUpOworICAgIHNjcm9sbCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPndpbmRv
d1RvQ29udGVudHMoc2Nyb2xsKTsKKyAgICBmbG9hdCBzY2FsZURlbHRhID0gc2NhbGUgLyBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICBzY3JvbGwgPSBXZWJQb2ludChzY3JvbGwueCAqIHNjYWxlRGVs
dGEsIHNjcm9sbC55ICogc2NhbGVEZWx0YSk7CisgICAgaWYgKCFpc0FuY2hvcikKKyAgICAgICAg
c2Nyb2xsID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbCwgc2NhbGUpOwogfQogCiBzdGF0aWMg
Ym9vbCBoaWdobGlnaHRDb25kaXRpb25zKE5vZGUqIG5vZGUpCkBAIC0xMTg1LDExICsxMjEwLDEz
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGVab29tQXJvdW5kUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBBdXRvWm9vbVR5cGUgem9vCiAKICAgICBmbG9hdCBzY2FsZTsKICAgICBXZWJQ
b2ludCBzY3JvbGw7Ci0gICAgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChXZWJSZWN0
KHBvaW50LngoKSwgcG9pbnQueSgpLCAwLCAwKSwgem9vbVR5cGUsIHNjYWxlLCBzY3JvbGwpOwor
ICAgIGJvb2wgaXNBbmNob3I7CisgICAgV2ViUG9pbnQgcHQgPSBwb2ludDsKKyAgICBjb21wdXRl
U2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocHQueCwgcHQueSwgMCwgMCksIHpvb21U
eXBlLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CiAKICAgICBib29sIGlzRG91YmxlVGFwID0g
KHpvb21UeXBlID09IERvdWJsZVRhcCk7Ci0gICAgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzID0g
aXNEb3VibGVUYXAgPyBkb3VibGVUYXBab29tQW5pbWF0aW9uRHVyYXRpb25JblNlY29uZHMgOiAw
OwotICAgIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbCwgaXNEb3VibGVUYXAsIHNjYWxl
LCBkdXJhdGlvbkluU2Vjb25kcyk7CisgICAgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzID0gKGlz
RG91YmxlVGFwICYmICFtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJvKSA/IGRvdWJsZVRhcFpv
b21BbmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA6IDA7CisgICAgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oc2Nyb2xsLCBpc0FuY2hvciwgc2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKICNlbmRp
ZgogfQogCkBAIC0zNDMwLDggKzM0NTcsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0
TG9hZChib29sKiBpc05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZpZ2F0aW9uV2l0aGluUGEKICAg
ICBtX25ld05hdmlnYXRpb25Mb2FkZXIgPSAwOwogI2VuZGlmCiAgICAgbV9vYnNlcnZlZE5ld05h
dmlnYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0
aW9uV2l0aGluUGFnZSkKKyAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0aW9u
V2l0aGluUGFnZSkgewogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7Cisg
ICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8g
TWFrZSBzdXJlIGxpbmsgaGlnaGxpZ2h0IGZyb20gcHJldmlvdXMgcGFnZSBpcyBjbGVhcmVkLgog
ICAgIG1fbGlua0hpZ2hsaWdodC5jbGVhcigpOwpAQCAtMzg5OCw2ICszOTI3LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgcGFnZVNjYWwKICAgICAgICAgV2ViUG9pbnQgc2NhbGVkU2Nyb2xsT2Zmc2V0KHNj
cm9sbE9mZnNldC53aWR0aCAqIHBhZ2VTY2FsZURlbHRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LmhlaWdodCAqIHBhZ2VTY2FsZURlbHRhKTsKICAg
ICAgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxlRGVs
dGEsIHNjYWxlZFNjcm9sbE9mZnNldCk7CisgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0
ID0gZmFsc2U7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCA0YzFhOTc0YTA1ZGY0MjY2MGY5ZDczOTkzNzQ4MjQyZjBhNjRiM2Q2Li4yMDU1
YzllYmNmMGQ4NDQ0YmJlNWJhM2ExZmFmZjliZGE0MzJiZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU2MSwxMiArNTYxLDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZ1bGxGcmFtZVBsdWdpblpvb21MZXZlbENoYW5nZWQoZG91YmxlIHpvb21MZXZlbCk7
CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBjb21wdXRlU2NhbGVBbmRT
Y3JvbGxGb3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSwgZmxv
YXQmIHNjYWxlLCBXZWJQb2ludCYgc2Nyb2xsKTsKKyAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9h
dCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwsIGJvb2wgJmlzQW5jaG9yKTsKICAgICBXZWJDb3Jl
OjpOb2RlKiBiZXN0VG91Y2hMaW5rTm9kZShXZWJDb3JlOjpJbnRQb2ludCB0b3VjaEV2ZW50TG9j
YXRpb24pOwogICAgIHZvaWQgZW5hYmxlVG91Y2hIaWdobGlnaHQoV2ViQ29yZTo6SW50UG9pbnQg
dG91Y2hFdmVudExvY2F0aW9uKTsKICNlbmRpZgogICAgIHZvaWQgYW5pbWF0ZVpvb21Bcm91bmRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEF1dG9ab29tVHlwZSk7CiAKKyAgICAvLyBF
eHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIHZvaWQgc2hvdWxkVXNlQW5pbWF0ZURv
dWJsZVRhcFRpbWVaZXJvKGJvb2wpOworCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQo
aW50IG51bVRpbWVzKTsKIAogICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50Kik7CkBAIC03NDAsNiArNzQzLDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9zYXZlZFBhZ2VTY2FsZUZhY3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFj
dG9yIGlzIHNhdmVkLgogICAgIFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9sbE9mZnNldDsK
IAorICAgIC8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVkIGJ5IHpvb21p
bmcgaW4gd2l0aCBkb3VibGUgdGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29tSW5FZmZlY3Q7
CisKKyAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIGJvb2wgbV9zaG91bGRV
c2VEb3VibGVUYXBUaW1lWmVybzsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFsbG93ZWQ7CiAK
ICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCBhMDA0OWI2N2U4ZDQxYjYyYmE1Mjg1YjlhMTAw
ZDY5YzYwNmY0MDMxLi4wYzlkYzg0YzU4ZDI4MjQwNDc3MzJmZjM1YmVkMzBkNDFlN2YyZWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0z
MTYsNzYgKzMxNiwxODUgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2FuT3ZlcnJpZGVNYXhpbXVt
U2NhbGVGYWN0b3IpCiB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBEaXZB
dXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICB2aXJ0dWFsIFdlYlJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFIHsgcmV0dXJu
IG1fd2luZG93UmVjdDsgfQorCisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3Q7Cit9OworCit2b2lk
IHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgV2Vi
UG9pbnQgc2Nyb2xsLCBmbG9hdCBzY2FsZSkKK3sKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yKHNjYWxlLCBXZWJQb2ludChzY3JvbGwueCwgc2Nyb2xsLnkpKTsKKyAgICB3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7Cit9CisKIFRF
U1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tUGFyYW1zVGVzdCkKIHsKICAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0
Lmh0bWwiKTsKIAotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUp
KTsKLSAgICBpbnQgcGFnZVdpZHRoID0gNjQwOwotICAgIGludCBwYWdlSGVpZ2h0ID0gNDgwOwot
ICAgIGludCBkaXZQb3NYID0gMjAwOwotICAgIGludCBkaXZQb3NZID0gMjAwOwotICAgIGludCBk
aXZXaWR0aCA9IDIwMDsKLSAgICBpbnQgZGl2SGVpZ2h0ID0gMTUwOwotICAgIFdlYlJlY3QgZG91
YmxlVGFwUG9pbnQoMjUwLCAyNTAsIDAsIDApOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2Vi
U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3
Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmll
d3BvcnRIZWlnaHQgPSA0ODA7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwg
MCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJW
aWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2lu
dG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcigyLjBmKTsKKworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3
cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMoMC4wMSwgNCk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwo
KS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworCisgICAgV2ViUmVjdCB3aWRlRGl2KDIwMCwgMTAw
LCA0MDAsIDE1MCk7CisgICAgV2ViUmVjdCB0YWxsRGl2KDIwMCwgMzAwLCA0MDAsIDgwMCk7Cisg
ICAgV2ViUmVjdCBkb3VibGVUYXBQb2ludFdpZGUoKHdpZGVEaXYueCArIDUwKSAqIHdlYlZpZXdJ
bXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwKKyAgICAgICAgKHdpZGVEaXYueSArIDUwKSAqIHdlYlZp
ZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwgMCwgMCk7CisgICAgV2ViUmVjdCBkb3VibGVUYXBQ
b2ludFRhbGwoKHRhbGxEaXYueCArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3Io
KSwKKyAgICAgICAgKHRhbGxEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0
b3IoKSwgMCwgMCk7CiAgICAgZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAg
IGJvb2wgaXNBbmNob3I7CisKKyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdp
ZGUgZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0
KGRvdWJsZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9s
bCwgaXNBbmNob3IpOworICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRo
ZSBzY3JlZW4gKG1vZHVsbyBtYXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJl
ZCAobW9kdWxvIGludGVnZXIgcm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lk
dGggLyAoZmxvYXQpIHdpZGVEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFS
KHdpZGVEaXYueCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdp
ZGVEaXYueSArIHdpZGVEaXYuaGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAv
IDIpOworICAgIEVYUEVDVF9ORUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1Rf
RVEoZmFsc2UsIGlzQW5jaG9yKTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdl
YlZpZXdJbXBsLCBzY3JvbGwsIHNjYWxlKTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0
byBtaW5pbXVtIHNjYWxlLgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2Nh
bGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+
bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlz
QW5jaG9yKTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBX
ZWJQb2ludCgwLCAwKSwgc2NhbGUpOworCisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcg
aW50byB0YWxsIGRpdi4KKyAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChkb3VibGVUYXBQb2ludFRhbGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxl
LCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUg
dG9wIGxlZnQgb2YgdGhlIHZpZXdwb3J0LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGgg
LyAoZmxvYXQpIHRhbGxEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRh
bGxEaXYueCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYu
eSAqIHNjYWxlLCBzY3JvbGwueSwgMjApOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3Ip
OworCisgICAgLy8gVGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2FsaW5nCisgICAgLy8gVGVzdCB6
b29taW5nIGludG8gZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KFdlYlJlY3QoMjUwLCAyNTAsIDEwLCAxMCksIFdlYlZpZXdJbXBsOjpGaW5kSW5Q
YWdlLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX05FQVIodmlld3BvcnRX
aWR0aCAvIChmbG9hdCkgd2lkZURpdi53aWR0aCwgc2NhbGUsIDAuMSk7Cit9CisKK3ZvaWQgc2lt
dWxhdGVEb3VibGVUYXAoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBXZWJQb2ludCYgcG9pbnQs
IGZsb2F0JiBzY2FsZSkKK3sKKyAgICBXZWJQb2ludCBzY2FsZWRQb2ludChzdGF0aWNfY2FzdDxp
bnQ+KHBvaW50LnggKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpLAorICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHBvaW50LnkgKiB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkp
KTsKKyAgICB3ZWJWaWV3SW1wbC0+YW5pbWF0ZVpvb21Bcm91bmRQb2ludChzY2FsZWRQb2ludCwg
V2ViVmlld0ltcGw6OkRvdWJsZVRhcCk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwo
KS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworICAgIHNjYWxlID0gd2ViVmlld0ltcGwtPnBhZ2VT
Y2FsZUZhY3RvcigpOworfQogCi0gICAgLy8gVGVzdCBmb3IgRG91YmxldGFwIHNjYWxpbmcKK1RF
U1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tTXVsdGlwbGVEaXZzVGVzdCkKK3sKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29t
X3Rlc3QuaHRtbCIpOwogCi0gICAgLy8gVGVzdHMgZm9yIHpvb21pbmcgaW4gYW5kIG91dCB3aXRo
b3V0IGNsYW1waW5nLgotICAgIC8vIFNldCBkZXZpY2Ugc2NhbGUgYW5kIHNjYWxlIGxpbWl0cyBz
byB3ZSBkb250IGdldCBjbGFtcGVkLgotICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZh
Y3Rvcig0KTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQg
LyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgRGl2QXV0b1pvb21UZXN0
V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7CisgICAg
aW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGZsb2F0IGRvdWJsZVRhcFpvb21BbHJlYWR5
TGVnaWJsZVJhdGlvID0gMS4yOworICAgIGNsaWVudC5tX3dpbmRvd1JlY3QgPSBXZWJSZWN0KDAs
IDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAgICBXZWJWaWV3SW1wbCogd2Vi
Vmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0
b196b29tX3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2Vi
U2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5z
ZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgNCk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworICAgIHdlYlZpZXdJbXBsLT5zZXREZXZp
Y2VTY2FsZUZhY3RvcigxLjVmKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2hvdWxkVXNlQW5pbWF0ZURv
dWJsZVRhcFRpbWVaZXJvKHRydWUpOwogCi0gICAgLy8gVGVzdCB6b29taW5nIGludG8gZGl2Lgot
ICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRh
cFBvaW50LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBmbG9h
dCBzY2FsZWREaXZXaWR0aCA9IGRpdldpZHRoICogc2NhbGU7Ci0gICAgZmxvYXQgc2NhbGVkRGl2
SGVpZ2h0ID0gZGl2SGVpZ2h0ICogc2NhbGU7Ci0gICAgaW50IGhTY3JvbGwgPSAoKGRpdlBvc1gg
KiBzY2FsZSkgLSAoKHBhZ2VXaWR0aCAtIHNjYWxlZERpdldpZHRoKSAvIDIpKSAvIHNjYWxlOwot
ICAgIGludCB2U2Nyb2xsID0gKChkaXZQb3NZICogc2NhbGUpIC0gKChwYWdlSGVpZ2h0IC0gc2Nh
bGVkRGl2SGVpZ2h0KSAvIDIpKSAvIHNjYWxlOwotICAgIEVYUEVDVF9ORUFSKHBhZ2VXaWR0aCAv
IGRpdldpZHRoLCBzY2FsZSwgMC4xKTsKLSAgICBFWFBFQ1RfRVEoaFNjcm9sbCwgc2Nyb2xsLngp
OwotICAgIEVYUEVDVF9FUSh2U2Nyb2xsLCBzY3JvbGwueSk7Ci0KLSAgICAvLyBUZXN0IHpvb20g
b3V0IHRvIG92ZXJ2aWV3IHNjYWxlLgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwg
c2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2NhbGUpOwotICAgIEVYUEVDVF9FUShX
ZWJQb2ludCgwLCAwKSwgc2Nyb2xsKTsKLQotICAgIC8vIFRlc3RzIGZvciBjbGFtcGVkIHNjYWxp
bmcuCi0gICAgLy8gVGVzdCBjbGFtcCB0byBkZXZpY2Ugc2NhbGU6Ci0gICAgd2ViVmlld0ltcGwt
PmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBzY2FsZSAv
IHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldERl
dmljZVNjYWxlRmFjdG9yKDIuNSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNj
YWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyLjUsIHNjYWxlKTsKLQotICAgIC8v
IFRlc3QgY2xhbXAgdG8gbWluaW11bSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3Jv
bGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0lt
cGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFj
dG9yTGltaXRzKDEuNSAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCA0IC8gd2Vi
Vmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5jb21wdXRl
U2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6RG91
YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS41LCBzY2FsZSk7
Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50KDAsIDApLCBzY3JvbGwpOwotCi0gICAgLy8gVGVzdCBj
bGFtcCB0byBtYXhpbXVtIHNjYWxlOgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0
KTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDMgLyB3ZWJW
aWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVT
Y2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3Vi
bGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzLCBzY2FsZSk7Cisg
ICAgV2ViUmVjdCB0b3BEaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsKKyAgICBXZWJSZWN0IGJvdHRv
bURpdigyMDAsIDMwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IHRvcFBvaW50KHRvcERpdi54
ICsgNTAsIHRvcERpdi55ICsgNTApOworICAgIFdlYlBvaW50IGJvdHRvbVBvaW50KGJvdHRvbURp
di54ICsgNTAsIGJvdHRvbURpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxlOworICAgIFdlYlBv
aW50IHNjcm9sbDsKKyAgICBib29sIGlzQW5jaG9yOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5k
TGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRp
bykgLyAyKTsKKworICAgIC8vIFRlc3QgZG91YmxlIHRhcCBvbiB0d28gZGlmZmVyZW50IGRpdnMK
KyAgICAvLyBBZnRlciBmaXJzdCB6b29tLCB3ZSBzaG91bGQgZ28gYmFjayB0byBtaW5pbXVtIHBh
Z2Ugc2NhbGUgd2l0aCBhIHNlY29uZCBkb3VibGUgdGFwLgorICAgIHNpbXVsYXRlRG91YmxlVGFw
KHdlYlZpZXdJbXBsLCB0b3BQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJW
aWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91Ymxl
VGFwKHdlYlZpZXdJbXBsLCBib3R0b21Qb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9F
USh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAv
LyBJZiB0aGUgdXNlciBwaW5jaCB6b29tcyBhZnRlciBkb3VibGUgdGFwLCBhIHNlY29uZCBkb3Vi
bGUgdGFwIHNob3VsZCB6b29tIGJhY2sgdG8gdGhlIGRpdi4KKyAgICBzaW11bGF0ZURvdWJsZVRh
cCh3ZWJWaWV3SW1wbCwgdG9wUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2Vi
Vmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICB3ZWJWaWV3SW1wbC0+
YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCksIDAuNik7CisgICAgc2ltdWxhdGVEb3VibGVU
YXAod2ViVmlld0ltcGwsIGJvdHRvbVBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7Cit9CiAKLSAgICAvLyBU
ZXN0IGZvciBOb24tZG91YmxldGFwIHNjYWxpbmcKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yKDEsIFdlYlBvaW50KDAsIDApKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNl
U2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0
cygwLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIC8vIFRlc3Qg
em9vbWluZyBpbnRvIGRpdi4KLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xs
Rm9ySGl0UmVjdChXZWJSZWN0KDI1MCwgMjUwLCAxMCwgMTApLCBXZWJWaWV3SW1wbDo6RmluZElu
UGFnZSwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lk
dGgsIHNjYWxlLCAwLjEpOworVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2QXV0b1pvb21TY2FsZUJv
dW5kc1Rlc3QpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZ2V0X3NjYWxlX2Jv
dW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOworCisgICAgRGl2QXV0b1pvb21U
ZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgaW50IHZpZXdwb3J0V2lkdGggPSA2NDA7Cisg
ICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGZsb2F0IGRvdWJsZVRhcFpvb21BbHJl
YWR5TGVnaWJsZVJhdGlvID0gMS4yOworICAgIGNsaWVudC5tX3dpbmRvd1JlY3QgPSBXZWJSZWN0
KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAgICBXZWJWaWV3SW1wbCog
d2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVfYm91bmRzX2NoZWNr
X2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZp
ZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJl
c2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmll
d0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+
bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisgICAgd2ViVmlld0ltcGwt
PnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYpOworICAgIHdlYlZpZXdJbXBsLT5zaG91bGRVc2VB
bmltYXRlRG91YmxlVGFwVGltZVplcm8odHJ1ZSk7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFs
cmVhZHlMZWdpYmxlU2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
ICogZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CiAKLSAgICAvLyBEcm9wIGFueSBw
ZW5kaW5nIGZha2UgbW91c2UgZXZlbnRzIGZyb20gem9vbWluZyBiZWZvcmUgbGVhdmluZyB0aGUg
dGVzdC4KLSAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmNsZWFyKCk7CisgICAgV2ViUmVjdCBkaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsKKyAgICBX
ZWJQb2ludCBkb3VibGVUYXBQb2ludChkaXYueCArIDUwLCBkaXYueSArIDUwKTsKKyAgICBmbG9h
dCBzY2FsZTsKKyAgICBXZWJQb2ludCBzY3JvbGw7CisgICAgYm9vbCBpc0FuY2hvcjsKKworICAg
IC8vIFRlc3QgZG91YmxlIHRhcCBzY2FsZSBib3VuZHMuCisgICAgLy8gbWluaW11bVBhZ2VTY2Fs
ZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAg
ICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCks
ICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFw
Wm9vbUFscmVhZHlMZWdpYmxlUmF0aW8pIC8gMik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2Vi
Vmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdl
YlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3Vi
bGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAg
ICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNj
YWxlKTsKKworICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3RhcF96b29tX2luX2VmZmVj
dCBmbGFnLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwg
MS4xKTsKKyAgICAvLyBkZXZpY2VEcGlTY2FsZSA8IG1pbmltdW1QYWdlU2NhbGUgPCBkb3VibGVU
YXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQorICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2Fs
ZUZhY3RvcigwLjVmKTsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1w
bCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
KSAqICgxICsgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8pIC8gMik7CisgICAgc2lt
dWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNj
YWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQs
IHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxl
U2NhbGUsIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91Ymxl
VGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmlt
dW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gWm9vbSBpbiB0byByZXNldCBk
b3VibGVfdGFwX3pvb21faW5fZWZmZWN0IGZsYWcuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjEpOworICAgIC8vIG1pbmltdW1QYWdlU2NhbGUgPCBk
b3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSA8IGRldmljZURwaVNjYWxlCisgICAgd2Vi
Vmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDEuMWYpOworICAgIHNldFNjYWxlQW5kU2Ny
b2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2li
bGVSYXRpbykgLyAyKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91Ymxl
VGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmlt
dW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZp
ZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUShkb3Vi
bGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91Ymxl
VGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9B
VF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dl
dF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVmMmU2NDQyZmJhZmJiMzRmNTNkYWZjNjVlZjgwNGQ2NGZjZDRiOWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0
X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PGh0bWw+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVu
OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAw
cHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+VG9wIERpdjwvcD4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246
IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAzMDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6
IDE1MHB4Ij4KKyAgICAgIDxwIGlkPSJEaXYiPkJvdHRvbSBEaXY8L3A+CisgICAgPC9kaXY+Cisg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tf
Zm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNjOGU5YzE2NTAzNDhiYzZiODU2
M2Q3MjdiYTI4MGE1NmI0NWNlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4
OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHgiPgorICAgICAgPHAgaWQ9
IkRpdiI+RGl2PC9wPgorICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pv
b21faW50b19kaXZfdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L2dldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbAppbmRleCAxODE3ZGM0
N2Q1NGI1M2JhMmM0NmE1YjBhOWJhNzQ5OWZjYTI3MGVjLi45NWU3YjM3ODdkNWM2MTAxNmJkN2Nh
MjUwZDhhODNmZDZlNzU4MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9v
bV9pbnRvX2Rpdl90ZXN0Lmh0bWwKQEAgLTEsMTMgKzEsMTAgQEAKIDxodG1sPgogICA8Ym9keT4K
LSAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0aDogNjQwcHg7IGhlaWdodDogNDgwcHgiPgot
ICAgICAgPHA+VG9wIERpdjwvcD4KLSAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHdoaXRlOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDIwMHB4OyB3aWR0
aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgotICAgICAgICA8cCBpZD0iaW5uZXJEaXYiPkRpdiB0
byB6b29tIHRvPC9wPgotICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMjIwcHg7IHRvcDogMzUwcHg7IHdpZHRoOiAxNjBweDsg
aGVpZ2h0OiA0MHB4Ij4KLSAgICAgICAgICA8cCBpZD0iaW5uZXJJbm5lckRpdiI+RGl2IE5PVCB0
byB6b29tIHRvPC9wPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvZGl2PgorICAgIDxkaXYgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIw
MHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAg
aWQ9IndpZGVEaXYiPldpZGUgZGl2PC9wPgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0
b3A6IDMwMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDogODAwIj4KKyAgICAgIDxwIGlkPSJ0YWxs
RGl2Ij5UYWxsIGRpdjwvcD4KICAgICA8L2Rpdj4KICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166045</attachid>
            <date>2012-09-27 13:00:13 -0700</date>
            <delta_ts>2012-09-27 15:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120927125931.patch</filename>
            <type>text/plain</type>
            <size>29549</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDljMTAzZGQ1YTZkMzQ1OTcwOTZjNjgyYWI5ZGIyNWMyMGRhOWMxYzAuLjhiNGNiMjYxMThkNTMy
YTA0MjZjYjJmYjU3ZTliYWIwNjI3NWQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhZ2Ugb3ZlcmxheXMgYXJlIG5vdCB1cGRh
dGVkIHdoZW4gV2ViVmlldyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYmVlMzQ3M2Y2YzE1YWM4NzA0ZDRkZmE3NDI5NDYxYzNhOWY1
NmM0Zi4uMzJhNzAyOTBhZDY5YmFhYzFmMjIwN2FkOGJlZTRmMjdmNDkzZDFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChzdWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAg
Z2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLikuIFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFs
bHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsK
K3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZyA9IDExOwogc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVyZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0
IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29u
c3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4y
NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9
IDEuMjsKIAogLy8gQ29uc3RhbnRzIGZvciB6b29taW5nIGluIG9uIGEgZm9jdXNlZCB0ZXh0IGZp
ZWxkLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9u
SW5TZWNvbmRzID0gMC4yOwpAQCAtMzkxLDYgKzM5Myw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0VGFnTWF4
aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxzZSkKICAg
ICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKKyAgICAsIG1fZG91YmxlVGFwWm9vbUluRWZm
ZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9w
KGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTc0Miw2ICs3NDYs
OSBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBldmVudCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxl
ZENvbnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9p
bnQoZXZlbnQueCwgZXZlbnQueSksIERvdWJsZVRhcCk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAgICAgICAgIG1fY2xpZW50LT5jYW5jZWxT
Y2hlZHVsZWRDb250ZW50SW50ZW50cygpOwpAQCAtNzgxLDE3ICs3ODgsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAog
CiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uSW5TZWNvbmRzKQogewotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBJbnRQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsK
KyAgICBXZWJQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsKICAgICBpZiAoIXVz
ZUFuY2hvcikKICAgICAgICAgY2xhbXBlZFBvaW50ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHRhcmdl
dFBvc2l0aW9uLCBuZXdTY2FsZSk7Ci0KLSAgICBpZiAoIWR1cmF0aW9uSW5TZWNvbmRzICYmICF1
c2VBbmNob3IpIHsKKyAgICBpZiAoKCFkdXJhdGlvbkluU2Vjb25kcyAmJiAhdXNlQW5jaG9yKSB8
fCBtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJvKSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZh
Y3RvcihuZXdTY2FsZSwgY2xhbXBlZFBvaW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllclRy
ZWVWaWV3LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogfQpAQCAtMTA0MSwyNCArMTA0NiwzOCBA
QCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRzKGNvbnN0IFdl
YlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAgIHJldHVybiBXZWJSZWN0KG5ld1gsIHNvdXJj
ZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0
b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwpCit2b2lk
IFdlYlZpZXdJbXBsOjpzaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm8oYm9vbCBzZXRU
b1plcm8pCit7CisgICAgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyA9IHNldFRvWmVybzsK
K30KKwordm9pZCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChj
b25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5cGUsIGZsb2F0JiBzY2Fs
ZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpCiB7CiAgICAgc2NhbGUgPSBwYWdl
U2NhbGVGYWN0b3IoKTsKICAgICBzY3JvbGwueCA9IHNjcm9sbC55ID0gMDsKICAgICBXZWJSZWN0
IHRhcmdldFJlY3QgPSBoaXRSZWN0OworICAgIC8vIFBhZGRpbmcgb25seSBkZXBlbmRzIG9uIHBh
Z2Ugc2NhbGUgd2hlbiB0cmlnZ2VyZWQgYnkgbWFudWFsbHkgdGFwcGluZworICAgIGludCBwYWRk
aW5nID0gKHpvb21UeXBlID09IERvdWJsZVRhcCkgPyB0b3VjaFBvaW50UGFkZGluZyA6IG5vblVz
ZXJJbml0aWF0ZWRQb2ludFBhZGRpbmc7CiAgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQot
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoID0gdGFyZ2V0UmVjdC5oZWlnaHQgPSB0b3VjaFBvaW50
UGFkZGluZzsKLQorICAgICAgICB0YXJnZXRSZWN0LndpZHRoID0gdGFyZ2V0UmVjdC5oZWlnaHQg
PSBwYWRkaW5nOwogICAgIFdlYlJlY3QgcmVjdCA9IGNvbXB1dGVCbG9ja0JvdW5kcyh0YXJnZXRS
ZWN0LCB6b29tVHlwZSk7CisgICAgaWYgKHpvb21UeXBlID09IEZpbmRJblBhZ2UgJiYgcmVjdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gS2VlcCBjdXJyZW50IHNjYWxlIChubyBuZWVkIHRvIHNj
cm9sbCBhcyB4LHkgd2lsbCBub3JtYWxseSBhbHJlYWR5CisgICAgICAgIC8vIGJlIHZpc2libGUp
LiBGSVhNRTogUmV2aXNpdCB0aGlzIGlmIGl0IGlzbid0IGFsd2F5cyB0cnVlLgorICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgY29uc3QgZmxvYXQgb3ZlcnZpZXdTY2FsZSA9IG1fbWluaW11
bVBhZ2VTY2FsZUZhY3RvcjsKICAgICBib29sIHNjYWxlVW5jaGFuZ2VkID0gdHJ1ZTsKICAgICBp
ZiAoIXJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFBhZ2VzIHNob3VsZCBiZSBhcyBsZWdp
YmxlIGFzIG9uIGRlc2t0b3Agd2hlbiBhdCBkcGkgc2NhbGUsIHNvIG5vCiAgICAgICAgIC8vIG5l
ZWQgdG8gem9vbSBpbiBmdXJ0aGVyIHdoZW4gYXV0b21hdGljYWxseSBkZXRlcm1pbmluZyB6b29t
IGxldmVsCiAgICAgICAgIC8vIChhZnRlciBkb3VibGUgdGFwLCBmaW5kIGluIHBhZ2UsIGV0Yyks
IHRob3VnaCB0aGUgdXNlciBzaG91bGQgc3RpbGwKICAgICAgICAgLy8gYmUgYWxsb3dlZCB0byBt
YW51YWxseSBwaW5jaCB6b29tIGluIGZ1cnRoZXIgaWYgdGhleSBkZXNpcmUuCi0gICAgICAgIGNv
bnN0IGZsb2F0IG1heFNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQg
YWRqdXN0ZWREcGlTY2FsZSA9IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZs
b2F0IGRlZmF1bHRTY2FsZVdoZW5BbHJlYWR5TGVnaWJsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZh
Y3RvciAqIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvOworICAgICAgICBmbG9hdCBs
ZWdpYmxlU2NhbGUgPSBhZGp1c3RlZERwaVNjYWxlOworICAgICAgICBpZiAoYWRqdXN0ZWREcGlT
Y2FsZSA8IGRlZmF1bHRTY2FsZVdoZW5BbHJlYWR5TGVnaWJsZSkKKyAgICAgICAgICAgIGxlZ2li
bGVTY2FsZSA9IChzY2FsZSA9PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IpID8gZGVmYXVsdFNj
YWxlV2hlbkFscmVhZHlMZWdpYmxlIDogbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yOwogCiAgICAg
ICAgIGNvbnN0IGZsb2F0IGRlZmF1bHRNYXJnaW4gPSBkb3VibGVUYXBab29tQ29udGVudERlZmF1
bHRNYXJnaW4gKiBkZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBjb25zdCBmbG9hdCBtaW5p
bXVtTWFyZ2luID0gZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luICogZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKQEAgLTEwNzEsNTUgKzEwOTAsNjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRv
Wm8KICAgICAgICAgcmVjdCA9IHdpZGVuUmVjdFdpdGhpblBhZ2VCb3VuZHMocmVjdCwKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlZmF1bHRNYXJnaW4gKiByZWN0LndpZHRoIC8g
bV9zaXplLndpZHRoKSwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1pbmltdW1N
YXJnaW4gKiByZWN0LndpZHRoIC8gbV9zaXplLndpZHRoKSk7Ci0KICAgICAgICAgLy8gRml0IGJs
b2NrIHRvIHNjcmVlbiwgcmVzcGVjdGluZyBsaW1pdHMuCiAgICAgICAgIHNjYWxlICo9IHN0YXRp
Y19jYXN0PGZsb2F0PihtX3NpemUud2lkdGgpIC8gcmVjdC53aWR0aDsKLSAgICAgICAgc2NhbGUg
PSBtaW4oc2NhbGUsIG1heFNjYWxlKTsKKyAgICAgICAgc2NhbGUgPSBtaW4oc2NhbGUsIGxlZ2li
bGVTY2FsZSk7CiAgICAgICAgIHNjYWxlID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhz
Y2FsZSk7CiAKICAgICAgICAgc2NhbGVVbmNoYW5nZWQgPSBmYWJzKHBhZ2VTY2FsZUZhY3Rvcigp
IC0gc2NhbGUpIDwgbWluU2NhbGVEaWZmZXJlbmNlOwogICAgIH0KIAotICAgIGlmICh6b29tVHlw
ZSA9PSBEb3VibGVUYXApIHsKLSAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpIHx8IHNjYWxlVW5j
aGFuZ2VkKSB7Ci0gICAgICAgICAgICAvLyBab29tIG91dCB0byBvdmVydmlldyBtb2RlLgotICAg
ICAgICAgICAgaWYgKG92ZXJ2aWV3U2NhbGUpCi0gICAgICAgICAgICAgICAgc2NhbGUgPSBvdmVy
dmlld1NjYWxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChyZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBLZWVwIGN1cnJlbnQgc2NhbGUgKG5vIG5l
ZWQgdG8gc2Nyb2xsIGFzIHgseSB3aWxsIG5vcm1hbGx5IGFscmVhZHkKLSAgICAgICAgLy8gYmUg
dmlzaWJsZSkuIEZJWE1FOiBSZXZpc2l0IHRoaXMgaWYgaXQgaXNuJ3QgYWx3YXlzIHRydWUuCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBj
YWxsZWQgZm9yIGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAotICAgIC8vIHRoZW4gaWYg
dGhlIHVzZXIgbWFudWFsbHkgem9vbXMgaW4gaXQnZCBiZSBuaWNlIHRvIHByZXNlcnZlIHRoZSBy
ZWxhdGl2ZQotICAgIC8vIGluY3JlYXNlIGluIHpvb20gdGhleSBjYXVzZWQgKGlmIHRoZXkgem9v
bSBvdXQgdGhlbiBpdCdzIG9rIHRvIHpvb20KLSAgICAvLyB0aGVtIGJhY2sgaW4gYWdhaW4pLiBU
aGlzIGlzbid0IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudCBkb3VibGUtdGFwCi0gICAgLy8g
em9vbSBzdHJhdGVneSAoZml0dGluZyB0aGUgY29udGFpbmluZyBibG9jayB0byB0aGUgc2NyZWVu
KSB0aG91Z2guCi0KLSAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2Nh
bGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1fc2l6ZS53
aWR0aCAvIHNjYWxlICogcGFnZVNjYWxlRmFjdG9yKCk7Ci0KLSAgICAvLyBTY3JvbGwgdG8gdmVy
dGljYWxseSBhbGlnbiB0aGUgYmxvY2suCi0gICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVuSGVp
Z2h0KSB7Ci0gICAgICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KLSAgICAg
ICAgcmVjdC55IC09IDAuNSAqIChzY3JlZW5IZWlnaHQgLSByZWN0LmhlaWdodCk7CisgICAgaWYg
KHpvb21UeXBlID09IERvdWJsZVRhcCAmJiAocmVjdC5pc0VtcHR5KCkgfHwgc2NhbGVVbmNoYW5n
ZWQgfHwgbV9kb3VibGVUYXBab29tSW5FZmZlY3QpKSB7CisgICAgICAgIC8vIFpvb20gb3V0IHRv
IG1pbmltdW0gc2NhbGUuCisgICAgICAgIHNjYWxlID0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9y
OworICAgICAgICBzY3JvbGwgPSBXZWJQb2ludChoaXRSZWN0LngsIGhpdFJlY3QueSk7CisgICAg
ICAgIGlzQW5jaG9yID0gdHJ1ZTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBm
YWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBFbnN1cmUgcG9zaXRpb24gd2UncmUgem9v
bWluZyB0byAoKyBwYWRkaW5nKSBpc24ndCBvZmYgdGhlIGJvdHRvbSBvZgotICAgICAgICAvLyB0
aGUgc2NyZWVuLgotICAgICAgICByZWN0LnkgPSBtYXg8ZmxvYXQ+KHJlY3QueSwgaGl0UmVjdC55
ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3JlZW5IZWlnaHQpOwotICAgIH0gLy8gT3RoZXJ3aXNl
IHRvcCBhbGlnbiB0aGUgYmxvY2suCi0KLSAgICAvLyBEbyB0aGUgc2FtZSB0aGluZyBmb3IgaG9y
aXpvbnRhbCBhbGlnbm1lbnQuCi0gICAgaWYgKHJlY3Qud2lkdGggPCBzY3JlZW5XaWR0aCkKLSAg
ICAgICAgcmVjdC54IC09IDAuNSAqIChzY3JlZW5XaWR0aCAtIHJlY3Qud2lkdGgpOwotICAgIGVs
c2UKLSAgICAgICAgcmVjdC54ID0gbWF4PGZsb2F0PihyZWN0LngsIGhpdFJlY3QueCArIHRvdWNo
UG9pbnRQYWRkaW5nIC0gc2NyZWVuV2lkdGgpOworICAgICAgICBpZiAoem9vbVR5cGUgPT0gRG91
YmxlVGFwICYmIHNjYWxlICE9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcikKKyAgICAgICAgICAg
IG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICAgICAgLy8gRklYTUU6IElm
IHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZvciBhdXRvIHpvb20gZHVyaW5nIGZpbmQgaW4gcGFnZSwK
KyAgICAgICAgLy8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6b29tcyBpbiBpdCdkIGJlIG5p
Y2UgdG8gcHJlc2VydmUgdGhlCisgICAgICAgIC8vIHJlbGF0aXZlIGluY3JlYXNlIGluIHpvb20g
dGhleSBjYXVzZWQgKGlmIHRoZXkgem9vbSBvdXQgdGhlbiBpdCdzIG9rCisgICAgICAgIC8vIHRv
IHpvb20gdGhlbSBiYWNrIGluIGFnYWluKS4gVGhpcyBpc24ndCBjb21wYXRpYmxlIHdpdGggb3Vy
IGN1cnJlbnQKKyAgICAgICAgLy8gZG91YmxlLXRhcCB6b29tIHN0cmF0ZWd5IChmaXR0aW5nIHRo
ZSBjb250YWluaW5nIGJsb2NrIHRvIHRoZSBzY3JlZW4pCisgICAgICAgIC8vIHRob3VnaC4KKwor
ICAgICAgICBmbG9hdCBzY3JlZW5IZWlnaHQgPSBtX3NpemUuaGVpZ2h0IC8gc2NhbGUgKiBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQgc2NyZWVuV2lkdGggPSBtX3NpemUud2lkdGgg
LyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworCisgICAgICAgIC8vIFNjcm9sbCB0byB2ZXJ0
aWNhbGx5IGFsaWduIHRoZSBibG9jay4KKyAgICAgICAgaWYgKHJlY3QuaGVpZ2h0IDwgc2NyZWVu
SGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBzaG9ydCBibG9ja3Mu
CisgICAgICAgICAgICByZWN0LnkgLT0gMC41ICogKHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3ZSdy
ZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCisgICAgICAg
ICAgICAvLyB0aGUgc2NyZWVuLgorICAgICAgICAgICAgcmVjdC55ID0gbWF4PGZsb2F0PihyZWN0
LnksIGhpdFJlY3QueSArIHBhZGRpbmcgLSBzY3JlZW5IZWlnaHQpOworICAgICAgICB9IC8vIE90
aGVyd2lzZSB0b3AgYWxpZ24gdGhlIGJsb2NrLgorCisgICAgICAgIC8vIERvIHRoZSBzYW1lIHRo
aW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KKyAgICAgICAgaWYgKHJlY3Qud2lkdGggPCBz
Y3JlZW5XaWR0aCkKKyAgICAgICAgICAgIHJlY3QueCAtPSAwLjUgKiAoc2NyZWVuV2lkdGggLSBy
ZWN0LndpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVjdC54ID0gbWF4PGZsb2F0
PihyZWN0LngsIGhpdFJlY3QueCArIHBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIHNj
cm9sbC54ID0gcmVjdC54OworICAgICAgICBzY3JvbGwueSA9IHJlY3QueTsKKyAgICAgICAgaXNB
bmNob3IgPSBmYWxzZTsKKyAgICB9CiAKLSAgICBzY3JvbGwueCA9IHJlY3QueDsKLSAgICBzY3Jv
bGwueSA9IHJlY3QueTsKKyAgICBzY2FsZSA9IGNsYW1wUGFnZVNjYWxlRmFjdG9yVG9MaW1pdHMo
c2NhbGUpOworICAgIHNjcm9sbCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPndpbmRv
d1RvQ29udGVudHMoc2Nyb2xsKTsKKyAgICBmbG9hdCBzY2FsZURlbHRhID0gc2NhbGUgLyBwYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICBzY3JvbGwgPSBXZWJQb2ludChzY3JvbGwueCAqIHNjYWxlRGVs
dGEsIHNjcm9sbC55ICogc2NhbGVEZWx0YSk7CisgICAgaWYgKCFpc0FuY2hvcikKKyAgICAgICAg
c2Nyb2xsID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbCwgc2NhbGUpOwogfQogCiBzdGF0aWMg
Ym9vbCBoaWdobGlnaHRDb25kaXRpb25zKE5vZGUqIG5vZGUpCkBAIC0xMTg1LDExICsxMjEwLDEz
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGVab29tQXJvdW5kUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBBdXRvWm9vbVR5cGUgem9vCiAKICAgICBmbG9hdCBzY2FsZTsKICAgICBXZWJQ
b2ludCBzY3JvbGw7Ci0gICAgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChXZWJSZWN0
KHBvaW50LngoKSwgcG9pbnQueSgpLCAwLCAwKSwgem9vbVR5cGUsIHNjYWxlLCBzY3JvbGwpOwor
ICAgIGJvb2wgaXNBbmNob3I7CisgICAgV2ViUG9pbnQgcHQgPSBwb2ludDsKKyAgICBjb21wdXRl
U2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocHQueCwgcHQueSwgMCwgMCksIHpvb21U
eXBlLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CiAKICAgICBib29sIGlzRG91YmxlVGFwID0g
KHpvb21UeXBlID09IERvdWJsZVRhcCk7Ci0gICAgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzID0g
aXNEb3VibGVUYXAgPyBkb3VibGVUYXBab29tQW5pbWF0aW9uRHVyYXRpb25JblNlY29uZHMgOiAw
OwotICAgIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHNjcm9sbCwgaXNEb3VibGVUYXAsIHNjYWxl
LCBkdXJhdGlvbkluU2Vjb25kcyk7CisgICAgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzID0gKGlz
RG91YmxlVGFwICYmICFtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJvKSA/IGRvdWJsZVRhcFpv
b21BbmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA6IDA7CisgICAgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oc2Nyb2xsLCBpc0FuY2hvciwgc2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKICNlbmRp
ZgogfQogCkBAIC0zNDMwLDggKzM0NTcsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0
TG9hZChib29sKiBpc05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZpZ2F0aW9uV2l0aGluUGEKICAg
ICBtX25ld05hdmlnYXRpb25Mb2FkZXIgPSAwOwogI2VuZGlmCiAgICAgbV9vYnNlcnZlZE5ld05h
dmlnYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0
aW9uV2l0aGluUGFnZSkKKyAgICBpZiAoKmlzTmV3TmF2aWdhdGlvbiAmJiAhaXNOYXZpZ2F0aW9u
V2l0aGluUGFnZSkgewogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7Cisg
ICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0ID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8g
TWFrZSBzdXJlIGxpbmsgaGlnaGxpZ2h0IGZyb20gcHJldmlvdXMgcGFnZSBpcyBjbGVhcmVkLgog
ICAgIG1fbGlua0hpZ2hsaWdodC5jbGVhcigpOwpAQCAtMzg5OCw2ICszOTI3LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgcGFnZVNjYWwKICAgICAgICAgV2ViUG9pbnQgc2NhbGVkU2Nyb2xsT2Zmc2V0KHNj
cm9sbE9mZnNldC53aWR0aCAqIHBhZ2VTY2FsZURlbHRhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LmhlaWdodCAqIHBhZ2VTY2FsZURlbHRhKTsKICAg
ICAgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxlRGVs
dGEsIHNjYWxlZFNjcm9sbE9mZnNldCk7CisgICAgICAgIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0
ID0gZmFsc2U7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCA0YzFhOTc0YTA1ZGY0MjY2MGY5ZDczOTkzNzQ4MjQyZjBhNjRiM2Q2Li4yMDU1
YzllYmNmMGQ4NDQ0YmJlNWJhM2ExZmFmZjliZGE0MzJiZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTU2MSwxMiArNTYxLDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZ1bGxGcmFtZVBsdWdpblpvb21MZXZlbENoYW5nZWQoZG91YmxlIHpvb21MZXZlbCk7
CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBjb21wdXRlU2NhbGVBbmRT
Y3JvbGxGb3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9ab29tVHlwZSwgZmxv
YXQmIHNjYWxlLCBXZWJQb2ludCYgc2Nyb2xsKTsKKyAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9h
dCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwsIGJvb2wgJmlzQW5jaG9yKTsKICAgICBXZWJDb3Jl
OjpOb2RlKiBiZXN0VG91Y2hMaW5rTm9kZShXZWJDb3JlOjpJbnRQb2ludCB0b3VjaEV2ZW50TG9j
YXRpb24pOwogICAgIHZvaWQgZW5hYmxlVG91Y2hIaWdobGlnaHQoV2ViQ29yZTo6SW50UG9pbnQg
dG91Y2hFdmVudExvY2F0aW9uKTsKICNlbmRpZgogICAgIHZvaWQgYW5pbWF0ZVpvb21Bcm91bmRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEF1dG9ab29tVHlwZSk7CiAKKyAgICAvLyBF
eHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIHZvaWQgc2hvdWxkVXNlQW5pbWF0ZURv
dWJsZVRhcFRpbWVaZXJvKGJvb2wpOworCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQo
aW50IG51bVRpbWVzKTsKIAogICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50Kik7CkBAIC03NDAsNiArNzQzLDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9zYXZlZFBhZ2VTY2FsZUZhY3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFj
dG9yIGlzIHNhdmVkLgogICAgIFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9sbE9mZnNldDsK
IAorICAgIC8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVkIGJ5IHpvb21p
bmcgaW4gd2l0aCBkb3VibGUgdGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29tSW5FZmZlY3Q7
CisKKyAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIGJvb2wgbV9zaG91bGRV
c2VEb3VibGVUYXBUaW1lWmVybzsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFsbG93ZWQ7CiAK
ICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCBhMDA0OWI2N2U4ZDQxYjYyYmE1Mjg1YjlhMTAw
ZDY5YzYwNmY0MDMxLi4zMDZmN2FhODYyZmY2ZDJhM2ExMjZiNjEzNmQ3ZjkzYmRlYjcxODVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0z
MTYsNzYgKzMxNiwxODEgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2FuT3ZlcnJpZGVNYXhpbXVt
U2NhbGVGYWN0b3IpCiB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBEaXZB
dXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICB2aXJ0dWFsIFdlYlJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFIHsgcmV0dXJu
IG1fd2luZG93UmVjdDsgfQorCisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3Q7Cit9OworCit2b2lk
IHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgV2Vi
UG9pbnQgc2Nyb2xsLCBmbG9hdCBzY2FsZSkKK3sKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yKHNjYWxlLCBXZWJQb2ludChzY3JvbGwueCwgc2Nyb2xsLnkpKTsKKyAgICB3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7Cit9CisKIFRF
U1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tUGFyYW1zVGVzdCkKIHsKICAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0
Lmh0bWwiKTsKIAotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUp
KTsKLSAgICBpbnQgcGFnZVdpZHRoID0gNjQwOwotICAgIGludCBwYWdlSGVpZ2h0ID0gNDgwOwot
ICAgIGludCBkaXZQb3NYID0gMjAwOwotICAgIGludCBkaXZQb3NZID0gMjAwOwotICAgIGludCBk
aXZXaWR0aCA9IDIwMDsKLSAgICBpbnQgZGl2SGVpZ2h0ID0gMTUwOwotICAgIFdlYlJlY3QgZG91
YmxlVGFwUG9pbnQoMjUwLCAyNTAsIDAsIDApOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2Vi
U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3
Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmll
d3BvcnRIZWlnaHQgPSA0ODA7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwg
MCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJW
aWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2lu
dG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+
ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcigyLjBmKTsKKworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3
cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMoMC4wMSwgNCk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwo
KS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworCisgICAgV2ViUmVjdCB3aWRlRGl2KDIwMCwgMTAw
LCA0MDAsIDE1MCk7CisgICAgV2ViUmVjdCB0YWxsRGl2KDIwMCwgMzAwLCA0MDAsIDgwMCk7Cisg
ICAgV2ViUmVjdCBkb3VibGVUYXBQb2ludFdpZGUoKHdpZGVEaXYueCArIDUwKSAqIHdlYlZpZXdJ
bXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwKKyAgICAgICAgKHdpZGVEaXYueSArIDUwKSAqIHdlYlZp
ZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwgMCwgMCk7CisgICAgV2ViUmVjdCBkb3VibGVUYXBQ
b2ludFRhbGwoKHRhbGxEaXYueCArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3Io
KSwKKyAgICAgICAgKHRhbGxEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0
b3IoKSwgMCwgMCk7CiAgICAgZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAg
IGJvb2wgaXNBbmNob3I7CisKKyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdp
ZGUgZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0
KGRvdWJsZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9s
bCwgaXNBbmNob3IpOworICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRo
ZSBzY3JlZW4gKG1vZHVsbyBtYXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJl
ZCAobW9kdWxvIGludGVnZXIgcm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lk
dGggLyAoZmxvYXQpIHdpZGVEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFS
KHdpZGVEaXYueCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdp
ZGVEaXYueSArIHdpZGVEaXYuaGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAv
IDIpOworICAgIEVYUEVDVF9ORUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1Rf
RVEoZmFsc2UsIGlzQW5jaG9yKTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdl
YlZpZXdJbXBsLCBzY3JvbGwsIHNjYWxlKTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0
byBtaW5pbXVtIHNjYWxlLgorICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2Nh
bGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+
bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlz
QW5jaG9yKTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBX
ZWJQb2ludCgwLCAwKSwgc2NhbGUpOworCisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcg
aW50byB0YWxsIGRpdi4KKyAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChkb3VibGVUYXBQb2ludFRhbGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxl
LCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUg
dG9wIGxlZnQgb2YgdGhlIHZpZXdwb3J0LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGgg
LyAoZmxvYXQpIHRhbGxEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRh
bGxEaXYueCAqIHNjYWxlLCBzY3JvbGwueCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYu
eSAqIHNjYWxlLCBzY3JvbGwueSwgMjApOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3Ip
OwogCi0gICAgLy8gVGVzdCBmb3IgRG91YmxldGFwIHNjYWxpbmcKKyAgICAvLyBUZXN0IGZvciBO
b24tZG91YmxldGFwIHNjYWxpbmcKKyAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCisgICAg
d2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAs
IDI1MCwgMTAsIDEwKSwgV2ViVmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwsIGlz
QW5jaG9yKTsKKyAgICBFWFBFQ1RfTkVBUih2aWV3cG9ydFdpZHRoIC8gKGZsb2F0KSB3aWRlRGl2
LndpZHRoLCBzY2FsZSwgMC4xKTsKK30KIAotICAgIC8vIFRlc3RzIGZvciB6b29taW5nIGluIGFu
ZCBvdXQgd2l0aG91dCBjbGFtcGluZy4KLSAgICAvLyBTZXQgZGV2aWNlIHNjYWxlIGFuZCBzY2Fs
ZSBsaW1pdHMgc28gd2UgZG9udCBnZXQgY2xhbXBlZC4KLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2
aWNlU2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rvckxp
bWl0cygwLCA0IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwordm9pZCBzaW11
bGF0ZURvdWJsZVRhcChXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFdlYlBvaW50JiBwb2ludCwg
ZmxvYXQmIHNjYWxlKQoreworICAgIFdlYlBvaW50IHNjYWxlZFBvaW50KHN0YXRpY19jYXN0PGlu
dD4ocG9pbnQueCAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSksCisgICAgICAgIHN0
YXRpY19jYXN0PGludD4ocG9pbnQueSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSkp
OworICAgIHdlYlZpZXdJbXBsLT5hbmltYXRlWm9vbUFyb3VuZFBvaW50KHNjYWxlZFBvaW50LCBX
ZWJWaWV3SW1wbDo6RG91YmxlVGFwKTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisgICAgc2NhbGUgPSB3ZWJWaWV3SW1wbC0+cGFnZVNj
YWxlRmFjdG9yKCk7Cit9CiAKLSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQs
IFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIGZsb2F0IHNjYWxl
ZERpdldpZHRoID0gZGl2V2lkdGggKiBzY2FsZTsKLSAgICBmbG9hdCBzY2FsZWREaXZIZWlnaHQg
PSBkaXZIZWlnaHQgKiBzY2FsZTsKLSAgICBpbnQgaFNjcm9sbCA9ICgoZGl2UG9zWCAqIHNjYWxl
KSAtICgocGFnZVdpZHRoIC0gc2NhbGVkRGl2V2lkdGgpIC8gMikpIC8gc2NhbGU7Ci0gICAgaW50
IHZTY3JvbGwgPSAoKGRpdlBvc1kgKiBzY2FsZSkgLSAoKHBhZ2VIZWlnaHQgLSBzY2FsZWREaXZI
ZWlnaHQpIC8gMikpIC8gc2NhbGU7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lk
dGgsIHNjYWxlLCAwLjEpOwotICAgIEVYUEVDVF9FUShoU2Nyb2xsLCBzY3JvbGwueCk7Ci0gICAg
RVhQRUNUX0VRKHZTY3JvbGwsIHNjcm9sbC55KTsKLQotICAgIC8vIFRlc3Qgem9vbSBvdXQgdG8g
b3ZlcnZpZXcgc2NhbGUuCi0gICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2Vi
U2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVG
YWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJl
Y3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgxLCBzY2FsZSk7Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50
KDAsIDApLCBzY3JvbGwpOwotCi0gICAgLy8gVGVzdHMgZm9yIGNsYW1wZWQgc2NhbGluZy4KLSAg
ICAvLyBUZXN0IGNsYW1wIHRvIGRldmljZSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlT
Y3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmll
d0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoMi41KTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNj
cm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIuNSwgc2NhbGUpOwotCi0gICAgLy8gVGVzdCBj
bGFtcCB0byBtaW5pbXVtIHNjYWxlOgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1p
dHMoMS41IC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIDQgLyB3ZWJWaWV3SW1w
bC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAs
IHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjUsIHNjYWxlKTsKLSAgICBF
WFBFQ1RfRVEoV2ViUG9pbnQoMCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRv
IG1heGltdW0gc2NhbGU6Ci0gICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2Vi
U2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVG
YWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAg
IHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgMyAvIHdlYlZpZXdJbXBs
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5k
U2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwg
c2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMsIHNjYWxlKTsKK1RFU1RfRihX
ZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tTXVsdGlwbGVEaXZzVGVzdCkKK3sKKyAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3Qu
aHRtbCIpOwogCi0gICAgLy8gVGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2FsaW5nCi0gICAgd2Vi
Vmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvcigxLCBXZWJQb2ludCgwLCAwKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgNCAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKLSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwg
V2ViVmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9ORUFS
KHBhZ2VXaWR0aCAvIGRpdldpZHRoLCBzY2FsZSwgMC4xKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RX
ZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBp
bnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFscmVhZHlM
ZWdpYmxlUmF0aW8gPSAxLjI7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwg
MCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJW
aWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRv
X3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5l
bmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJT
aXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPnNl
dFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7CisgICAgd2ViVmlld0ltcGwtPnNldERldmlj
ZVNjYWxlRmFjdG9yKDEuNWYpOworICAgIHdlYlZpZXdJbXBsLT5zaG91bGRVc2VBbmltYXRlRG91
YmxlVGFwVGltZVplcm8odHJ1ZSk7CisKKyAgICBXZWJSZWN0IHRvcERpdigyMDAsIDEwMCwgMjAw
LCAxNTApOworICAgIFdlYlJlY3QgYm90dG9tRGl2KDIwMCwgMzAwLCAyMDAsIDE1MCk7CisgICAg
V2ViUG9pbnQgdG9wUG9pbnQodG9wRGl2LnggKyA1MCwgdG9wRGl2LnkgKyA1MCk7CisgICAgV2Vi
UG9pbnQgYm90dG9tUG9pbnQoYm90dG9tRGl2LnggKyA1MCwgYm90dG9tRGl2LnkgKyA1MCk7Cisg
ICAgZmxvYXQgc2NhbGU7CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0lt
cGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3Io
KSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvKSAvIDIpOworCisgICAg
Ly8gVGVzdCBkb3VibGUgdGFwIG9uIHR3byBkaWZmZXJlbnQgZGl2cworICAgIC8vIEFmdGVyIGZp
cnN0IHpvb20sIHdlIHNob3VsZCBnbyBiYWNrIHRvIG1pbmltdW0gcGFnZSBzY2FsZSB3aXRoIGEg
c2Vjb25kIGRvdWJsZSB0YXAuCisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIHRv
cFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGws
IGJvdHRvbVBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKworICAgIC8vIElmIHRoZSB1c2VyIHBp
bmNoIHpvb21zIGFmdGVyIGRvdWJsZSB0YXAsIGEgc2Vjb25kIGRvdWJsZSB0YXAgc2hvdWxkIHpv
b20gYmFjayB0byB0aGUgZGl2LgorICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCB0
b3BQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoKSwgMC42KTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwg
Ym90dG9tUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRl
dmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2
QXV0b1pvb21TY2FsZUJvdW5kc1Rlc3QpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9h
ZCgiZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOworCisg
ICAgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCBjbGllbnQ7CisgICAgaW50IHZpZXdwb3J0
V2lkdGggPSA2NDA7CisgICAgaW50IHZpZXdwb3J0SGVpZ2h0ID0gNDgwOworICAgIGZsb2F0IGRv
dWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvID0gMS4yOworICAgIGNsaWVudC5tX3dpbmRv
d1JlY3QgPSBXZWJSZWN0KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKKyAg
ICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2Nh
bGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVu
dCkpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAg
d2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0
KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAg
ICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7Cisg
ICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYpOworICAgIHdlYlZpZXdJ
bXBsLT5zaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm8odHJ1ZSk7CisgICAgZmxvYXQg
ZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlU2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpICogZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CisKKyAg
ICBXZWJSZWN0IGRpdigyMDAsIDEwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IGRvdWJsZVRh
cFBvaW50KGRpdi54ICsgNTAsIGRpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxlOwogCi0gICAg
Ly8gRHJvcCBhbnkgcGVuZGluZyBmYWtlIG1vdXNlIGV2ZW50cyBmcm9tIHpvb21pbmcgYmVmb3Jl
IGxlYXZpbmcgdGhlIHRlc3QuCi0gICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5jbGVhcigpOworICAgIC8vIFRlc3QgZG91YmxlIHRhcCBzY2FsZSBi
b3VuZHMuCisgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVn
aWJsZVNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91
dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8pIC8g
Mik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBz
Y2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRh
cFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3
SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmll
d0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKworICAgIC8vIFpvb20gaW4gdG8g
cmVzZXQgZG91YmxlX3RhcF96b29tX2luX2VmZmVjdCBmbGFnLgorICAgIHdlYlZpZXdJbXBsLT5h
cHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4xKTsKKyAgICAvLyBkZXZpY2VEcGlTY2Fs
ZSA8IG1pbmltdW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQor
ICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigwLjVmKTsKKyAgICBzZXRTY2Fs
ZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3
SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbUFscmVh
ZHlMZWdpYmxlUmF0aW8pIC8gMik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGws
IGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBs
LT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRh
cCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlU2NhbGUsIHNjYWxlKTsKKyAgICBzaW11bGF0
ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUp
OworCisgICAgLy8gWm9vbSBpbiB0byByZXNldCBkb3VibGVfdGFwX3pvb21faW5fZWZmZWN0IGZs
YWcuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjEp
OworICAgIC8vIG1pbmltdW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVT
Y2FsZSA8IGRldmljZURwaVNjYWxlCisgICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFj
dG9yKDEuMWYpOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBX
ZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICog
KDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKyAgICBzaW11bGF0
ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUp
OworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2Nh
bGUpOworICAgIEVYUEVDVF9GTE9BVF9FUShkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2Fs
ZSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQ
b2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pv
b21fdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0
aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmU2NDQyZmJh
ZmJiMzRmNTNkYWZjNjVlZjgwNGQ2NGZjZDRiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9v
bV90ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxkaXYg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6
IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgorICAgICAg
PHAgaWQ9IkRpdiI+VG9wIERpdjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9w
OiAzMDBweDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDE1MHB4Ij4KKyAgICAgIDxwIGlkPSJEaXYi
PkJvdHRvbSBEaXY8L3A+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2No
ZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWNjOGU5YzE2NTAzNDhiYzZiODU2M2Q3MjdiYTI4MGE1NmI0NWNlOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVf
Ym91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0
bWw+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogNDAwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+RGl2PC9wPgorICAgIDwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29tX2lu
dG9fZGl2X3Rlc3QuaHRtbAppbmRleCAxODE3ZGM0N2Q1NGI1M2JhMmM0NmE1YjBhOWJhNzQ5OWZj
YTI3MGVjLi45NWU3YjM3ODdkNWM2MTAxNmJkN2NhMjUwZDhhODNmZDZlNzU4MmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRv
X3pvb21faW50b19kaXZfdGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwKQEAgLTEs
MTMgKzEsMTAgQEAKIDxodG1sPgogICA8Ym9keT4KLSAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3
aWR0aDogNjQwcHg7IGhlaWdodDogNDgwcHgiPgotICAgICAgPHA+VG9wIERpdjwvcD4KLSAgICAg
IDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDIwMHB4OyB0b3A6IDIwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgot
ICAgICAgICA8cCBpZD0iaW5uZXJEaXYiPkRpdiB0byB6b29tIHRvPC9wPgotICAgICAgICA8ZGl2
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMjIw
cHg7IHRvcDogMzUwcHg7IHdpZHRoOiAxNjBweDsgaGVpZ2h0OiA0MHB4Ij4KLSAgICAgICAgICA8
cCBpZD0iaW5uZXJJbm5lckRpdiI+RGl2IE5PVCB0byB6b29tIHRvPC9wPgotICAgICAgICA8L2Rp
dj4KLSAgICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVu
OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogNDAw
cHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IndpZGVEaXYiPldpZGUgZGl2PC9wPgor
ICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3Np
dGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDMwMHB4OyB3aWR0aDogNDAwcHg7IGhl
aWdodDogODAwIj4KKyAgICAgIDxwIGlkPSJ0YWxsRGl2Ij5UYWxsIGRpdjwvcD4KICAgICA8L2Rp
dj4KICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166081</attachid>
            <date>2012-09-27 15:43:13 -0700</date>
            <delta_ts>2012-09-27 17:20:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120927154231.patch</filename>
            <type>text/plain</type>
            <size>29551</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDljMTAzZGQ1YTZkMzQ1OTcwOTZjNjgyYWI5ZGIyNWMyMGRhOWMxYzAuLjhiNGNiMjYxMThkNTMy
YTA0MjZjYjJmYjU3ZTliYWIwNjI3NWQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhZ2Ugb3ZlcmxheXMgYXJlIG5vdCB1cGRh
dGVkIHdoZW4gV2ViVmlldyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYmVlMzQ3M2Y2YzE1YWM4NzA0ZDRkZmE3NDI5NDYxYzNhOWY1
NmM0Zi4uNzQzM2FmNmE4YjBlODc4M2U4NTVhYmM4OWY0ZjA5MjUxMjMxOTU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChzdWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAg
Z2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLikuIFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFs
bHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsK
K3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZyA9IDExOwogc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVyZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0
IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29u
c3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4y
NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9
IDEuMjsKIAogLy8gQ29uc3RhbnRzIGZvciB6b29taW5nIGluIG9uIGEgZm9jdXNlZCB0ZXh0IGZp
ZWxkLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9u
SW5TZWNvbmRzID0gMC4yOwpAQCAtMzkxLDYgKzM5Myw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0VGFnTWF4
aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxzZSkKICAg
ICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKKyAgICAsIG1fZG91YmxlVGFwWm9vbUluRWZm
ZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9w
KGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTc0Miw2ICs3NDYs
OSBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBldmVudCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxl
ZENvbnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9p
bnQoZXZlbnQueCwgZXZlbnQueSksIERvdWJsZVRhcCk7CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAgICAgICAgIG1fY2xpZW50LT5jYW5jZWxT
Y2hlZHVsZWRDb250ZW50SW50ZW50cygpOwpAQCAtNzgxLDE3ICs3ODgsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAog
CiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2lu
dCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uSW5TZWNvbmRzKQogewotICAgIGlmICghbV9sYXllclRyZWVWaWV3KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBJbnRQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsK
KyAgICBXZWJQb2ludCBjbGFtcGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsKICAgICBpZiAoIXVz
ZUFuY2hvcikKICAgICAgICAgY2xhbXBlZFBvaW50ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHRhcmdl
dFBvc2l0aW9uLCBuZXdTY2FsZSk7Ci0KLSAgICBpZiAoIWR1cmF0aW9uSW5TZWNvbmRzICYmICF1
c2VBbmNob3IpIHsKKyAgICBpZiAoKCFkdXJhdGlvbkluU2Vjb25kcyAmJiAhdXNlQW5jaG9yKSB8
fCBtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJvKSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZh
Y3RvcihuZXdTY2FsZSwgY2xhbXBlZFBvaW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllclRy
ZWVWaWV3LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogfQpAQCAtMTA0MSwyNCArMTA0NiwzNyBA
QCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJlY3RXaXRoaW5QYWdlQm91bmRzKGNvbnN0IFdl
YlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAgIHJldHVybiBXZWJSZWN0KG5ld1gsIHNvdXJj
ZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0
b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwpCit2b2lk
IFdlYlZpZXdJbXBsOjpzaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5n
KGJvb2wgc2V0VG9aZXJvKQoreworICAgIG1fc2hvdWxkVXNlRG91YmxlVGFwVGltZVplcm8gPSBz
ZXRUb1plcm87Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZv
ckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBm
bG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwsIGJvb2wmIGlzQW5jaG9yKQogewogICAgIHNj
YWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgc2Nyb2xsLnggPSBzY3JvbGwueSA9IDA7CiAg
ICAgV2ViUmVjdCB0YXJnZXRSZWN0ID0gaGl0UmVjdDsKKyAgICAvLyBQYWRkaW5nIG9ubHkgZGVw
ZW5kcyBvbiBwYWdlIHNjYWxlIHdoZW4gdHJpZ2dlcmVkIGJ5IG1hbnVhbGx5IHRhcHBpbmcKKyAg
ICBpbnQgcGFkZGluZyA9ICh6b29tVHlwZSA9PSBEb3VibGVUYXApID8gdG91Y2hQb2ludFBhZGRp
bmcgOiBub25Vc2VySW5pdGlhdGVkUG9pbnRQYWRkaW5nOwogICAgIGlmICh0YXJnZXRSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCA9IHRhcmdldFJlY3QuaGVpZ2h0ID0g
dG91Y2hQb2ludFBhZGRpbmc7Ci0KKyAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCA9IHRhcmdldFJl
Y3QuaGVpZ2h0ID0gcGFkZGluZzsKICAgICBXZWJSZWN0IHJlY3QgPSBjb21wdXRlQmxvY2tCb3Vu
ZHModGFyZ2V0UmVjdCwgem9vbVR5cGUpOworICAgIGlmICh6b29tVHlwZSA9PSBGaW5kSW5QYWdl
ICYmIHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEtlZXAgY3VycmVudCBzY2FsZSAobm8g
bmVlZCB0byBzY3JvbGwgYXMgeCx5IHdpbGwgbm9ybWFsbHkgYWxyZWFkeQorICAgICAgICAvLyBi
ZSB2aXNpYmxlKS4gRklYTUU6IFJldmlzaXQgdGhpcyBpZiBpdCBpc24ndCBhbHdheXMgdHJ1ZS4K
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGNvbnN0IGZsb2F0IG92ZXJ2aWV3U2NhbGUg
PSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBzY2FsZVVuY2hhbmdlZCA9IHRy
dWU7CiAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBQYWdlcyBzaG91bGQg
YmUgYXMgbGVnaWJsZSBhcyBvbiBkZXNrdG9wIHdoZW4gYXQgZHBpIHNjYWxlLCBzbyBubwogICAg
ICAgICAvLyBuZWVkIHRvIHpvb20gaW4gZnVydGhlciB3aGVuIGF1dG9tYXRpY2FsbHkgZGV0ZXJt
aW5pbmcgem9vbSBsZXZlbAogICAgICAgICAvLyAoYWZ0ZXIgZG91YmxlIHRhcCwgZmluZCBpbiBw
YWdlLCBldGMpLCB0aG91Z2ggdGhlIHVzZXIgc2hvdWxkIHN0aWxsCiAgICAgICAgIC8vIGJlIGFs
bG93ZWQgdG8gbWFudWFsbHkgcGluY2ggem9vbSBpbiBmdXJ0aGVyIGlmIHRoZXkgZGVzaXJlLgot
ICAgICAgICBjb25zdCBmbG9hdCBtYXhTY2FsZSA9IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAg
ICAgIGNvbnN0IGZsb2F0IGRlZmF1bHRTY2FsZVdoZW5BbHJlYWR5TGVnaWJsZSA9IG1fbWluaW11
bVBhZ2VTY2FsZUZhY3RvciAqIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvOworICAg
ICAgICBmbG9hdCBsZWdpYmxlU2NhbGUgPSBkZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICBp
ZiAobGVnaWJsZVNjYWxlIDwgZGVmYXVsdFNjYWxlV2hlbkFscmVhZHlMZWdpYmxlKQorICAgICAg
ICAgICAgbGVnaWJsZVNjYWxlID0gKHNjYWxlID09IG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvcikg
PyBkZWZhdWx0U2NhbGVXaGVuQWxyZWFkeUxlZ2libGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3I7CiAKICAgICAgICAgY29uc3QgZmxvYXQgZGVmYXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21D
b250ZW50RGVmYXVsdE1hcmdpbiAqIGRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIGNvbnN0
IGZsb2F0IG1pbmltdW1NYXJnaW4gPSBkb3VibGVUYXBab29tQ29udGVudE1pbmltdW1NYXJnaW4g
KiBkZXZpY2VTY2FsZUZhY3RvcigpOwpAQCAtMTA3MSw1NSArMTA4OSw2MSBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhp
dFJlY3QsIEF1dG9abwogICAgICAgICByZWN0ID0gd2lkZW5SZWN0V2l0aGluUGFnZUJvdW5kcyhy
ZWN0LAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oZGVmYXVsdE1hcmdpbiAqIHJl
Y3Qud2lkdGggLyBtX3NpemUud2lkdGgpLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4obWluaW11bU1hcmdpbiAqIHJlY3Qud2lkdGggLyBtX3NpemUud2lkdGgpKTsKLQogICAgICAg
ICAvLyBGaXQgYmxvY2sgdG8gc2NyZWVuLCByZXNwZWN0aW5nIGxpbWl0cy4KICAgICAgICAgc2Nh
bGUgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6ZS53aWR0aCkgLyByZWN0LndpZHRoOwotICAg
ICAgICBzY2FsZSA9IG1pbihzY2FsZSwgbWF4U2NhbGUpOworICAgICAgICBzY2FsZSA9IG1pbihz
Y2FsZSwgbGVnaWJsZVNjYWxlKTsKICAgICAgICAgc2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3Rv
clRvTGltaXRzKHNjYWxlKTsKIAogICAgICAgICBzY2FsZVVuY2hhbmdlZCA9IGZhYnMocGFnZVNj
YWxlRmFjdG9yKCkgLSBzY2FsZSkgPCBtaW5TY2FsZURpZmZlcmVuY2U7CiAgICAgfQogCi0gICAg
aWYgKHpvb21UeXBlID09IERvdWJsZVRhcCkgewotICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkg
fHwgc2NhbGVVbmNoYW5nZWQpIHsKLSAgICAgICAgICAgIC8vIFpvb20gb3V0IHRvIG92ZXJ2aWV3
IG1vZGUuCi0gICAgICAgICAgICBpZiAob3ZlcnZpZXdTY2FsZSkKLSAgICAgICAgICAgICAgICBz
Y2FsZSA9IG92ZXJ2aWV3U2NhbGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKHJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEtlZXAgY3VycmVudCBz
Y2FsZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5IHdpbGwgbm9ybWFsbHkgYWxyZWFkeQotICAg
ICAgICAvLyBiZSB2aXNpYmxlKS4gRklYTUU6IFJldmlzaXQgdGhpcyBpZiBpdCBpc24ndCBhbHdh
eXMgdHJ1ZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBJZiB0aGlz
IGlzIGJlaW5nIGNhbGxlZCBmb3IgYXV0byB6b29tIGR1cmluZyBmaW5kIGluIHBhZ2UsCi0gICAg
Ly8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6b29tcyBpbiBpdCdkIGJlIG5pY2UgdG8gcHJl
c2VydmUgdGhlIHJlbGF0aXZlCi0gICAgLy8gaW5jcmVhc2UgaW4gem9vbSB0aGV5IGNhdXNlZCAo
aWYgdGhleSB6b29tIG91dCB0aGVuIGl0J3Mgb2sgdG8gem9vbQotICAgIC8vIHRoZW0gYmFjayBp
biBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJsZSB3aXRoIG91ciBjdXJyZW50IGRvdWJsZS10
YXAKLSAgICAvLyB6b29tIHN0cmF0ZWd5IChmaXR0aW5nIHRoZSBjb250YWluaW5nIGJsb2NrIHRv
IHRoZSBzY3JlZW4pIHRob3VnaC4KLQotICAgIGZsb2F0IHNjcmVlbkhlaWdodCA9IG1fc2l6ZS5o
ZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgIGZsb2F0IHNjcmVlbldpZHRo
ID0gbV9zaXplLndpZHRoIC8gc2NhbGUgKiBwYWdlU2NhbGVGYWN0b3IoKTsKLQotICAgIC8vIFNj
cm9sbCB0byB2ZXJ0aWNhbGx5IGFsaWduIHRoZSBibG9jay4KLSAgICBpZiAocmVjdC5oZWlnaHQg
PCBzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgLy8gVmVydGljYWxseSBjZW50ZXIgc2hvcnQgYmxv
Y2tzLgotICAgICAgICByZWN0LnkgLT0gMC41ICogKHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0
KTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRG91YmxlVGFwICYmIChyZWN0LmlzRW1wdHkoKSB8fCBz
Y2FsZVVuY2hhbmdlZCB8fCBtX2RvdWJsZVRhcFpvb21JbkVmZmVjdCkpIHsKKyAgICAgICAgLy8g
Wm9vbSBvdXQgdG8gbWluaW11bSBzY2FsZS4KKyAgICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdl
U2NhbGVGYWN0b3I7CisgICAgICAgIHNjcm9sbCA9IFdlYlBvaW50KGhpdFJlY3QueCwgaGl0UmVj
dC55KTsKKyAgICAgICAgaXNBbmNob3IgPSB0cnVlOworICAgICAgICBtX2RvdWJsZVRhcFpvb21J
bkVmZmVjdCA9IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEVuc3VyZSBwb3NpdGlv
biB3ZSdyZSB6b29taW5nIHRvICgrIHBhZGRpbmcpIGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCi0g
ICAgICAgIC8vIHRoZSBzY3JlZW4uCi0gICAgICAgIHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55
LCBoaXRSZWN0LnkgKyB0b3VjaFBvaW50UGFkZGluZyAtIHNjcmVlbkhlaWdodCk7Ci0gICAgfSAv
LyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9jay4KLQotICAgIC8vIERvIHRoZSBzYW1lIHRo
aW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4KLSAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVl
bldpZHRoKQotICAgICAgICByZWN0LnggLT0gMC41ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0
aCk7Ci0gICAgZWxzZQotICAgICAgICByZWN0LnggPSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVj
dC54ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3JlZW5XaWR0aCk7CisgICAgICAgIGlmICh6b29t
VHlwZSA9PSBEb3VibGVUYXAgJiYgc2NhbGUgIT0gbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKQor
ICAgICAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSB0cnVlOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2RvdWJsZVRhcFpvb21JbkVmZmVjdCA9IGZhbHNlOworICAgICAgICAv
LyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBjYWxsZWQgZm9yIGF1dG8gem9vbSBkdXJpbmcgZmlu
ZCBpbiBwYWdlLAorICAgICAgICAvLyB0aGVuIGlmIHRoZSB1c2VyIG1hbnVhbGx5IHpvb21zIGlu
IGl0J2QgYmUgbmljZSB0byBwcmVzZXJ2ZSB0aGUKKyAgICAgICAgLy8gcmVsYXRpdmUgaW5jcmVh
c2UgaW4gem9vbSB0aGV5IGNhdXNlZCAoaWYgdGhleSB6b29tIG91dCB0aGVuIGl0J3Mgb2sKKyAg
ICAgICAgLy8gdG8gem9vbSB0aGVtIGJhY2sgaW4gYWdhaW4pLiBUaGlzIGlzbid0IGNvbXBhdGli
bGUgd2l0aCBvdXIgY3VycmVudAorICAgICAgICAvLyBkb3VibGUtdGFwIHpvb20gc3RyYXRlZ3kg
KGZpdHRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdG8gdGhlIHNjcmVlbikKKyAgICAgICAgLy8g
dGhvdWdoLgorCisgICAgICAgIGZsb2F0IHNjcmVlbkhlaWdodCA9IG1fc2l6ZS5oZWlnaHQgLyBz
Y2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1f
c2l6ZS53aWR0aCAvIHNjYWxlICogcGFnZVNjYWxlRmFjdG9yKCk7CisKKyAgICAgICAgLy8gU2Ny
b2xsIHRvIHZlcnRpY2FsbHkgYWxpZ24gdGhlIGJsb2NrLgorICAgICAgICBpZiAocmVjdC5oZWln
aHQgPCBzY3JlZW5IZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNo
b3J0IGJsb2Nrcy4KKyAgICAgICAgICAgIHJlY3QueSAtPSAwLjUgKiAoc2NyZWVuSGVpZ2h0IC0g
cmVjdC5oZWlnaHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRW5zdXJlIHBv
c2l0aW9uIHdlJ3JlIHpvb21pbmcgdG8gKCsgcGFkZGluZykgaXNuJ3Qgb2ZmIHRoZSBib3R0b20g
b2YKKyAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4uCisgICAgICAgICAgICByZWN0LnkgPSBtYXg8
ZmxvYXQ+KHJlY3QueSwgaGl0UmVjdC55ICsgcGFkZGluZyAtIHNjcmVlbkhlaWdodCk7CisgICAg
ICAgIH0gLy8gT3RoZXJ3aXNlIHRvcCBhbGlnbiB0aGUgYmxvY2suCisKKyAgICAgICAgLy8gRG8g
dGhlIHNhbWUgdGhpbmcgZm9yIGhvcml6b250YWwgYWxpZ25tZW50LgorICAgICAgICBpZiAocmVj
dC53aWR0aCA8IHNjcmVlbldpZHRoKQorICAgICAgICAgICAgcmVjdC54IC09IDAuNSAqIChzY3Jl
ZW5XaWR0aCAtIHJlY3Qud2lkdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZWN0Lngg
PSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54ICsgcGFkZGluZyAtIHNjcmVlbldpZHRoKTsK
KyAgICAgICAgc2Nyb2xsLnggPSByZWN0Lng7CisgICAgICAgIHNjcm9sbC55ID0gcmVjdC55Owor
ICAgICAgICBpc0FuY2hvciA9IGZhbHNlOworICAgIH0KIAotICAgIHNjcm9sbC54ID0gcmVjdC54
OwotICAgIHNjcm9sbC55ID0gcmVjdC55OworICAgIHNjYWxlID0gY2xhbXBQYWdlU2NhbGVGYWN0
b3JUb0xpbWl0cyhzY2FsZSk7CisgICAgc2Nyb2xsID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhzY3JvbGwpOworICAgIGZsb2F0IHNjYWxlRGVsdGEgPSBz
Y2FsZSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHNjcm9sbCA9IFdlYlBvaW50KHNjcm9sbC54
ICogc2NhbGVEZWx0YSwgc2Nyb2xsLnkgKiBzY2FsZURlbHRhKTsKKyAgICBpZiAoIWlzQW5jaG9y
KQorICAgICAgICBzY3JvbGwgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7CiB9
CiAKIHN0YXRpYyBib29sIGhpZ2hsaWdodENvbmRpdGlvbnMoTm9kZSogbm9kZSkKQEAgLTExODUs
MTEgKzEyMDksMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZVpvb21Bcm91bmRQb2ludChj
b25zdCBJbnRQb2ludCYgcG9pbnQsIEF1dG9ab29tVHlwZSB6b28KIAogICAgIGZsb2F0IHNjYWxl
OwogICAgIFdlYlBvaW50IHNjcm9sbDsKLSAgICBjb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRS
ZWN0KFdlYlJlY3QocG9pbnQueCgpLCBwb2ludC55KCksIDAsIDApLCB6b29tVHlwZSwgc2NhbGUs
IHNjcm9sbCk7CisgICAgYm9vbCBpc0FuY2hvcjsKKyAgICBXZWJQb2ludCB3ZWJQb2ludCA9IHBv
aW50OworICAgIGNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCh3ZWJQb2lu
dC54LCB3ZWJQb2ludC55LCAwLCAwKSwgem9vbVR5cGUsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9y
KTsKIAogICAgIGJvb2wgaXNEb3VibGVUYXAgPSAoem9vbVR5cGUgPT0gRG91YmxlVGFwKTsKLSAg
ICBkb3VibGUgZHVyYXRpb25JblNlY29uZHMgPSBpc0RvdWJsZVRhcCA/IGRvdWJsZVRhcFpvb21B
bmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA6IDA7Ci0gICAgc3RhcnRQYWdlU2NhbGVBbmltYXRp
b24oc2Nyb2xsLCBpc0RvdWJsZVRhcCwgc2NhbGUsIGR1cmF0aW9uSW5TZWNvbmRzKTsKKyAgICBk
b3VibGUgZHVyYXRpb25JblNlY29uZHMgPSAoaXNEb3VibGVUYXAgJiYgIW1fc2hvdWxkVXNlRG91
YmxlVGFwVGltZVplcm8pID8gZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRz
IDogMDsKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGwsIGlzQW5jaG9yLCBzY2Fs
ZSwgZHVyYXRpb25JblNlY29uZHMpOwogI2VuZGlmCiB9CiAKQEAgLTM0MzAsOCArMzQ1NiwxMCBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wqIGlzTmV3TmF2aWdhdGlvbiwg
Ym9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIG1fbmV3TmF2aWdhdGlvbkxvYWRlciA9IDA7
CiAjZW5kaWYKICAgICBtX29ic2VydmVkTmV3TmF2aWdhdGlvbiA9IGZhbHNlOwotICAgIGlmICgq
aXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25XaXRoaW5QYWdlKQorICAgIGlmICgqaXNO
ZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25XaXRoaW5QYWdlKSB7CiAgICAgICAgIG1fcGFn
ZVNjYWxlRmFjdG9ySXNTZXQgPSBmYWxzZTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZl
Y3QgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBNYWtlIHN1cmUgbGluayBoaWdobGlnaHQgZnJv
bSBwcmV2aW91cyBwYWdlIGlzIGNsZWFyZWQuCiAgICAgbV9saW5rSGlnaGxpZ2h0LmNsZWFyKCk7
CkBAIC0zODk4LDYgKzM5MjYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbAogICAgICAgICBX
ZWJQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0LndpZHRoICogcGFnZVNjYWxl
RGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQu
aGVpZ2h0ICogcGFnZVNjYWxlRGVsdGEpOwogICAgICAgICBzZXRQYWdlU2NhbGVGYWN0b3IocGFn
ZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVEZWx0YSwgc2NhbGVkU2Nyb2xsT2Zmc2V0KTsKKyAg
ICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRjMWE5NzRhMDVkZjQyNjYw
ZjlkNzM5OTM3NDgyNDJmMGE2NGIzZDYuLmVlNGMzMTVhN2I0ZmYzMDU4ZjUzYjA3MWFjZmEzODRm
ZGE0OTk4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NTYxLDEyICs1NjEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZnVsbEZyYW1lUGx1Z2luWm9vbUxl
dmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKTsKIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKLSAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVj
dCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwp
OworICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0
JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwg
Ym9vbCYgaXNBbmNob3IpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGJlc3RUb3VjaExpbmtOb2RlKFdl
YkNvcmU6OkludFBvaW50IHRvdWNoRXZlbnRMb2NhdGlvbik7CiAgICAgdm9pZCBlbmFibGVUb3Vj
aEhpZ2hsaWdodChXZWJDb3JlOjpJbnRQb2ludCB0b3VjaEV2ZW50TG9jYXRpb24pOwogI2VuZGlm
CiAgICAgdm9pZCBhbmltYXRlWm9vbUFyb3VuZFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgQXV0b1pvb21UeXBlKTsKIAorICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMu
CisgICAgdm9pZCBzaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5nKGJv
b2wpOworCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAog
ICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CkBA
IC03NDAsNiArNzQzLDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9zYXZlZFBhZ2VTY2FsZUZh
Y3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ugc2NhbGUgZmFjdG9yIGlzIHNhdmVkLgogICAg
IFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9sbE9mZnNldDsKIAorICAgIC8vIFdoZXRoZXIg
dGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVkIGJ5IHpvb21pbmcgaW4gd2l0aCBkb3VibGUg
dGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29tSW5FZmZlY3Q7CisKKyAgICAvLyBVc2VkIGZv
ciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIGJvb2wgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVy
bzsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFsbG93ZWQ7CiAKICAgICBib29sIG1fZG9pbmdE
cmFnQW5kRHJvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
RnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcAppbmRleCBhMDA0OWI2N2U4ZDQxYjYyYmE1Mjg1YjlhMTAwZDY5YzYwNmY0MDMxLi43ZmMx
MjgzNGU0NDUzYmMxNTAzY2M1MWMxZTI2OGQ1NmRlMGE4ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0zMTYsNzYgKzMxNiwxODEgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2FuT3ZlcnJpZGVNYXhpbXVtU2NhbGVGYWN0b3IpCiB9CiAK
ICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3
Q2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IFdlYlJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fd2luZG93UmVjdDsgfQor
CisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3Q7Cit9OworCit2b2lkIHNldFNjYWxlQW5kU2Nyb2xs
QW5kTGF5b3V0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgV2ViUG9pbnQgc2Nyb2xsLCBmbG9h
dCBzY2FsZSkKK3sKKyAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBX
ZWJQb2ludChzY3JvbGwueCwgc2Nyb2xsLnkpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7Cit9CisKIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IERpdkF1dG9ab29tUGFyYW1zVGVzdCkKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwiKTsKIAotICAgIFdl
YlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9m
b3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUpKTsKLSAgICBpbnQgcGFnZVdp
ZHRoID0gNjQwOwotICAgIGludCBwYWdlSGVpZ2h0ID0gNDgwOwotICAgIGludCBkaXZQb3NYID0g
MjAwOwotICAgIGludCBkaXZQb3NZID0gMjAwOwotICAgIGludCBkaXZXaWR0aCA9IDIwMDsKLSAg
ICBpbnQgZGl2SGVpZ2h0ID0gMTUwOwotICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnQoMjUwLCAy
NTAsIDAsIDApOwotICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZShwYWdlV2lkdGgsIHBh
Z2VIZWlnaHQpKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAg
ICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7
CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwg
dmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQo
bV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIs
IHRydWUsIDAsICZjbGllbnQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRN
b2RlKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigyLjBmKTsK
KworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9y
dEhlaWdodCkpOworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMC4w
MSwgNCk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxh
eW91dCgpOworCisgICAgV2ViUmVjdCB3aWRlRGl2KDIwMCwgMTAwLCA0MDAsIDE1MCk7CisgICAg
V2ViUmVjdCB0YWxsRGl2KDIwMCwgMzAwLCA0MDAsIDgwMCk7CisgICAgV2ViUmVjdCBkb3VibGVU
YXBQb2ludFdpZGUoKHdpZGVEaXYueCArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0
b3IoKSwKKyAgICAgICAgKHdpZGVEaXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVG
YWN0b3IoKSwgMCwgMCk7CisgICAgV2ViUmVjdCBkb3VibGVUYXBQb2ludFRhbGwoKHRhbGxEaXYu
eCArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwKKyAgICAgICAgKHRhbGxE
aXYueSArIDUwKSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSwgMCwgMCk7CiAgICAg
ZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Nyb2xsOworICAgIGJvb2wgaXNBbmNob3I7CisK
KyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdpZGUgZGl2LgorICAgIHdlYlZp
ZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50V2lk
ZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRoZSBzY3JlZW4gKG1vZHVsbyBt
YXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJlZCAobW9kdWxvIGludGVnZXIg
cm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHdpZGVE
aXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHdpZGVEaXYueCAqIHNjYWxl
LCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdpZGVEaXYueSArIHdpZGVEaXYu
aGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAvIDIpOworICAgIEVYUEVDVF9O
RUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIGlzQW5jaG9y
KTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBzY3JvbGws
IHNjYWxlKTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0byBtaW5pbXVtIHNjYWxlLgor
ICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRh
cFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNo
b3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZh
Y3RvcigpLCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlzQW5jaG9yKTsKKworICAgIHNl
dFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgc2Nh
bGUpOworCisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcgaW50byB0YWxsIGRpdi4KKyAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQ
b2ludFRhbGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9y
KTsKKyAgICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUgdG9wIGxlZnQgb2YgdGhlIHZp
ZXdwb3J0LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHRhbGxEaXYu
d2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueCAqIHNjYWxlLCBz
Y3JvbGwueCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueSAqIHNjYWxlLCBzY3JvbGwu
eSwgMjApOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3IpOwogCi0gICAgLy8gVGVzdCBm
b3IgRG91YmxldGFwIHNjYWxpbmcKKyAgICAvLyBUZXN0IGZvciBOb24tZG91YmxldGFwIHNjYWxp
bmcKKyAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1
dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwgV2Vi
Vmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICBFWFBF
Q1RfTkVBUih2aWV3cG9ydFdpZHRoIC8gKGZsb2F0KSB3aWRlRGl2LndpZHRoLCBzY2FsZSwgMC4x
KTsKK30KIAotICAgIC8vIFRlc3RzIGZvciB6b29taW5nIGluIGFuZCBvdXQgd2l0aG91dCBjbGFt
cGluZy4KLSAgICAvLyBTZXQgZGV2aWNlIHNjYWxlIGFuZCBzY2FsZSBsaW1pdHMgc28gd2UgZG9u
dCBnZXQgY2xhbXBlZC4KLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7
Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLCA0IC8gd2ViVmll
d0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwordm9pZCBzaW11bGF0ZURvdWJsZVRhcChXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsIFdlYlBvaW50JiBwb2ludCwgZmxvYXQmIHNjYWxlKQorewor
ICAgIFdlYlBvaW50IHNjYWxlZFBvaW50KHN0YXRpY19jYXN0PGludD4ocG9pbnQueCAqIHdlYlZp
ZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSksCisgICAgICAgIHN0YXRpY19jYXN0PGludD4ocG9p
bnQueSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSkpOworICAgIHdlYlZpZXdJbXBs
LT5hbmltYXRlWm9vbUFyb3VuZFBvaW50KHNjYWxlZFBvaW50LCBXZWJWaWV3SW1wbDo6RG91Ymxl
VGFwKTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5
b3V0KCk7CisgICAgc2NhbGUgPSB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CiAK
LSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVT
Y2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3Vi
bGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIGZsb2F0IHNjYWxlZERpdldpZHRoID0gZGl2V2lk
dGggKiBzY2FsZTsKLSAgICBmbG9hdCBzY2FsZWREaXZIZWlnaHQgPSBkaXZIZWlnaHQgKiBzY2Fs
ZTsKLSAgICBpbnQgaFNjcm9sbCA9ICgoZGl2UG9zWCAqIHNjYWxlKSAtICgocGFnZVdpZHRoIC0g
c2NhbGVkRGl2V2lkdGgpIC8gMikpIC8gc2NhbGU7Ci0gICAgaW50IHZTY3JvbGwgPSAoKGRpdlBv
c1kgKiBzY2FsZSkgLSAoKHBhZ2VIZWlnaHQgLSBzY2FsZWREaXZIZWlnaHQpIC8gMikpIC8gc2Nh
bGU7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lkdGgsIHNjYWxlLCAwLjEpOwot
ICAgIEVYUEVDVF9FUShoU2Nyb2xsLCBzY3JvbGwueCk7Ci0gICAgRVhQRUNUX0VRKHZTY3JvbGws
IHNjcm9sbC55KTsKLQotICAgIC8vIFRlc3Qgem9vbSBvdXQgdG8gb3ZlcnZpZXcgc2NhbGUuCi0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQs
IFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSgxLCBzY2FsZSk7Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50KDAsIDApLCBzY3JvbGwpOwot
Ci0gICAgLy8gVGVzdHMgZm9yIGNsYW1wZWQgc2NhbGluZy4KLSAgICAvLyBUZXN0IGNsYW1wIHRv
IGRldmljZSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJT
aXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZh
Y3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMi41KTsKLSAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQ
b2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDIuNSwgc2NhbGUpOwotCi0gICAgLy8gVGVzdCBjbGFtcCB0byBtaW5pbXVtIHNj
YWxlOgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xs
LngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMS41IC8gd2ViVmlld0lt
cGwtPmRldmljZVNjYWxlRmFjdG9yKCksIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3Qo
ZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgxLjUsIHNjYWxlKTsKLSAgICBFWFBFQ1RfRVEoV2ViUG9pbnQo
MCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRvIG1heGltdW0gc2NhbGU6Ci0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgMyAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChk
b3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDMsIHNjYWxlKTsKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1
dG9ab29tTXVsdGlwbGVEaXZzVGVzdCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOwogCi0gICAgLy8g
VGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2FsaW5nCi0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VT
Y2FsZUZhY3RvcigxLCBXZWJQb2ludCgwLCAwKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldERldmlj
ZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1p
dHMoMCwgNCAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAvLyBUZXN0
IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9s
bEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwgV2ViVmlld0ltcGw6OkZpbmRJ
blBhZ2UsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9ORUFSKHBhZ2VXaWR0aCAvIGRpdldp
ZHRoLCBzY2FsZSwgMC4xKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVu
dDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQg
PSA0ODA7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8gPSAxLjI7
CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwg
dmlld3BvcnRIZWlnaHQpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQo
bV9iYXNlVVJMICsgImdldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwg
dHJ1ZSwgMCwgJmNsaWVudCkpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1v
ZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgs
IHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3Rvckxp
bWl0cygxLCA0KTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KS0+bGF5b3V0KCk7CisgICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYp
OworICAgIHdlYlZpZXdJbXBsLT5zaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JU
ZXN0aW5nKHRydWUpOworCisgICAgV2ViUmVjdCB0b3BEaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsK
KyAgICBXZWJSZWN0IGJvdHRvbURpdigyMDAsIDMwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50
IHRvcFBvaW50KHRvcERpdi54ICsgNTAsIHRvcERpdi55ICsgNTApOworICAgIFdlYlBvaW50IGJv
dHRvbVBvaW50KGJvdHRvbURpdi54ICsgNTAsIGJvdHRvbURpdi55ICsgNTApOworICAgIGZsb2F0
IHNjYWxlOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQ
b2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEg
KyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKworICAgIC8vIFRlc3Qg
ZG91YmxlIHRhcCBvbiB0d28gZGlmZmVyZW50IGRpdnMKKyAgICAvLyBBZnRlciBmaXJzdCB6b29t
LCB3ZSBzaG91bGQgZ28gYmFjayB0byBtaW5pbXVtIHBhZ2Ugc2NhbGUgd2l0aCBhIHNlY29uZCBk
b3VibGUgdGFwLgorICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCB0b3BQb2ludCwg
c2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBib3R0b21Q
b2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAvLyBJZiB0aGUgdXNlciBwaW5jaCB6b29t
cyBhZnRlciBkb3VibGUgdGFwLCBhIHNlY29uZCBkb3VibGUgdGFwIHNob3VsZCB6b29tIGJhY2sg
dG8gdGhlIGRpdi4KKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgdG9wUG9pbnQs
IHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFj
dG9yKCksIHNjYWxlKTsKKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJT
aXplKCksIDAuNik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGJvdHRvbVBv
aW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBzY2FsZSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29t
U2NhbGVCb3VuZHNUZXN0KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImdldF9z
Y2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwiKTsKKworICAgIERpdkF1
dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGludCB2aWV3cG9ydFdpZHRoID0g
NjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBmbG9hdCBkb3VibGVUYXBa
b29tQWxyZWFkeUxlZ2libGVSYXRpbyA9IDEuMjsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0g
V2ViUmVjdCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgV2ViVmll
d0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0X3NjYWxlX2JvdW5k
c19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpKTsKKyAg
ICB3ZWJWaWV3SW1wbC0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXdJ
bXBsLT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAg
IHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgNCk7CisgICAgd2ViVmll
d0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPmxheW91dCgpOworICAgIHdlYlZp
ZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigxLjVmKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2hv
dWxkVXNlQW5pbWF0ZURvdWJsZVRhcFRpbWVaZXJvRm9yVGVzdGluZyh0cnVlKTsKKyAgICBmbG9h
dCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSA9IHdlYlZpZXdJbXBsLT5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCkgKiBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbzsKKwor
ICAgIFdlYlJlY3QgZGl2KDIwMCwgMTAwLCAyMDAsIDE1MCk7CisgICAgV2ViUG9pbnQgZG91Ymxl
VGFwUG9pbnQoZGl2LnggKyA1MCwgZGl2LnkgKyA1MCk7CisgICAgZmxvYXQgc2NhbGU7CiAKLSAg
ICAvLyBEcm9wIGFueSBwZW5kaW5nIGZha2UgbW91c2UgZXZlbnRzIGZyb20gem9vbWluZyBiZWZv
cmUgbGVhdmluZyB0aGUgdGVzdC4KLSAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmNsZWFyKCk7CisgICAgLy8gVGVzdCBkb3VibGUgdGFwIHNjYWxl
IGJvdW5kcy4KKyAgICAvLyBtaW5pbXVtUGFnZVNjYWxlIDwgZG91YmxlVGFwWm9vbUFscmVhZHlM
ZWdpYmxlU2NhbGUgPCBkZXZpY2VEcGlTY2FsZQorICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5
b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFn
ZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykg
LyAyKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQs
IHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFj
dG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91Ymxl
VGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmlt
dW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZp
ZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJW
aWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gWm9vbSBpbiB0
byByZXNldCBkb3VibGVfdGFwX3pvb21faW5fZWZmZWN0IGZsYWcuCisgICAgd2ViVmlld0ltcGwt
PmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjEpOworICAgIC8vIGRldmljZURwaVNj
YWxlIDwgbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxl
CisgICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDAuNWYpOworICAgIHNldFNj
YWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgKHdlYlZp
ZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBab29tQWxy
ZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1w
bCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0lt
cGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91Ymxl
VGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9B
VF9FUShkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSwgc2NhbGUpOworICAgIHNpbXVs
YXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVY
UEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2Fs
ZSk7CisKKyAgICAvLyBab29tIGluIHRvIHJlc2V0IGRvdWJsZV90YXBfem9vbV9pbl9lZmZlY3Qg
ZmxhZy4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCksIDEu
MSk7CisgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJs
ZVNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IoMS4xZik7CisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGws
IFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSkg
KiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVJhdGlvKSAvIDIpOworICAgIHNpbXVs
YXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVY
UEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2Fs
ZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBz
Y2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNj
YWxlLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRh
cFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVt
UGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9f
em9vbV90ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211
bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTY0NDJm
YmFmYmIzNGY1M2RhZmM2NWVmODA0ZDY0ZmNkNGI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196
b29tX3Rlc3QuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKyAgPGJvZHk+CisgICAgPGRp
diBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVm
dDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweCI+CisgICAg
ICA8cCBpZD0iRGl2Ij5Ub3AgRGl2PC9wPgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0
b3A6IDMwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IkRp
diI+Qm90dG9tIERpdjwvcD4KKyAgICA8L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNf
Y2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvZ2V0X3NjYWxlX2JvdW5kc19jaGVja19mb3JfYXV0b196b29tX3Rlc3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Y2M4ZTljMTY1MDM0OGJjNmI4NTYzZDcyN2JhMjgwYTU2YjQ1Y2U4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2Fs
ZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8
aHRtbD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiAyMDBw
eDsgaGVpZ2h0OiA0MDBweCI+CisgICAgICA8cCBpZD0iRGl2Ij5EaXY8L3A+CisgICAgPC9kaXY+
CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21f
aW50b19kaXZfdGVzdC5odG1sCmluZGV4IDE4MTdkYzQ3ZDU0YjUzYmEyYzQ2YTViMGE5YmE3NDk5
ZmNhMjcwZWMuLjk1ZTdiMzc4N2Q1YzYxMDE2YmQ3Y2EyNTBkOGE4M2ZkNmU3NTgyYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1
dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbApAQCAt
MSwxMyArMSwxMCBAQAogPGh0bWw+CiAgIDxib2R5PgotICAgIDxkaXYgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiAwcHg7
IHdpZHRoOiA2NDBweDsgaGVpZ2h0OiA0ODBweCI+Ci0gICAgICA8cD5Ub3AgRGl2PC9wPgotICAg
ICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IHBvc2l0aW9uOiBhYnNvbHV0
ZTsgbGVmdDogMjAwcHg7IHRvcDogMjAwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxNTBweCI+
Ci0gICAgICAgIDxwIGlkPSJpbm5lckRpdiI+RGl2IHRvIHpvb20gdG88L3A+Ci0gICAgICAgIDxk
aXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAy
MjBweDsgdG9wOiAzNTBweDsgd2lkdGg6IDE2MHB4OyBoZWlnaHQ6IDQwcHgiPgotICAgICAgICAg
IDxwIGlkPSJpbm5lcklubmVyRGl2Ij5EaXYgTk9UIHRvIHpvb20gdG88L3A+Ci0gICAgICAgIDwv
ZGl2PgotICAgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiA0
MDBweDsgaGVpZ2h0OiAxNTBweCI+CisgICAgICA8cCBpZD0id2lkZURpdiI+V2lkZSBkaXY8L3A+
CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMzAwcHg7IHdpZHRoOiA0MDBweDsg
aGVpZ2h0OiA4MDAiPgorICAgICAgPHAgaWQ9InRhbGxEaXYiPlRhbGwgZGl2PC9wPgogICAgIDwv
ZGl2PgogICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166100</attachid>
            <date>2012-09-27 17:20:19 -0700</date>
            <delta_ts>2012-09-28 10:23:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120927171937.patch</filename>
            <type>text/plain</type>
            <size>29534</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDljMTAzZGQ1YTZkMzQ1OTcwOTZjNjgyYWI5ZGIyNWMyMGRhOWMxYzAuLjhiNGNiMjYxMThkNTMy
YTA0MjZjYjJmYjU3ZTliYWIwNjI3NWQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhZ2Ugb3ZlcmxheXMgYXJlIG5vdCB1cGRh
dGVkIHdoZW4gV2ViVmlldyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYmVlMzQ3M2Y2YzE1YWM4NzA0ZDRkZmE3NDI5NDYxYzNhOWY1
NmM0Zi4uOTJkMzVmZWRkYmFiY2I0YmRhNzUzZTUzNDJjOWM4ZjUzNjNkYzFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChzdWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAg
Z2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLikuIFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFs
bHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsK
K3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZyA9IDExOwogc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVyZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0
IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29u
c3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4y
NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9
IDEuMjsKIAogLy8gQ29uc3RhbnRzIGZvciB6b29taW5nIGluIG9uIGEgZm9jdXNlZCB0ZXh0IGZp
ZWxkLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9u
SW5TZWNvbmRzID0gMC4yOwpAQCAtMzkxLDYgKzM5Myw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0VGFnTWF4
aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxzZSkKICAg
ICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKKyAgICAsIG1fZG91YmxlVGFwWm9vbUluRWZm
ZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9w
KGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTc0Miw2ICs3NDYs
MTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVs
ZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBhbmltYXRlWm9vbUFyb3VuZFBvaW50KFdlYlBv
aW50KGV2ZW50LngsIGV2ZW50LnkpLCBEb3VibGVUYXApOworICAgICAgICBldmVudFN3YWxsb3dl
ZCA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46
CiAgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOwpAQCAt
NzgxLDE3ICs3ODksMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVu
ZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAogCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzKQogewotICAgIGlm
ICghbV9sYXllclRyZWVWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRQb2ludCBjbGFt
cGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsKKyAgICBXZWJQb2ludCBjbGFtcGVkUG9pbnQgPSB0
YXJnZXRQb3NpdGlvbjsKICAgICBpZiAoIXVzZUFuY2hvcikKICAgICAgICAgY2xhbXBlZFBvaW50
ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHRhcmdldFBvc2l0aW9uLCBuZXdTY2FsZSk7Ci0KLSAgICBp
ZiAoIWR1cmF0aW9uSW5TZWNvbmRzICYmICF1c2VBbmNob3IpIHsKKyAgICBpZiAoKCFkdXJhdGlv
bkluU2Vjb25kcyAmJiAhdXNlQW5jaG9yKSB8fCBtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJv
KSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihuZXdTY2FsZSwgY2xhbXBlZFBvaW50KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9sYXllclRyZWVWaWV3LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMp
OwogfQpAQCAtMTA0MSwyNCArMTA0NywzNyBAQCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJl
Y3RXaXRoaW5QYWdlQm91bmRzKGNvbnN0IFdlYlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAg
IHJldHVybiBXZWJSZWN0KG5ld1gsIHNvdXJjZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7
CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3Qo
Y29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2Nh
bGUsIFdlYlBvaW50JiBzY3JvbGwpCit2b2lkIFdlYlZpZXdJbXBsOjpzaG91bGRVc2VBbmltYXRl
RG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5nKGJvb2wgc2V0VG9aZXJvKQoreworICAgIG1fc2hv
dWxkVXNlRG91YmxlVGFwVGltZVplcm8gPSBzZXRUb1plcm87Cit9CisKK3ZvaWQgV2ViVmlld0lt
cGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVj
dCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGws
IGJvb2wmIGlzQW5jaG9yKQogewogICAgIHNjYWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7CiAgICAg
c2Nyb2xsLnggPSBzY3JvbGwueSA9IDA7CiAgICAgV2ViUmVjdCB0YXJnZXRSZWN0ID0gaGl0UmVj
dDsKKyAgICAvLyBQYWRkaW5nIG9ubHkgZGVwZW5kcyBvbiBwYWdlIHNjYWxlIHdoZW4gdHJpZ2dl
cmVkIGJ5IG1hbnVhbGx5IHRhcHBpbmcKKyAgICBpbnQgcGFkZGluZyA9ICh6b29tVHlwZSA9PSBE
b3VibGVUYXApID8gdG91Y2hQb2ludFBhZGRpbmcgOiBub25Vc2VySW5pdGlhdGVkUG9pbnRQYWRk
aW5nOwogICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgdGFyZ2V0UmVjdC53
aWR0aCA9IHRhcmdldFJlY3QuaGVpZ2h0ID0gdG91Y2hQb2ludFBhZGRpbmc7Ci0KKyAgICAgICAg
dGFyZ2V0UmVjdC53aWR0aCA9IHRhcmdldFJlY3QuaGVpZ2h0ID0gcGFkZGluZzsKICAgICBXZWJS
ZWN0IHJlY3QgPSBjb21wdXRlQmxvY2tCb3VuZHModGFyZ2V0UmVjdCwgem9vbVR5cGUpOworICAg
IGlmICh6b29tVHlwZSA9PSBGaW5kSW5QYWdlICYmIHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEtlZXAgY3VycmVudCBzY2FsZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5IHdpbGwgbm9y
bWFsbHkgYWxyZWFkeQorICAgICAgICAvLyBiZSB2aXNpYmxlKS4gRklYTUU6IFJldmlzaXQgdGhp
cyBpZiBpdCBpc24ndCBhbHdheXMgdHJ1ZS4KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IGNvbnN0IGZsb2F0IG92ZXJ2aWV3U2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAg
ICAgYm9vbCBzY2FsZVVuY2hhbmdlZCA9IHRydWU7CiAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBQYWdlcyBzaG91bGQgYmUgYXMgbGVnaWJsZSBhcyBvbiBkZXNrdG9wIHdo
ZW4gYXQgZHBpIHNjYWxlLCBzbyBubwogICAgICAgICAvLyBuZWVkIHRvIHpvb20gaW4gZnVydGhl
ciB3aGVuIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5pbmcgem9vbSBsZXZlbAogICAgICAgICAvLyAo
YWZ0ZXIgZG91YmxlIHRhcCwgZmluZCBpbiBwYWdlLCBldGMpLCB0aG91Z2ggdGhlIHVzZXIgc2hv
dWxkIHN0aWxsCiAgICAgICAgIC8vIGJlIGFsbG93ZWQgdG8gbWFudWFsbHkgcGluY2ggem9vbSBp
biBmdXJ0aGVyIGlmIHRoZXkgZGVzaXJlLgotICAgICAgICBjb25zdCBmbG9hdCBtYXhTY2FsZSA9
IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZsb2F0IGRlZmF1bHRTY2FsZVdo
ZW5BbHJlYWR5TGVnaWJsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciAqIGRvdWJsZVRhcFpv
b21BbHJlYWR5TGVnaWJsZVJhdGlvOworICAgICAgICBmbG9hdCBsZWdpYmxlU2NhbGUgPSBkZXZp
Y2VTY2FsZUZhY3RvcigpOworICAgICAgICBpZiAobGVnaWJsZVNjYWxlIDwgZGVmYXVsdFNjYWxl
V2hlbkFscmVhZHlMZWdpYmxlKQorICAgICAgICAgICAgbGVnaWJsZVNjYWxlID0gKHNjYWxlID09
IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcikgPyBkZWZhdWx0U2NhbGVXaGVuQWxyZWFkeUxlZ2li
bGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAKICAgICAgICAgY29uc3QgZmxvYXQgZGVm
YXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiAqIGRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgICAgIGNvbnN0IGZsb2F0IG1pbmltdW1NYXJnaW4gPSBkb3VibGVU
YXBab29tQ29udGVudE1pbmltdW1NYXJnaW4gKiBkZXZpY2VTY2FsZUZhY3RvcigpOwpAQCAtMTA3
MSw1NSArMTA5MCw2MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9abwogICAgICAgICByZWN0ID0g
d2lkZW5SZWN0V2l0aGluUGFnZUJvdW5kcyhyZWN0LAogICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oZGVmYXVsdE1hcmdpbiAqIHJlY3Qud2lkdGggLyBtX3NpemUud2lkdGgpLAogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obWluaW11bU1hcmdpbiAqIHJlY3Qud2lkdGgg
LyBtX3NpemUud2lkdGgpKTsKLQogICAgICAgICAvLyBGaXQgYmxvY2sgdG8gc2NyZWVuLCByZXNw
ZWN0aW5nIGxpbWl0cy4KICAgICAgICAgc2NhbGUgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6
ZS53aWR0aCkgLyByZWN0LndpZHRoOwotICAgICAgICBzY2FsZSA9IG1pbihzY2FsZSwgbWF4U2Nh
bGUpOworICAgICAgICBzY2FsZSA9IG1pbihzY2FsZSwgbGVnaWJsZVNjYWxlKTsKICAgICAgICAg
c2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlKTsKIAogICAgICAgICBz
Y2FsZVVuY2hhbmdlZCA9IGZhYnMocGFnZVNjYWxlRmFjdG9yKCkgLSBzY2FsZSkgPCBtaW5TY2Fs
ZURpZmZlcmVuY2U7CiAgICAgfQogCi0gICAgaWYgKHpvb21UeXBlID09IERvdWJsZVRhcCkgewot
ICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgc2NhbGVVbmNoYW5nZWQpIHsKLSAgICAgICAg
ICAgIC8vIFpvb20gb3V0IHRvIG92ZXJ2aWV3IG1vZGUuCi0gICAgICAgICAgICBpZiAob3ZlcnZp
ZXdTY2FsZSkKLSAgICAgICAgICAgICAgICBzY2FsZSA9IG92ZXJ2aWV3U2NhbGU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlY3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIC8vIEtlZXAgY3VycmVudCBzY2FsZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5
IHdpbGwgbm9ybWFsbHkgYWxyZWFkeQotICAgICAgICAvLyBiZSB2aXNpYmxlKS4gRklYTUU6IFJl
dmlzaXQgdGhpcyBpZiBpdCBpc24ndCBhbHdheXMgdHJ1ZS4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgYXV0byB6b29t
IGR1cmluZyBmaW5kIGluIHBhZ2UsCi0gICAgLy8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6
b29tcyBpbiBpdCdkIGJlIG5pY2UgdG8gcHJlc2VydmUgdGhlIHJlbGF0aXZlCi0gICAgLy8gaW5j
cmVhc2UgaW4gem9vbSB0aGV5IGNhdXNlZCAoaWYgdGhleSB6b29tIG91dCB0aGVuIGl0J3Mgb2sg
dG8gem9vbQotICAgIC8vIHRoZW0gYmFjayBpbiBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJs
ZSB3aXRoIG91ciBjdXJyZW50IGRvdWJsZS10YXAKLSAgICAvLyB6b29tIHN0cmF0ZWd5IChmaXR0
aW5nIHRoZSBjb250YWluaW5nIGJsb2NrIHRvIHRoZSBzY3JlZW4pIHRob3VnaC4KLQotICAgIGZs
b2F0IHNjcmVlbkhlaWdodCA9IG1fc2l6ZS5oZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3Rv
cigpOwotICAgIGZsb2F0IHNjcmVlbldpZHRoID0gbV9zaXplLndpZHRoIC8gc2NhbGUgKiBwYWdl
U2NhbGVGYWN0b3IoKTsKLQotICAgIC8vIFNjcm9sbCB0byB2ZXJ0aWNhbGx5IGFsaWduIHRoZSBi
bG9jay4KLSAgICBpZiAocmVjdC5oZWlnaHQgPCBzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgLy8g
VmVydGljYWxseSBjZW50ZXIgc2hvcnQgYmxvY2tzLgotICAgICAgICByZWN0LnkgLT0gMC41ICog
KHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0KTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRG91Ymxl
VGFwICYmIChyZWN0LmlzRW1wdHkoKSB8fCBzY2FsZVVuY2hhbmdlZCB8fCBtX2RvdWJsZVRhcFpv
b21JbkVmZmVjdCkpIHsKKyAgICAgICAgLy8gWm9vbSBvdXQgdG8gbWluaW11bSBzY2FsZS4KKyAg
ICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisgICAgICAgIHNjcm9sbCA9
IFdlYlBvaW50KGhpdFJlY3QueCwgaGl0UmVjdC55KTsKKyAgICAgICAgaXNBbmNob3IgPSB0cnVl
OworICAgICAgICBtX2RvdWJsZVRhcFpvb21JbkVmZmVjdCA9IGZhbHNlOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3ZSdyZSB6b29taW5nIHRvICgrIHBhZGRpbmcp
IGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCi0gICAgICAgIC8vIHRoZSBzY3JlZW4uCi0gICAgICAg
IHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55LCBoaXRSZWN0LnkgKyB0b3VjaFBvaW50UGFkZGlu
ZyAtIHNjcmVlbkhlaWdodCk7Ci0gICAgfSAvLyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9j
ay4KLQotICAgIC8vIERvIHRoZSBzYW1lIHRoaW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4K
LSAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVlbldpZHRoKQotICAgICAgICByZWN0LnggLT0gMC41
ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0aCk7Ci0gICAgZWxzZQotICAgICAgICByZWN0Lngg
PSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3Jl
ZW5XaWR0aCk7CisgICAgICAgIGlmICh6b29tVHlwZSA9PSBEb3VibGVUYXAgJiYgc2NhbGUgIT0g
bV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKQorICAgICAgICAgICAgbV9kb3VibGVUYXBab29tSW5F
ZmZlY3QgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RvdWJsZVRhcFpvb21J
bkVmZmVjdCA9IGZhbHNlOworICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBjYWxs
ZWQgZm9yIGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAorICAgICAgICAvLyB0aGVuIGlm
IHRoZSB1c2VyIG1hbnVhbGx5IHpvb21zIGluIGl0J2QgYmUgbmljZSB0byBwcmVzZXJ2ZSB0aGUK
KyAgICAgICAgLy8gcmVsYXRpdmUgaW5jcmVhc2UgaW4gem9vbSB0aGV5IGNhdXNlZCAoaWYgdGhl
eSB6b29tIG91dCB0aGVuIGl0J3Mgb2sKKyAgICAgICAgLy8gdG8gem9vbSB0aGVtIGJhY2sgaW4g
YWdhaW4pLiBUaGlzIGlzbid0IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudAorICAgICAgICAv
LyBkb3VibGUtdGFwIHpvb20gc3RyYXRlZ3kgKGZpdHRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sg
dG8gdGhlIHNjcmVlbikKKyAgICAgICAgLy8gdGhvdWdoLgorCisgICAgICAgIGZsb2F0IHNjcmVl
bkhlaWdodCA9IG1fc2l6ZS5oZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworICAg
ICAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1fc2l6ZS53aWR0aCAvIHNjYWxlICogcGFnZVNjYWxl
RmFjdG9yKCk7CisKKyAgICAgICAgLy8gU2Nyb2xsIHRvIHZlcnRpY2FsbHkgYWxpZ24gdGhlIGJs
b2NrLgorICAgICAgICBpZiAocmVjdC5oZWlnaHQgPCBzY3JlZW5IZWlnaHQpIHsKKyAgICAgICAg
ICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KKyAgICAgICAgICAgIHJlY3Qu
eSAtPSAwLjUgKiAoc2NyZWVuSGVpZ2h0IC0gcmVjdC5oZWlnaHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gRW5zdXJlIHBvc2l0aW9uIHdlJ3JlIHpvb21pbmcgdG8gKCsgcGFk
ZGluZykgaXNuJ3Qgb2ZmIHRoZSBib3R0b20gb2YKKyAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4u
CisgICAgICAgICAgICByZWN0LnkgPSBtYXg8ZmxvYXQ+KHJlY3QueSwgaGl0UmVjdC55ICsgcGFk
ZGluZyAtIHNjcmVlbkhlaWdodCk7CisgICAgICAgIH0gLy8gT3RoZXJ3aXNlIHRvcCBhbGlnbiB0
aGUgYmxvY2suCisKKyAgICAgICAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhvcml6b250YWwg
YWxpZ25tZW50LgorICAgICAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVlbldpZHRoKQorICAgICAg
ICAgICAgcmVjdC54IC09IDAuNSAqIChzY3JlZW5XaWR0aCAtIHJlY3Qud2lkdGgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZWN0LnggPSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54
ICsgcGFkZGluZyAtIHNjcmVlbldpZHRoKTsKKyAgICAgICAgc2Nyb2xsLnggPSByZWN0Lng7Cisg
ICAgICAgIHNjcm9sbC55ID0gcmVjdC55OworICAgICAgICBpc0FuY2hvciA9IGZhbHNlOworICAg
IH0KIAotICAgIHNjcm9sbC54ID0gcmVjdC54OwotICAgIHNjcm9sbC55ID0gcmVjdC55OworICAg
IHNjYWxlID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZSk7CisgICAgc2Nyb2xs
ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzY3JvbGwp
OworICAgIGZsb2F0IHNjYWxlRGVsdGEgPSBzY2FsZSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAg
IHNjcm9sbCA9IFdlYlBvaW50KHNjcm9sbC54ICogc2NhbGVEZWx0YSwgc2Nyb2xsLnkgKiBzY2Fs
ZURlbHRhKTsKKyAgICBpZiAoIWlzQW5jaG9yKQorICAgICAgICBzY3JvbGwgPSBjbGFtcE9mZnNl
dEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7CiB9CiAKIHN0YXRpYyBib29sIGhpZ2hsaWdodENvbmRp
dGlvbnMoTm9kZSogbm9kZSkKQEAgLTExODUsMTEgKzEyMTAsMTMgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6YW5pbWF0ZVpvb21Bcm91bmRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIEF1dG9ab29t
VHlwZSB6b28KIAogICAgIGZsb2F0IHNjYWxlOwogICAgIFdlYlBvaW50IHNjcm9sbDsKLSAgICBj
b21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocG9pbnQueCgpLCBwb2ludC55
KCksIDAsIDApLCB6b29tVHlwZSwgc2NhbGUsIHNjcm9sbCk7CisgICAgYm9vbCBpc0FuY2hvcjsK
KyAgICBXZWJQb2ludCB3ZWJQb2ludCA9IHBvaW50OworICAgIGNvbXB1dGVTY2FsZUFuZFNjcm9s
bEZvckhpdFJlY3QoV2ViUmVjdCh3ZWJQb2ludC54LCB3ZWJQb2ludC55LCAwLCAwKSwgem9vbVR5
cGUsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKIAogICAgIGJvb2wgaXNEb3VibGVUYXAgPSAo
em9vbVR5cGUgPT0gRG91YmxlVGFwKTsKLSAgICBkb3VibGUgZHVyYXRpb25JblNlY29uZHMgPSBp
c0RvdWJsZVRhcCA/IGRvdWJsZVRhcFpvb21BbmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA6IDA7
Ci0gICAgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsLCBpc0RvdWJsZVRhcCwgc2NhbGUs
IGR1cmF0aW9uSW5TZWNvbmRzKTsKKyAgICBkb3VibGUgZHVyYXRpb25JblNlY29uZHMgPSAoaXNE
b3VibGVUYXAgJiYgIW1fc2hvdWxkVXNlRG91YmxlVGFwVGltZVplcm8pID8gZG91YmxlVGFwWm9v
bUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzIDogMDsKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihzY3JvbGwsIGlzQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogI2VuZGlm
CiB9CiAKQEAgLTM0MzAsOCArMzQ1NywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRM
b2FkKGJvb2wqIGlzTmV3TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAg
IG1fbmV3TmF2aWdhdGlvbkxvYWRlciA9IDA7CiAjZW5kaWYKICAgICBtX29ic2VydmVkTmV3TmF2
aWdhdGlvbiA9IGZhbHNlOwotICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRp
b25XaXRoaW5QYWdlKQorICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25X
aXRoaW5QYWdlKSB7CiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSBmYWxzZTsKKyAg
ICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBN
YWtlIHN1cmUgbGluayBoaWdobGlnaHQgZnJvbSBwcmV2aW91cyBwYWdlIGlzIGNsZWFyZWQuCiAg
ICAgbV9saW5rSGlnaGxpZ2h0LmNsZWFyKCk7CkBAIC0zODk4LDYgKzM5MjcsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRh
LCBmbG9hdCBwYWdlU2NhbAogICAgICAgICBXZWJQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQoc2Ny
b2xsT2Zmc2V0LndpZHRoICogcGFnZVNjYWxlRGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuaGVpZ2h0ICogcGFnZVNjYWxlRGVsdGEpOwogICAg
ICAgICBzZXRQYWdlU2NhbGVGYWN0b3IocGFnZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVEZWx0
YSwgc2NhbGVkU2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3Qg
PSBmYWxzZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDRjMWE5NzRhMDVkZjQyNjYwZjlkNzM5OTM3NDgyNDJmMGE2NGIzZDYuLmVlNGMz
MTVhN2I0ZmYzMDU4ZjUzYjA3MWFjZmEzODRmZGE0OTk4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNTYxLDEyICs1NjEsMTUgQEAgcHVibGljOgogICAg
IHZvaWQgZnVsbEZyYW1lUGx1Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKTsK
IAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9h
dCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwpOworICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Ny
b2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0
JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpOwogICAgIFdlYkNvcmU6
Ok5vZGUqIGJlc3RUb3VjaExpbmtOb2RlKFdlYkNvcmU6OkludFBvaW50IHRvdWNoRXZlbnRMb2Nh
dGlvbik7CiAgICAgdm9pZCBlbmFibGVUb3VjaEhpZ2hsaWdodChXZWJDb3JlOjpJbnRQb2ludCB0
b3VjaEV2ZW50TG9jYXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBhbmltYXRlWm9vbUFyb3VuZFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgQXV0b1pvb21UeXBlKTsKIAorICAgIC8vIEV4
cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisgICAgdm9pZCBzaG91bGRVc2VBbmltYXRlRG91
YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5nKGJvb2wpOworCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRv
ckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAogICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50Kik7CkBAIC03NDAsNiArNzQzLDEyIEBAIHByaXZhdGU6CiAg
ICAgZmxvYXQgbV9zYXZlZFBhZ2VTY2FsZUZhY3RvcjsgLy8gMCBtZWFucyB0aGF0IG5vIHBhZ2Ug
c2NhbGUgZmFjdG9yIGlzIHNhdmVkLgogICAgIFdlYkNvcmU6OkludFNpemUgbV9zYXZlZFNjcm9s
bE9mZnNldDsKIAorICAgIC8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2NhbGUgd2FzIGFjaGlldmVk
IGJ5IHpvb21pbmcgaW4gd2l0aCBkb3VibGUgdGFwLgorICAgIGJvb2wgbV9kb3VibGVUYXBab29t
SW5FZmZlY3Q7CisKKyAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgIGJvb2wg
bV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybzsKKwogICAgIGJvb2wgbV9jb250ZXh0TWVudUFs
bG93ZWQ7CiAKICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCBhMDA0OWI2N2U4ZDQxYjYyYmE1
Mjg1YjlhMTAwZDY5YzYwNmY0MDMxLi5kZmNhY2ZhY2UzY2IxNzg0MGVhZTNhM2ZjZmU1YmM0Mzc4
ZTJlNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3Qu
Y3BwCkBAIC0zMTYsNzYgKzMxNiwxODUgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2FuT3ZlcnJp
ZGVNYXhpbXVtU2NhbGVGYWN0b3IpCiB9CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitj
bGFzcyBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYlJlY3Qgd2luZG93UmVjdCgpIE9WRVJSSURF
IHsgcmV0dXJuIG1fd2luZG93UmVjdDsgfQorCisgICAgV2ViUmVjdCBtX3dpbmRvd1JlY3Q7Cit9
OworCit2b2lkIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3
SW1wbCwgV2ViUG9pbnQgc2Nyb2xsLCBmbG9hdCBzY2FsZSkKK3sKKyAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBXZWJQb2ludChzY3JvbGwueCwgc2Nyb2xsLnkpKTsK
KyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5b3V0KCk7
Cit9CisKIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tUGFyYW1zVGVzdCkKIHsKICAg
ICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRv
X2Rpdl90ZXN0Lmh0bWwiKTsKIAotICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRp
Y19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExv
YWQobV9iYXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRt
bCIsIHRydWUpKTsKLSAgICBpbnQgcGFnZVdpZHRoID0gNjQwOwotICAgIGludCBwYWdlSGVpZ2h0
ID0gNDgwOwotICAgIGludCBkaXZQb3NYID0gMjAwOwotICAgIGludCBkaXZQb3NZID0gMjAwOwot
ICAgIGludCBkaXZXaWR0aCA9IDIwMDsKLSAgICBpbnQgZGl2SGVpZ2h0ID0gMTUwOwotICAgIFdl
YlJlY3QgZG91YmxlVGFwUG9pbnQoMjUwLCAyNTAsIDAsIDApOwotICAgIHdlYlZpZXdJbXBsLT5y
ZXNpemUoV2ViU2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICBEaXZBdXRvWm9vbVRl
c3RXZWJWaWV3Q2xpZW50IGNsaWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAg
ICBpbnQgdmlld3BvcnRIZWlnaHQgPSA0ODA7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdl
YlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYktpdDo6
V2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KG1fYmFzZVVSTCArICJnZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwi
LCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5lbmFibGVGaXhlZExheW91dE1vZGUo
dHJ1ZSk7CisgICAgd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMi4wZik7CisgICAgd2Vi
Vmlldy0+cmVzaXplKFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAg
ICB3ZWJWaWV3LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMC4wMSwgNCk7CisgICAgd2ViVmll
dy0+bGF5b3V0KCk7CisKKyAgICBXZWJSZWN0IHdpZGVEaXYoMjAwLCAxMDAsIDQwMCwgMTUwKTsK
KyAgICBXZWJSZWN0IHRhbGxEaXYoMjAwLCAzMDAsIDQwMCwgODAwKTsKKyAgICBXZWJSZWN0IGRv
dWJsZVRhcFBvaW50V2lkZSgod2lkZURpdi54ICsgNTApICogd2ViVmlldy0+cGFnZVNjYWxlRmFj
dG9yKCksCisgICAgICAgICh3aWRlRGl2LnkgKyA1MCkgKiB3ZWJWaWV3LT5wYWdlU2NhbGVGYWN0
b3IoKSwgMCwgMCk7CisgICAgV2ViUmVjdCBkb3VibGVUYXBQb2ludFRhbGwoKHRhbGxEaXYueCAr
IDUwKSAqIHdlYlZpZXctPnBhZ2VTY2FsZUZhY3RvcigpLAorICAgICAgICAodGFsbERpdi55ICsg
NTApICogd2ViVmlldy0+cGFnZVNjYWxlRmFjdG9yKCksIDAsIDApOwogICAgIGZsb2F0IHNjYWxl
OwogICAgIFdlYlBvaW50IHNjcm9sbDsKKyAgICBib29sIGlzQW5jaG9yOworCisgICAgV2ViVmll
d0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KTsK
KyAgICAvLyBUZXN0IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHdpZGUgZGl2LgorICAgIHdlYlZp
ZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50V2lk
ZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhvcml6b250YWxseSBmaWxsIHRoZSBzY3JlZW4gKG1vZHVsbyBt
YXJnaW5zKSwgYW5kCisgICAgLy8gdmVydGljYWxseSBjZW50ZXJlZCAobW9kdWxvIGludGVnZXIg
cm91bmRpbmcpLgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHdpZGVE
aXYud2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHdpZGVEaXYueCAqIHNjYWxl
LCBzY3JvbGwueCwgMjApOworICAgIGludCB2U2Nyb2xsID0gKHdpZGVEaXYueSArIHdpZGVEaXYu
aGVpZ2h0IC8gMikgKiBzY2FsZSAtICh2aWV3cG9ydEhlaWdodCAvIDIpOworICAgIEVYUEVDVF9O
RUFSKHZTY3JvbGwsIHNjcm9sbC55LCAxKTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIGlzQW5jaG9y
KTsKKworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBzY3JvbGws
IHNjYWxlKTsKKworICAgIC8vIFRlc3Qgem9vbSBvdXQgYmFjayB0byBtaW5pbXVtIHNjYWxlLgor
ICAgIHdlYlZpZXdJbXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRh
cFBvaW50V2lkZSwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNo
b3IpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZh
Y3RvcigpLCBzY2FsZSk7CisgICAgRVhQRUNUX0VRKHRydWUsIGlzQW5jaG9yKTsKKworICAgIHNl
dFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwgc2Nh
bGUpOworCisgICAgLy8gVGVzdCBkb3VibGUtdGFwIHpvb21pbmcgaW50byB0YWxsIGRpdi4KKyAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQ
b2ludFRhbGwsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9y
KTsKKyAgICAvLyBUaGUgZGl2IHNob3VsZCBzdGFydCBhdCB0aGUgdG9wIGxlZnQgb2YgdGhlIHZp
ZXdwb3J0LgorICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lkdGggLyAoZmxvYXQpIHRhbGxEaXYu
d2lkdGgsIHNjYWxlLCAwLjEpOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueCAqIHNjYWxlLCBz
Y3JvbGwueCwgMjApOworICAgIEVYUEVDVF9ORUFSKHRhbGxEaXYueSAqIHNjYWxlLCBzY3JvbGwu
eSwgMjApOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3IpOwogCi0gICAgLy8gVGVzdCBm
b3IgRG91YmxldGFwIHNjYWxpbmcKKyAgICAvLyBUZXN0IGZvciBOb24tZG91YmxldGFwIHNjYWxp
bmcKKyAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1
dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwgV2Vi
Vmlld0ltcGw6OkZpbmRJblBhZ2UsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKKyAgICBFWFBF
Q1RfTkVBUih2aWV3cG9ydFdpZHRoIC8gKGZsb2F0KSB3aWRlRGl2LndpZHRoLCBzY2FsZSwgMC4x
KTsKK30KIAotICAgIC8vIFRlc3RzIGZvciB6b29taW5nIGluIGFuZCBvdXQgd2l0aG91dCBjbGFt
cGluZy4KLSAgICAvLyBTZXQgZGV2aWNlIHNjYWxlIGFuZCBzY2FsZSBsaW1pdHMgc28gd2UgZG9u
dCBnZXQgY2xhbXBlZC4KLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7
Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLCA0IC8gd2ViVmll
d0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwordm9pZCBzaW11bGF0ZURvdWJsZVRhcChXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsIFdlYlBvaW50JiBwb2ludCwgZmxvYXQmIHNjYWxlKQorewor
ICAgIFdlYlBvaW50IHNjYWxlZFBvaW50KHN0YXRpY19jYXN0PGludD4ocG9pbnQueCAqIHdlYlZp
ZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSksCisgICAgICAgIHN0YXRpY19jYXN0PGludD4ocG9p
bnQueSAqIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSkpOworICAgIHdlYlZpZXdJbXBs
LT5hbmltYXRlWm9vbUFyb3VuZFBvaW50KHNjYWxlZFBvaW50LCBXZWJWaWV3SW1wbDo6RG91Ymxl
VGFwKTsKKyAgICB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+bGF5
b3V0KCk7CisgICAgc2NhbGUgPSB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CiAK
LSAgICAvLyBUZXN0IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVT
Y2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3Vi
bGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIGZsb2F0IHNjYWxlZERpdldpZHRoID0gZGl2V2lk
dGggKiBzY2FsZTsKLSAgICBmbG9hdCBzY2FsZWREaXZIZWlnaHQgPSBkaXZIZWlnaHQgKiBzY2Fs
ZTsKLSAgICBpbnQgaFNjcm9sbCA9ICgoZGl2UG9zWCAqIHNjYWxlKSAtICgocGFnZVdpZHRoIC0g
c2NhbGVkRGl2V2lkdGgpIC8gMikpIC8gc2NhbGU7Ci0gICAgaW50IHZTY3JvbGwgPSAoKGRpdlBv
c1kgKiBzY2FsZSkgLSAoKHBhZ2VIZWlnaHQgLSBzY2FsZWREaXZIZWlnaHQpIC8gMikpIC8gc2Nh
bGU7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lkdGgsIHNjYWxlLCAwLjEpOwot
ICAgIEVYUEVDVF9FUShoU2Nyb2xsLCBzY3JvbGwueCk7Ci0gICAgRVhQRUNUX0VRKHZTY3JvbGws
IHNjcm9sbC55KTsKLQotICAgIC8vIFRlc3Qgem9vbSBvdXQgdG8gb3ZlcnZpZXcgc2NhbGUuCi0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnQs
IFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSgxLCBzY2FsZSk7Ci0gICAgRVhQRUNUX0VRKFdlYlBvaW50KDAsIDApLCBzY3JvbGwpOwot
Ci0gICAgLy8gVGVzdHMgZm9yIGNsYW1wZWQgc2NhbGluZy4KLSAgICAvLyBUZXN0IGNsYW1wIHRv
IGRldmljZSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJT
aXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZh
Y3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMi41KTsKLSAg
ICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQ
b2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDIuNSwgc2NhbGUpOwotCi0gICAgLy8gVGVzdCBjbGFtcCB0byBtaW5pbXVtIHNj
YWxlOgotICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xs
LngsIHNjcm9sbC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMS41IC8gd2ViVmlld0lt
cGwtPmRldmljZVNjYWxlRmFjdG9yKCksIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3Qo
ZG91YmxlVGFwUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXAsIHNjYWxlLCBzY3JvbGwpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgxLjUsIHNjYWxlKTsKLSAgICBFWFBFQ1RfRVEoV2ViUG9pbnQo
MCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRvIG1heGltdW0gc2NhbGU6Ci0g
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Ny
b2xsLnkpLCBzY2FsZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2Vi
Vmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQ
YWdlU2NhbGVGYWN0b3JMaW1pdHMoMCwgMyAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChk
b3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDMsIHNjYWxlKTsKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1
dG9ab29tTXVsdGlwbGVEaXZzVGVzdCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJnZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbCIpOwogCi0gICAgLy8g
VGVzdCBmb3IgTm9uLWRvdWJsZXRhcCBzY2FsaW5nCi0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VT
Y2FsZUZhY3RvcigxLCBXZWJQb2ludCgwLCAwKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNldERldmlj
ZVNjYWxlRmFjdG9yKDQpOwotICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1p
dHMoMCwgNCAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICAvLyBUZXN0
IHpvb21pbmcgaW50byBkaXYuCi0gICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2FsZUFuZFNjcm9s
bEZvckhpdFJlY3QoV2ViUmVjdCgyNTAsIDI1MCwgMTAsIDEwKSwgV2ViVmlld0ltcGw6OkZpbmRJ
blBhZ2UsIHNjYWxlLCBzY3JvbGwpOwotICAgIEVYUEVDVF9ORUFSKHBhZ2VXaWR0aCAvIGRpdldp
ZHRoLCBzY2FsZSwgMC4xKTsKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNsaWVu
dDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWlnaHQg
PSA0ODA7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8gPSAxLjI7
CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0aCwg
dmlld3BvcnRIZWlnaHQpOworICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVz
dEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVfZm9y
X2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwiLCB0cnVlLCAwLCAmY2xpZW50KTsKKyAgICB3
ZWJWaWV3LT5lbmFibGVGaXhlZExheW91dE1vZGUodHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXpl
KFdlYlNpemUodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpKTsKKyAgICB3ZWJWaWV3LT5z
ZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoMSwgNCk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7Cisg
ICAgd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41Zik7CisKKyAgICBXZWJWaWV3SW1w
bCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpOworICAg
IHdlYlZpZXdJbXBsLT5zaG91bGRVc2VBbmltYXRlRG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5n
KHRydWUpOworCisgICAgV2ViUmVjdCB0b3BEaXYoMjAwLCAxMDAsIDIwMCwgMTUwKTsKKyAgICBX
ZWJSZWN0IGJvdHRvbURpdigyMDAsIDMwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IHRvcFBv
aW50KHRvcERpdi54ICsgNTAsIHRvcERpdi55ICsgNTApOworICAgIFdlYlBvaW50IGJvdHRvbVBv
aW50KGJvdHRvbURpdi54ICsgNTAsIGJvdHRvbURpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxl
OworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgw
LCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3Vi
bGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKworICAgIC8vIFRlc3QgZG91Ymxl
IHRhcCBvbiB0d28gZGlmZmVyZW50IGRpdnMKKyAgICAvLyBBZnRlciBmaXJzdCB6b29tLCB3ZSBz
aG91bGQgZ28gYmFjayB0byBtaW5pbXVtIHBhZ2Ugc2NhbGUgd2l0aCBhIHNlY29uZCBkb3VibGUg
dGFwLgorICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCB0b3BQb2ludCwgc2NhbGUp
OworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwg
c2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBib3R0b21Qb2ludCwg
c2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2Fs
ZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAvLyBJZiB0aGUgdXNlciBwaW5jaCB6b29tcyBhZnRl
ciBkb3VibGUgdGFwLCBhIHNlY29uZCBkb3VibGUgdGFwIHNob3VsZCB6b29tIGJhY2sgdG8gdGhl
IGRpdi4KKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgdG9wUG9pbnQsIHNjYWxl
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCks
IHNjYWxlKTsKKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCks
IDAuNik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGJvdHRvbVBvaW50LCBz
Y2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBzY2FsZSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpdkF1dG9ab29tU2NhbGVC
b3VuZHNUZXN0KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImdldF9zY2FsZV9i
b3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwiKTsKKworICAgIERpdkF1dG9ab29t
VGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOwor
ICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBmbG9hdCBkb3VibGVUYXBab29tQWxy
ZWFkeUxlZ2libGVSYXRpbyA9IDEuMjsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0gV2ViUmVj
dCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgV2ViS2l0OjpXZWJW
aWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9i
YXNlVVJMICsgImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRy
dWUsIDAsICZjbGllbnQpOworICAgIHdlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVl
KTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhl
aWdodCkpOworICAgIHdlYlZpZXctPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLCA0KTsKKyAg
ICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJWaWV3LT5zZXREZXZpY2VTY2FsZUZhY3Rvcigx
LjVmKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZp
ZXdJbXBsKj4od2ViVmlldyk7CisgICAgd2ViVmlld0ltcGwtPnNob3VsZFVzZUFuaW1hdGVEb3Vi
bGVUYXBUaW1lWmVyb0ZvclRlc3RpbmcodHJ1ZSk7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFs
cmVhZHlMZWdpYmxlU2NhbGUgPSB3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
ICogZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW87CisKKyAgICBXZWJSZWN0IGRpdigy
MDAsIDEwMCwgMjAwLCAxNTApOworICAgIFdlYlBvaW50IGRvdWJsZVRhcFBvaW50KGRpdi54ICsg
NTAsIGRpdi55ICsgNTApOworICAgIGZsb2F0IHNjYWxlOwogCi0gICAgLy8gRHJvcCBhbnkgcGVu
ZGluZyBmYWtlIG1vdXNlIGV2ZW50cyBmcm9tIHpvb21pbmcgYmVmb3JlIGxlYXZpbmcgdGhlIHRl
c3QuCi0gICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5jbGVhcigpOworICAgIC8vIFRlc3QgZG91YmxlIHRhcCBzY2FsZSBib3VuZHMuCisgICAgLy8g
bWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlIDwgZGV2
aWNlRHBpU2NhbGUKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwg
V2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAq
ICgxICsgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8pIC8gMik7CisgICAgc2ltdWxh
dGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7Cisg
ICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9y
KCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFw
UG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPmRldmljZVNj
YWxlRmFjdG9yKCksIHNjYWxlKTsKKworICAgIC8vIFpvb20gaW4gdG8gcmVzZXQgZG91YmxlX3Rh
cF96b29tX2luX2VmZmVjdCBmbGFnLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNj
YWxlKFdlYlNpemUoKSwgMS4xKTsKKyAgICAvLyBkZXZpY2VEcGlTY2FsZSA8IG1pbmltdW1QYWdl
U2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZQorICAgIHdlYlZpZXdJbXBs
LT5zZXREZXZpY2VTY2FsZUZhY3RvcigwLjVmKTsKKyAgICBzZXRTY2FsZUFuZFNjcm9sbEFuZExh
eW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+bWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8p
IC8gMik7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50
LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNj
YWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwg
ZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoZG91YmxlVGFwWm9v
bUFscmVhZHlMZWdpYmxlU2NhbGUsIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJW
aWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2Vi
Vmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworCisgICAgLy8gWm9v
bSBpbiB0byByZXNldCBkb3VibGVfdGFwX3pvb21faW5fZWZmZWN0IGZsYWcuCisgICAgd2ViVmll
d0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjEpOworICAgIC8vIG1pbmlt
dW1QYWdlU2NhbGUgPCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSA8IGRldmljZURw
aVNjYWxlCisgICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKDEuMWYpOworICAg
IHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwg
KHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBa
b29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJW
aWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2Vi
Vmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAgIHNpbXVsYXRl
RG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVD
VF9GTE9BVF9FUShkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2FsZSwgc2NhbGUpOworICAg
IHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
LCBzY2FsZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9tdWx0aXBsZV9kaXZzX2Zvcl9h
dXRvX3pvb21fdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmU2NDQyZmJhZmJiMzRmNTNkYWZjNjVl
ZjgwNGQ2NGZjZDRiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEw
MHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+VG9w
IERpdjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMDBweDsgdG9wOiAzMDBweDsgd2lkdGg6
IDIwMHB4OyBoZWlnaHQ6IDE1MHB4Ij4KKyAgICAgIDxwIGlkPSJEaXYiPkJvdHRvbSBEaXY8L3A+
CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pv
b21fdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2Fs
ZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNjOGU5
YzE2NTAzNDhiYzZiODU2M2Q3MjdiYTI4MGE1NmI0NWNlOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zv
cl9hdXRvX3pvb21fdGVzdC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+CisgIDxib2R5Pgor
ICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1
dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogNDAwcHgi
PgorICAgICAgPHAgaWQ9IkRpdiI+RGl2PC9wPgorICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3Nj
YWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRt
bAppbmRleCAxODE3ZGM0N2Q1NGI1M2JhMmM0NmE1YjBhOWJhNzQ5OWZjYTI3MGVjLi45NWU3YjM3
ODdkNWM2MTAxNmJkN2NhMjUwZDhhODNmZDZlNzU4MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZf
dGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2Nh
bGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwKQEAgLTEsMTMgKzEsMTAgQEAKIDxo
dG1sPgogICA8Ym9keT4KLSAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsg
cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0aDogNjQwcHg7IGhl
aWdodDogNDgwcHgiPgotICAgICAgPHA+VG9wIERpdjwvcD4KLSAgICAgIDxkaXYgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0
b3A6IDIwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDogMTUwcHgiPgotICAgICAgICA8cCBpZD0i
aW5uZXJEaXYiPkRpdiB0byB6b29tIHRvPC9wPgotICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IHBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMjIwcHg7IHRvcDogMzUwcHg7
IHdpZHRoOiAxNjBweDsgaGVpZ2h0OiA0MHB4Ij4KLSAgICAgICAgICA8cCBpZD0iaW5uZXJJbm5l
ckRpdiI+RGl2IE5PVCB0byB6b29tIHRvPC9wPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvZGl2
PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJz
b2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDEwMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTUw
cHgiPgorICAgICAgPHAgaWQ9IndpZGVEaXYiPldpZGUgZGl2PC9wPgorICAgIDwvZGl2PgorICAg
IDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDIwMHB4OyB0b3A6IDMwMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDogODAwIj4KKyAg
ICAgIDxwIGlkPSJ0YWxsRGl2Ij5UYWxsIGRpdjwvcD4KICAgICA8L2Rpdj4KICAgPC9ib2R5Pgog
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166273</attachid>
            <date>2012-09-28 10:23:38 -0700</date>
            <delta_ts>2012-09-28 11:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90316-20120928102255.patch</filename>
            <type>text/plain</type>
            <size>29461</size>
            <attacher>yusufo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDljMTAzZGQ1YTZkMzQ1OTcwOTZjNjgyYWI5ZGIyNWMyMGRhOWMxYzAuLjhiNGNiMjYxMThkNTMy
YTA0MjZjYjJmYjU3ZTliYWIwNjI3NWQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMTcgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xl
LmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dQWRkIERvdWJsZVRhcCBnZXN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGRvdWJsZVRhcEdl
c3R1cmUgaW1wbGVtZW50YXRpb24gYW5kIGhvb2tlZCBpdCB0byBhbiBhbHJlYWR5IHByZXNlbnQg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdC4gQWRkZWQgMiBuZXcgdGVz
dHMgYW5kIGNoYW5nZWQgb25lIGJhc2VkIG9uIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFu
ZFNjcm9sbEZvckhpdFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0
ZVpvb21Bcm91bmRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0
YS9nZXRfbXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS9nZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVz
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196
b29tX2ludG9fZGl2X3Rlc3QuaHRtbDoKKwogMjAxMi0wOS0yNyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhZ2Ugb3ZlcmxheXMgYXJlIG5vdCB1cGRh
dGVkIHdoZW4gV2ViVmlldyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYmVlMzQ3M2Y2YzE1YWM4NzA0ZDRkZmE3NDI5NDYxYzNhOWY1
NmM0Zi4uOTJkMzVmZWRkYmFiY2I0YmRhNzUzZTUzNDJjOWM4ZjUzNjNkYzFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTkxLDEwICsxOTEsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIChzdWNoIGFzIGR1ZSB0byBhIGRvdWJsZSB0YXAg
Z2VzdHVyZSBvciBmaW5kIGluIHBhZ2UgZXRjLikuIFRoZXNlIGFyZQogLy8gZXhwZXJpbWVudGFs
bHkgZGV0ZXJtaW5lZC4KIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludFBhZGRpbmcgPSAzMjsK
K3N0YXRpYyBjb25zdCBpbnQgbm9uVXNlckluaXRpYXRlZFBvaW50UGFkZGluZyA9IDExOwogc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjYWxlRGlmZmVyZW5jZSA9IDAuMDFmOwogc3RhdGljIGNvbnN0
IGZsb2F0IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiA9IDU7CiBzdGF0aWMgY29u
c3QgZmxvYXQgZG91YmxlVGFwWm9vbUNvbnRlbnRNaW5pbXVtTWFyZ2luID0gMjsKIHN0YXRpYyBj
b25zdCBkb3VibGUgZG91YmxlVGFwWm9vbUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzID0gMC4y
NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9
IDEuMjsKIAogLy8gQ29uc3RhbnRzIGZvciB6b29taW5nIGluIG9uIGEgZm9jdXNlZCB0ZXh0IGZp
ZWxkLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxBbmRTY2FsZUFuaW1hdGlvbkR1cmF0aW9u
SW5TZWNvbmRzID0gMC4yOwpAQCAtMzkxLDYgKzM5Myw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0VGFnTWF4
aW11bVNjYWxlKGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3JJc1NldChmYWxzZSkKICAg
ICAsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IoMCkKKyAgICAsIG1fZG91YmxlVGFwWm9vbUluRWZm
ZWN0KGZhbHNlKQorICAgICwgbV9zaG91bGRVc2VEb3VibGVUYXBUaW1lWmVybyhmYWxzZSkKICAg
ICAsIG1fY29udGV4dE1lbnVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kb2luZ0RyYWdBbmREcm9w
KGZhbHNlKQogICAgICwgbV9pZ25vcmVJbnB1dEV2ZW50cyhmYWxzZSkKQEAgLTc0Miw2ICs3NDYs
MTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVs
ZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBhbmltYXRlWm9vbUFyb3VuZFBvaW50KFdlYlBv
aW50KGV2ZW50LngsIGV2ZW50LnkpLCBEb3VibGVUYXApOworICAgICAgICBldmVudFN3YWxsb3dl
ZCA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46
CiAgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOwpAQCAt
NzgxLDE3ICs3ODksMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVu
ZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAogCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzKQogewotICAgIGlm
ICghbV9sYXllclRyZWVWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRQb2ludCBjbGFt
cGVkUG9pbnQgPSB0YXJnZXRQb3NpdGlvbjsKKyAgICBXZWJQb2ludCBjbGFtcGVkUG9pbnQgPSB0
YXJnZXRQb3NpdGlvbjsKICAgICBpZiAoIXVzZUFuY2hvcikKICAgICAgICAgY2xhbXBlZFBvaW50
ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHRhcmdldFBvc2l0aW9uLCBuZXdTY2FsZSk7Ci0KLSAgICBp
ZiAoIWR1cmF0aW9uSW5TZWNvbmRzICYmICF1c2VBbmNob3IpIHsKKyAgICBpZiAoKCFkdXJhdGlv
bkluU2Vjb25kcyAmJiAhdXNlQW5jaG9yKSB8fCBtX3Nob3VsZFVzZURvdWJsZVRhcFRpbWVaZXJv
KSB7CiAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihuZXdTY2FsZSwgY2xhbXBlZFBvaW50KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldykKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9sYXllclRyZWVWaWV3LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9yLCBuZXdTY2FsZSwgZHVyYXRpb25JblNlY29uZHMp
OwogfQpAQCAtMTA0MSwyNCArMTA0NywzNyBAQCBXZWJSZWN0IFdlYlZpZXdJbXBsOjp3aWRlblJl
Y3RXaXRoaW5QYWdlQm91bmRzKGNvbnN0IFdlYlJlY3QmIHNvdXJjZSwgaW50IHRhcmdldAogICAg
IHJldHVybiBXZWJSZWN0KG5ld1gsIHNvdXJjZS55LCBuZXdXaWR0aCwgc291cmNlLmhlaWdodCk7
CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3Qo
Y29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2Nh
bGUsIFdlYlBvaW50JiBzY3JvbGwpCit2b2lkIFdlYlZpZXdJbXBsOjpzaG91bGRVc2VBbmltYXRl
RG91YmxlVGFwVGltZVplcm9Gb3JUZXN0aW5nKGJvb2wgc2V0VG9aZXJvKQoreworICAgIG1fc2hv
dWxkVXNlRG91YmxlVGFwVGltZVplcm8gPSBzZXRUb1plcm87Cit9CisKK3ZvaWQgV2ViVmlld0lt
cGw6OmNvbXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVj
dCwgQXV0b1pvb21UeXBlIHpvb21UeXBlLCBmbG9hdCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGws
IGJvb2wmIGlzQW5jaG9yKQogewogICAgIHNjYWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7CiAgICAg
c2Nyb2xsLnggPSBzY3JvbGwueSA9IDA7CiAgICAgV2ViUmVjdCB0YXJnZXRSZWN0ID0gaGl0UmVj
dDsKKyAgICAvLyBQYWRkaW5nIG9ubHkgZGVwZW5kcyBvbiBwYWdlIHNjYWxlIHdoZW4gdHJpZ2dl
cmVkIGJ5IG1hbnVhbGx5IHRhcHBpbmcKKyAgICBpbnQgcGFkZGluZyA9ICh6b29tVHlwZSA9PSBE
b3VibGVUYXApID8gdG91Y2hQb2ludFBhZGRpbmcgOiBub25Vc2VySW5pdGlhdGVkUG9pbnRQYWRk
aW5nOwogICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgdGFyZ2V0UmVjdC53
aWR0aCA9IHRhcmdldFJlY3QuaGVpZ2h0ID0gdG91Y2hQb2ludFBhZGRpbmc7Ci0KKyAgICAgICAg
dGFyZ2V0UmVjdC53aWR0aCA9IHRhcmdldFJlY3QuaGVpZ2h0ID0gcGFkZGluZzsKICAgICBXZWJS
ZWN0IHJlY3QgPSBjb21wdXRlQmxvY2tCb3VuZHModGFyZ2V0UmVjdCwgem9vbVR5cGUpOworICAg
IGlmICh6b29tVHlwZSA9PSBGaW5kSW5QYWdlICYmIHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEtlZXAgY3VycmVudCBzY2FsZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5IHdpbGwgbm9y
bWFsbHkgYWxyZWFkeQorICAgICAgICAvLyBiZSB2aXNpYmxlKS4gRklYTUU6IFJldmlzaXQgdGhp
cyBpZiBpdCBpc24ndCBhbHdheXMgdHJ1ZS4KKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAg
IGNvbnN0IGZsb2F0IG92ZXJ2aWV3U2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAg
ICAgYm9vbCBzY2FsZVVuY2hhbmdlZCA9IHRydWU7CiAgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBQYWdlcyBzaG91bGQgYmUgYXMgbGVnaWJsZSBhcyBvbiBkZXNrdG9wIHdo
ZW4gYXQgZHBpIHNjYWxlLCBzbyBubwogICAgICAgICAvLyBuZWVkIHRvIHpvb20gaW4gZnVydGhl
ciB3aGVuIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5pbmcgem9vbSBsZXZlbAogICAgICAgICAvLyAo
YWZ0ZXIgZG91YmxlIHRhcCwgZmluZCBpbiBwYWdlLCBldGMpLCB0aG91Z2ggdGhlIHVzZXIgc2hv
dWxkIHN0aWxsCiAgICAgICAgIC8vIGJlIGFsbG93ZWQgdG8gbWFudWFsbHkgcGluY2ggem9vbSBp
biBmdXJ0aGVyIGlmIHRoZXkgZGVzaXJlLgotICAgICAgICBjb25zdCBmbG9hdCBtYXhTY2FsZSA9
IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGNvbnN0IGZsb2F0IGRlZmF1bHRTY2FsZVdo
ZW5BbHJlYWR5TGVnaWJsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciAqIGRvdWJsZVRhcFpv
b21BbHJlYWR5TGVnaWJsZVJhdGlvOworICAgICAgICBmbG9hdCBsZWdpYmxlU2NhbGUgPSBkZXZp
Y2VTY2FsZUZhY3RvcigpOworICAgICAgICBpZiAobGVnaWJsZVNjYWxlIDwgZGVmYXVsdFNjYWxl
V2hlbkFscmVhZHlMZWdpYmxlKQorICAgICAgICAgICAgbGVnaWJsZVNjYWxlID0gKHNjYWxlID09
IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcikgPyBkZWZhdWx0U2NhbGVXaGVuQWxyZWFkeUxlZ2li
bGUgOiBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CiAKICAgICAgICAgY29uc3QgZmxvYXQgZGVm
YXVsdE1hcmdpbiA9IGRvdWJsZVRhcFpvb21Db250ZW50RGVmYXVsdE1hcmdpbiAqIGRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgICAgIGNvbnN0IGZsb2F0IG1pbmltdW1NYXJnaW4gPSBkb3VibGVU
YXBab29tQ29udGVudE1pbmltdW1NYXJnaW4gKiBkZXZpY2VTY2FsZUZhY3RvcigpOwpAQCAtMTA3
MSw1NSArMTA5MCw2MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjb21wdXRlU2NhbGVBbmRTY3JvbGxG
b3JIaXRSZWN0KGNvbnN0IFdlYlJlY3QmIGhpdFJlY3QsIEF1dG9abwogICAgICAgICByZWN0ID0g
d2lkZW5SZWN0V2l0aGluUGFnZUJvdW5kcyhyZWN0LAogICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oZGVmYXVsdE1hcmdpbiAqIHJlY3Qud2lkdGggLyBtX3NpemUud2lkdGgpLAogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obWluaW11bU1hcmdpbiAqIHJlY3Qud2lkdGgg
LyBtX3NpemUud2lkdGgpKTsKLQogICAgICAgICAvLyBGaXQgYmxvY2sgdG8gc2NyZWVuLCByZXNw
ZWN0aW5nIGxpbWl0cy4KICAgICAgICAgc2NhbGUgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6
ZS53aWR0aCkgLyByZWN0LndpZHRoOwotICAgICAgICBzY2FsZSA9IG1pbihzY2FsZSwgbWF4U2Nh
bGUpOworICAgICAgICBzY2FsZSA9IG1pbihzY2FsZSwgbGVnaWJsZVNjYWxlKTsKICAgICAgICAg
c2NhbGUgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlKTsKIAogICAgICAgICBz
Y2FsZVVuY2hhbmdlZCA9IGZhYnMocGFnZVNjYWxlRmFjdG9yKCkgLSBzY2FsZSkgPCBtaW5TY2Fs
ZURpZmZlcmVuY2U7CiAgICAgfQogCi0gICAgaWYgKHpvb21UeXBlID09IERvdWJsZVRhcCkgewot
ICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkgfHwgc2NhbGVVbmNoYW5nZWQpIHsKLSAgICAgICAg
ICAgIC8vIFpvb20gb3V0IHRvIG92ZXJ2aWV3IG1vZGUuCi0gICAgICAgICAgICBpZiAob3ZlcnZp
ZXdTY2FsZSkKLSAgICAgICAgICAgICAgICBzY2FsZSA9IG92ZXJ2aWV3U2NhbGU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlY3QuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIC8vIEtlZXAgY3VycmVudCBzY2FsZSAobm8gbmVlZCB0byBzY3JvbGwgYXMgeCx5
IHdpbGwgbm9ybWFsbHkgYWxyZWFkeQotICAgICAgICAvLyBiZSB2aXNpYmxlKS4gRklYTUU6IFJl
dmlzaXQgdGhpcyBpZiBpdCBpc24ndCBhbHdheXMgdHJ1ZS4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgYXV0byB6b29t
IGR1cmluZyBmaW5kIGluIHBhZ2UsCi0gICAgLy8gdGhlbiBpZiB0aGUgdXNlciBtYW51YWxseSB6
b29tcyBpbiBpdCdkIGJlIG5pY2UgdG8gcHJlc2VydmUgdGhlIHJlbGF0aXZlCi0gICAgLy8gaW5j
cmVhc2UgaW4gem9vbSB0aGV5IGNhdXNlZCAoaWYgdGhleSB6b29tIG91dCB0aGVuIGl0J3Mgb2sg
dG8gem9vbQotICAgIC8vIHRoZW0gYmFjayBpbiBhZ2FpbikuIFRoaXMgaXNuJ3QgY29tcGF0aWJs
ZSB3aXRoIG91ciBjdXJyZW50IGRvdWJsZS10YXAKLSAgICAvLyB6b29tIHN0cmF0ZWd5IChmaXR0
aW5nIHRoZSBjb250YWluaW5nIGJsb2NrIHRvIHRoZSBzY3JlZW4pIHRob3VnaC4KLQotICAgIGZs
b2F0IHNjcmVlbkhlaWdodCA9IG1fc2l6ZS5oZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3Rv
cigpOwotICAgIGZsb2F0IHNjcmVlbldpZHRoID0gbV9zaXplLndpZHRoIC8gc2NhbGUgKiBwYWdl
U2NhbGVGYWN0b3IoKTsKLQotICAgIC8vIFNjcm9sbCB0byB2ZXJ0aWNhbGx5IGFsaWduIHRoZSBi
bG9jay4KLSAgICBpZiAocmVjdC5oZWlnaHQgPCBzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgLy8g
VmVydGljYWxseSBjZW50ZXIgc2hvcnQgYmxvY2tzLgotICAgICAgICByZWN0LnkgLT0gMC41ICog
KHNjcmVlbkhlaWdodCAtIHJlY3QuaGVpZ2h0KTsKKyAgICBpZiAoem9vbVR5cGUgPT0gRG91Ymxl
VGFwICYmIChyZWN0LmlzRW1wdHkoKSB8fCBzY2FsZVVuY2hhbmdlZCB8fCBtX2RvdWJsZVRhcFpv
b21JbkVmZmVjdCkpIHsKKyAgICAgICAgLy8gWm9vbSBvdXQgdG8gbWluaW11bSBzY2FsZS4KKyAg
ICAgICAgc2NhbGUgPSBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisgICAgICAgIHNjcm9sbCA9
IFdlYlBvaW50KGhpdFJlY3QueCwgaGl0UmVjdC55KTsKKyAgICAgICAgaXNBbmNob3IgPSB0cnVl
OworICAgICAgICBtX2RvdWJsZVRhcFpvb21JbkVmZmVjdCA9IGZhbHNlOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIEVuc3VyZSBwb3NpdGlvbiB3ZSdyZSB6b29taW5nIHRvICgrIHBhZGRpbmcp
IGlzbid0IG9mZiB0aGUgYm90dG9tIG9mCi0gICAgICAgIC8vIHRoZSBzY3JlZW4uCi0gICAgICAg
IHJlY3QueSA9IG1heDxmbG9hdD4ocmVjdC55LCBoaXRSZWN0LnkgKyB0b3VjaFBvaW50UGFkZGlu
ZyAtIHNjcmVlbkhlaWdodCk7Ci0gICAgfSAvLyBPdGhlcndpc2UgdG9wIGFsaWduIHRoZSBibG9j
ay4KLQotICAgIC8vIERvIHRoZSBzYW1lIHRoaW5nIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4K
LSAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVlbldpZHRoKQotICAgICAgICByZWN0LnggLT0gMC41
ICogKHNjcmVlbldpZHRoIC0gcmVjdC53aWR0aCk7Ci0gICAgZWxzZQotICAgICAgICByZWN0Lngg
PSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54ICsgdG91Y2hQb2ludFBhZGRpbmcgLSBzY3Jl
ZW5XaWR0aCk7CisgICAgICAgIGlmICh6b29tVHlwZSA9PSBEb3VibGVUYXAgJiYgc2NhbGUgIT0g
bV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKQorICAgICAgICAgICAgbV9kb3VibGVUYXBab29tSW5F
ZmZlY3QgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RvdWJsZVRhcFpvb21J
bkVmZmVjdCA9IGZhbHNlOworICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBiZWluZyBjYWxs
ZWQgZm9yIGF1dG8gem9vbSBkdXJpbmcgZmluZCBpbiBwYWdlLAorICAgICAgICAvLyB0aGVuIGlm
IHRoZSB1c2VyIG1hbnVhbGx5IHpvb21zIGluIGl0J2QgYmUgbmljZSB0byBwcmVzZXJ2ZSB0aGUK
KyAgICAgICAgLy8gcmVsYXRpdmUgaW5jcmVhc2UgaW4gem9vbSB0aGV5IGNhdXNlZCAoaWYgdGhl
eSB6b29tIG91dCB0aGVuIGl0J3Mgb2sKKyAgICAgICAgLy8gdG8gem9vbSB0aGVtIGJhY2sgaW4g
YWdhaW4pLiBUaGlzIGlzbid0IGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudAorICAgICAgICAv
LyBkb3VibGUtdGFwIHpvb20gc3RyYXRlZ3kgKGZpdHRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sg
dG8gdGhlIHNjcmVlbikKKyAgICAgICAgLy8gdGhvdWdoLgorCisgICAgICAgIGZsb2F0IHNjcmVl
bkhlaWdodCA9IG1fc2l6ZS5oZWlnaHQgLyBzY2FsZSAqIHBhZ2VTY2FsZUZhY3RvcigpOworICAg
ICAgICBmbG9hdCBzY3JlZW5XaWR0aCA9IG1fc2l6ZS53aWR0aCAvIHNjYWxlICogcGFnZVNjYWxl
RmFjdG9yKCk7CisKKyAgICAgICAgLy8gU2Nyb2xsIHRvIHZlcnRpY2FsbHkgYWxpZ24gdGhlIGJs
b2NrLgorICAgICAgICBpZiAocmVjdC5oZWlnaHQgPCBzY3JlZW5IZWlnaHQpIHsKKyAgICAgICAg
ICAgIC8vIFZlcnRpY2FsbHkgY2VudGVyIHNob3J0IGJsb2Nrcy4KKyAgICAgICAgICAgIHJlY3Qu
eSAtPSAwLjUgKiAoc2NyZWVuSGVpZ2h0IC0gcmVjdC5oZWlnaHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gRW5zdXJlIHBvc2l0aW9uIHdlJ3JlIHpvb21pbmcgdG8gKCsgcGFk
ZGluZykgaXNuJ3Qgb2ZmIHRoZSBib3R0b20gb2YKKyAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4u
CisgICAgICAgICAgICByZWN0LnkgPSBtYXg8ZmxvYXQ+KHJlY3QueSwgaGl0UmVjdC55ICsgcGFk
ZGluZyAtIHNjcmVlbkhlaWdodCk7CisgICAgICAgIH0gLy8gT3RoZXJ3aXNlIHRvcCBhbGlnbiB0
aGUgYmxvY2suCisKKyAgICAgICAgLy8gRG8gdGhlIHNhbWUgdGhpbmcgZm9yIGhvcml6b250YWwg
YWxpZ25tZW50LgorICAgICAgICBpZiAocmVjdC53aWR0aCA8IHNjcmVlbldpZHRoKQorICAgICAg
ICAgICAgcmVjdC54IC09IDAuNSAqIChzY3JlZW5XaWR0aCAtIHJlY3Qud2lkdGgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZWN0LnggPSBtYXg8ZmxvYXQ+KHJlY3QueCwgaGl0UmVjdC54
ICsgcGFkZGluZyAtIHNjcmVlbldpZHRoKTsKKyAgICAgICAgc2Nyb2xsLnggPSByZWN0Lng7Cisg
ICAgICAgIHNjcm9sbC55ID0gcmVjdC55OworICAgICAgICBpc0FuY2hvciA9IGZhbHNlOworICAg
IH0KIAotICAgIHNjcm9sbC54ID0gcmVjdC54OwotICAgIHNjcm9sbC55ID0gcmVjdC55OworICAg
IHNjYWxlID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZSk7CisgICAgc2Nyb2xs
ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzY3JvbGwp
OworICAgIGZsb2F0IHNjYWxlRGVsdGEgPSBzY2FsZSAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAg
IHNjcm9sbCA9IFdlYlBvaW50KHNjcm9sbC54ICogc2NhbGVEZWx0YSwgc2Nyb2xsLnkgKiBzY2Fs
ZURlbHRhKTsKKyAgICBpZiAoIWlzQW5jaG9yKQorICAgICAgICBzY3JvbGwgPSBjbGFtcE9mZnNl
dEF0U2NhbGUoc2Nyb2xsLCBzY2FsZSk7CiB9CiAKIHN0YXRpYyBib29sIGhpZ2hsaWdodENvbmRp
dGlvbnMoTm9kZSogbm9kZSkKQEAgLTExODUsMTEgKzEyMTAsMTMgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6YW5pbWF0ZVpvb21Bcm91bmRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIEF1dG9ab29t
VHlwZSB6b28KIAogICAgIGZsb2F0IHNjYWxlOwogICAgIFdlYlBvaW50IHNjcm9sbDsKLSAgICBj
b21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KFdlYlJlY3QocG9pbnQueCgpLCBwb2ludC55
KCksIDAsIDApLCB6b29tVHlwZSwgc2NhbGUsIHNjcm9sbCk7CisgICAgYm9vbCBpc0FuY2hvcjsK
KyAgICBXZWJQb2ludCB3ZWJQb2ludCA9IHBvaW50OworICAgIGNvbXB1dGVTY2FsZUFuZFNjcm9s
bEZvckhpdFJlY3QoV2ViUmVjdCh3ZWJQb2ludC54LCB3ZWJQb2ludC55LCAwLCAwKSwgem9vbVR5
cGUsIHNjYWxlLCBzY3JvbGwsIGlzQW5jaG9yKTsKIAogICAgIGJvb2wgaXNEb3VibGVUYXAgPSAo
em9vbVR5cGUgPT0gRG91YmxlVGFwKTsKLSAgICBkb3VibGUgZHVyYXRpb25JblNlY29uZHMgPSBp
c0RvdWJsZVRhcCA/IGRvdWJsZVRhcFpvb21BbmltYXRpb25EdXJhdGlvbkluU2Vjb25kcyA6IDA7
Ci0gICAgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsLCBpc0RvdWJsZVRhcCwgc2NhbGUs
IGR1cmF0aW9uSW5TZWNvbmRzKTsKKyAgICBkb3VibGUgZHVyYXRpb25JblNlY29uZHMgPSAoaXNE
b3VibGVUYXAgJiYgIW1fc2hvdWxkVXNlRG91YmxlVGFwVGltZVplcm8pID8gZG91YmxlVGFwWm9v
bUFuaW1hdGlvbkR1cmF0aW9uSW5TZWNvbmRzIDogMDsKKyAgICBzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihzY3JvbGwsIGlzQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25JblNlY29uZHMpOwogI2VuZGlm
CiB9CiAKQEAgLTM0MzAsOCArMzQ1NywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRM
b2FkKGJvb2wqIGlzTmV3TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAg
IG1fbmV3TmF2aWdhdGlvbkxvYWRlciA9IDA7CiAjZW5kaWYKICAgICBtX29ic2VydmVkTmV3TmF2
aWdhdGlvbiA9IGZhbHNlOwotICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRp
b25XaXRoaW5QYWdlKQorICAgIGlmICgqaXNOZXdOYXZpZ2F0aW9uICYmICFpc05hdmlnYXRpb25X
aXRoaW5QYWdlKSB7CiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSBmYWxzZTsKKyAg
ICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3QgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBN
YWtlIHN1cmUgbGluayBoaWdobGlnaHQgZnJvbSBwcmV2aW91cyBwYWdlIGlzIGNsZWFyZWQuCiAg
ICAgbV9saW5rSGlnaGxpZ2h0LmNsZWFyKCk7CkBAIC0zODk4LDYgKzM5MjcsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRh
LCBmbG9hdCBwYWdlU2NhbAogICAgICAgICBXZWJQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQoc2Ny
b2xsT2Zmc2V0LndpZHRoICogcGFnZVNjYWxlRGVsdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuaGVpZ2h0ICogcGFnZVNjYWxlRGVsdGEpOwogICAg
ICAgICBzZXRQYWdlU2NhbGVGYWN0b3IocGFnZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVEZWx0
YSwgc2NhbGVkU2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgbV9kb3VibGVUYXBab29tSW5FZmZlY3Qg
PSBmYWxzZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDRjMWE5NzRhMDVkZjQyNjYwZjlkNzM5OTM3NDgyNDJmMGE2NGIzZDYuLmZmMzRj
YzI3MGUxNjliZjVmMWM3MGE5ZDU5NmMxOTE5MWRiM2MwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNTYxLDEyICs1NjEsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgZnVsbEZyYW1lUGx1Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKTsK
IAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGNvbXB1dGVTY2FsZUFuZFNj
cm9sbEZvckhpdFJlY3QoY29uc3QgV2ViUmVjdCYgaGl0UmVjdCwgQXV0b1pvb21UeXBlLCBmbG9h
dCYgc2NhbGUsIFdlYlBvaW50JiBzY3JvbGwpOworICAgIHZvaWQgY29tcHV0ZVNjYWxlQW5kU2Ny
b2xsRm9ySGl0UmVjdChjb25zdCBXZWJSZWN0JiBoaXRSZWN0LCBBdXRvWm9vbVR5cGUsIGZsb2F0
JiBzY2FsZSwgV2ViUG9pbnQmIHNjcm9sbCwgYm9vbCYgaXNBbmNob3IpOwogICAgIFdlYkNvcmU6
Ok5vZGUqIGJlc3RUb3VjaExpbmtOb2RlKFdlYkNvcmU6OkludFBvaW50IHRvdWNoRXZlbnRMb2Nh
dGlvbik7CiAgICAgdm9pZCBlbmFibGVUb3VjaEhpZ2hsaWdodChXZWJDb3JlOjpJbnRQb2ludCB0
b3VjaEV2ZW50TG9jYXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBhbmltYXRlWm9vbUFyb3VuZFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgQXV0b1pvb21UeXBlKTsKIAorICAgIHZvaWQg
c2hvdWxkVXNlQW5pbWF0ZURvdWJsZVRhcFRpbWVaZXJvRm9yVGVzdGluZyhib29sKTsKKwogICAg
IHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKICAgICB2b2lkIGVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOwpAQCAtNzQwLDYgKzc0
MiwxMiBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3I7IC8vIDAg
bWVhbnMgdGhhdCBubyBwYWdlIHNjYWxlIGZhY3RvciBpcyBzYXZlZC4KICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fc2F2ZWRTY3JvbGxPZmZzZXQ7CiAKKyAgICAvLyBXaGV0aGVyIHRoZSBjdXJyZW50
IHNjYWxlIHdhcyBhY2hpZXZlZCBieSB6b29taW5nIGluIHdpdGggZG91YmxlIHRhcC4KKyAgICBi
b29sIG1fZG91YmxlVGFwWm9vbUluRWZmZWN0OworCisgICAgLy8gVXNlZCBmb3IgdGVzdGluZyBw
dXJwb3Nlcy4KKyAgICBib29sIG1fc2hvdWxkVXNlRG91YmxlVGFwVGltZVplcm87CisKICAgICBi
b29sIG1fY29udGV4dE1lbnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2RvaW5nRHJhZ0FuZERyb3A7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXgg
YTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5YTEwMGQ2OWM2MDZmNDAzMS4uYjI5OTRkYjgyZjE3MTZj
NjIzNTExNzUyMWI1YmM3NjM0NTMwOTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMzE2LDc2ICszMTYsMTg1IEBAIFRFU1RfRihXZWJG
cmFtZVRlc3QsIENhbk92ZXJyaWRlTWF4aW11bVNjYWxlRmFjdG9yKQogfQogCiAjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgRGl2QXV0b1pvb21UZXN0V2ViVmlld0NsaWVudCA6IHB1
YmxpYyBXZWJWaWV3Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgdmlydHVhbCBXZWJSZWN0IHdp
bmRvd1JlY3QoKSBPVkVSUklERSB7IHJldHVybiBtX3dpbmRvd1JlY3Q7IH0KKworICAgIFdlYlJl
Y3QgbV93aW5kb3dSZWN0OworfTsKKwordm9pZCBzZXRTY2FsZUFuZFNjcm9sbEFuZExheW91dChX
ZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcsIFdlYlBvaW50IHNjcm9sbCwgZmxvYXQgc2NhbGUpCit7
CisgICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBXZWJQb2ludChzY3JvbGwu
eCwgc2Nyb2xsLnkpKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKK30KKwogVEVTVF9GKFdlYkZy
YW1lVGVzdCwgRGl2QXV0b1pvb21QYXJhbXNUZXN0KQogewogICAgIHJlZ2lzdGVyTW9ja2VkSHR0
cFVSTExvYWQoImdldF9zY2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIpOwog
Ci0gICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwq
PihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZ2V0
X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sIiwgdHJ1ZSkpOwotICAgIGlu
dCBwYWdlV2lkdGggPSA2NDA7Ci0gICAgaW50IHBhZ2VIZWlnaHQgPSA0ODA7Ci0gICAgaW50IGRp
dlBvc1ggPSAyMDA7Ci0gICAgaW50IGRpdlBvc1kgPSAyMDA7Ci0gICAgaW50IGRpdldpZHRoID0g
MjAwOwotICAgIGludCBkaXZIZWlnaHQgPSAxNTA7Ci0gICAgV2ViUmVjdCBkb3VibGVUYXBQb2lu
dCgyNTAsIDI1MCwgMCwgMCk7Ci0gICAgd2ViVmlld0ltcGwtPnJlc2l6ZShXZWJTaXplKHBhZ2VX
aWR0aCwgcGFnZUhlaWdodCkpOworICAgIERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgY2xp
ZW50OworICAgIGludCB2aWV3cG9ydFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdo
dCA9IDQ4MDsKKyAgICBjbGllbnQubV93aW5kb3dSZWN0ID0gV2ViUmVjdCgwLCAwLCB2aWV3cG9y
dFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7CisgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3ID0g
RnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9z
Y2FsZV9mb3JfYXV0b196b29tX2ludG9fZGl2X3Rlc3QuaHRtbCIsIHRydWUsIDAsICZjbGllbnQp
OworICAgIHdlYlZpZXctPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJWaWV3
LT5zZXREZXZpY2VTY2FsZUZhY3RvcigyLjBmKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6
ZSh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCkpOworICAgIHdlYlZpZXctPnNldFBhZ2VT
Y2FsZUZhY3RvckxpbWl0cygwLjAxLCA0KTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKworICAg
IFdlYlJlY3Qgd2lkZURpdigyMDAsIDEwMCwgNDAwLCAxNTApOworICAgIFdlYlJlY3QgdGFsbERp
digyMDAsIDMwMCwgNDAwLCA4MDApOworICAgIFdlYlJlY3QgZG91YmxlVGFwUG9pbnRXaWRlKCh3
aWRlRGl2LnggKyA1MCkgKiB3ZWJWaWV3LT5wYWdlU2NhbGVGYWN0b3IoKSwKKyAgICAgICAgKHdp
ZGVEaXYueSArIDUwKSAqIHdlYlZpZXctPnBhZ2VTY2FsZUZhY3RvcigpLCAwLCAwKTsKKyAgICBX
ZWJSZWN0IGRvdWJsZVRhcFBvaW50VGFsbCgodGFsbERpdi54ICsgNTApICogd2ViVmlldy0+cGFn
ZVNjYWxlRmFjdG9yKCksCisgICAgICAgICh0YWxsRGl2LnkgKyA1MCkgKiB3ZWJWaWV3LT5wYWdl
U2NhbGVGYWN0b3IoKSwgMCwgMCk7CiAgICAgZmxvYXQgc2NhbGU7CiAgICAgV2ViUG9pbnQgc2Ny
b2xsOworICAgIGJvb2wgaXNBbmNob3I7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KHdlYlZpZXcpOworICAgIC8vIFRlc3QgZG91Ymxl
LXRhcCB6b29taW5nIGludG8gd2lkZSBkaXYuCisgICAgd2ViVmlld0ltcGwtPmNvbXB1dGVTY2Fs
ZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3SW1wbDo6RG91
YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAgLy8gVGhlIGRpdiBzaG91bGQg
aG9yaXpvbnRhbGx5IGZpbGwgdGhlIHNjcmVlbiAobW9kdWxvIG1hcmdpbnMpLCBhbmQKKyAgICAv
LyB2ZXJ0aWNhbGx5IGNlbnRlcmVkIChtb2R1bG8gaW50ZWdlciByb3VuZGluZykuCisgICAgRVhQ
RUNUX05FQVIodmlld3BvcnRXaWR0aCAvIChmbG9hdCkgd2lkZURpdi53aWR0aCwgc2NhbGUsIDAu
MSk7CisgICAgRVhQRUNUX05FQVIod2lkZURpdi54ICogc2NhbGUsIHNjcm9sbC54LCAyMCk7Cisg
ICAgaW50IHZTY3JvbGwgPSAod2lkZURpdi55ICsgd2lkZURpdi5oZWlnaHQgLyAyKSAqIHNjYWxl
IC0gKHZpZXdwb3J0SGVpZ2h0IC8gMik7CisgICAgRVhQRUNUX05FQVIodlNjcm9sbCwgc2Nyb2xs
LnksIDEpOworICAgIEVYUEVDVF9FUShmYWxzZSwgaXNBbmNob3IpOworCisgICAgc2V0U2NhbGVB
bmRTY3JvbGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIHNjcm9sbCwgc2NhbGUpOworCisgICAgLy8g
VGVzdCB6b29tIG91dCBiYWNrIHRvIG1pbmltdW0gc2NhbGUuCisgICAgd2ViVmlld0ltcGwtPmNv
bXB1dGVTY2FsZUFuZFNjcm9sbEZvckhpdFJlY3QoZG91YmxlVGFwUG9pbnRXaWRlLCBXZWJWaWV3
SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsLCBpc0FuY2hvcik7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAg
ICBFWFBFQ1RfRVEodHJ1ZSwgaXNBbmNob3IpOworCisgICAgc2V0U2NhbGVBbmRTY3JvbGxBbmRM
YXlvdXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCBzY2FsZSk7CisKKyAgICAvLyBUZXN0
IGRvdWJsZS10YXAgem9vbWluZyBpbnRvIHRhbGwgZGl2LgorICAgIHdlYlZpZXdJbXBsLT5jb21w
dXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50VGFsbCwgV2ViVmlld0lt
cGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIC8vIFRoZSBkaXYg
c2hvdWxkIHN0YXJ0IGF0IHRoZSB0b3AgbGVmdCBvZiB0aGUgdmlld3BvcnQuCisgICAgRVhQRUNU
X05FQVIodmlld3BvcnRXaWR0aCAvIChmbG9hdCkgdGFsbERpdi53aWR0aCwgc2NhbGUsIDAuMSk7
CisgICAgRVhQRUNUX05FQVIodGFsbERpdi54ICogc2NhbGUsIHNjcm9sbC54LCAyMCk7CisgICAg
RVhQRUNUX05FQVIodGFsbERpdi55ICogc2NhbGUsIHNjcm9sbC55LCAyMCk7CisgICAgRVhQRUNU
X0VRKGZhbHNlLCBpc0FuY2hvcik7CiAKLSAgICAvLyBUZXN0IGZvciBEb3VibGV0YXAgc2NhbGlu
ZworICAgIC8vIFRlc3QgZm9yIE5vbi1kb3VibGV0YXAgc2NhbGluZworICAgIC8vIFRlc3Qgem9v
bWluZyBpbnRvIGRpdi4KKyAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9y
SGl0UmVjdChXZWJSZWN0KDI1MCwgMjUwLCAxMCwgMTApLCBXZWJWaWV3SW1wbDo6RmluZEluUGFn
ZSwgc2NhbGUsIHNjcm9sbCwgaXNBbmNob3IpOworICAgIEVYUEVDVF9ORUFSKHZpZXdwb3J0V2lk
dGggLyAoZmxvYXQpIHdpZGVEaXYud2lkdGgsIHNjYWxlLCAwLjEpOworfQogCi0gICAgLy8gVGVz
dHMgZm9yIHpvb21pbmcgaW4gYW5kIG91dCB3aXRob3V0IGNsYW1waW5nLgotICAgIC8vIFNldCBk
ZXZpY2Ugc2NhbGUgYW5kIHNjYWxlIGxpbWl0cyBzbyB3ZSBkb250IGdldCBjbGFtcGVkLgotICAg
IHdlYlZpZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3Rvcig0KTsKLSAgICB3ZWJWaWV3SW1wbC0+
c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDAsIDQgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7Cit2b2lkIHNpbXVsYXRlRG91YmxlVGFwKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1w
bCwgV2ViUG9pbnQmIHBvaW50LCBmbG9hdCYgc2NhbGUpCit7CisgICAgV2ViUG9pbnQgc2NhbGVk
UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54ICogd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZh
Y3RvcigpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC55ICogd2ViVmlld0ltcGwt
PnBhZ2VTY2FsZUZhY3RvcigpKSk7CisgICAgd2ViVmlld0ltcGwtPmFuaW1hdGVab29tQXJvdW5k
UG9pbnQoc2NhbGVkUG9pbnQsIFdlYlZpZXdJbXBsOjpEb3VibGVUYXApOworICAgIHdlYlZpZXdJ
bXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT5sYXlvdXQoKTsKKyAgICBzY2FsZSA9
IHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KIAotICAgIC8vIFRlc3Qgem9vbWlu
ZyBpbnRvIGRpdi4KLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0
UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9s
bCk7Ci0gICAgZmxvYXQgc2NhbGVkRGl2V2lkdGggPSBkaXZXaWR0aCAqIHNjYWxlOwotICAgIGZs
b2F0IHNjYWxlZERpdkhlaWdodCA9IGRpdkhlaWdodCAqIHNjYWxlOwotICAgIGludCBoU2Nyb2xs
ID0gKChkaXZQb3NYICogc2NhbGUpIC0gKChwYWdlV2lkdGggLSBzY2FsZWREaXZXaWR0aCkgLyAy
KSkgLyBzY2FsZTsKLSAgICBpbnQgdlNjcm9sbCA9ICgoZGl2UG9zWSAqIHNjYWxlKSAtICgocGFn
ZUhlaWdodCAtIHNjYWxlZERpdkhlaWdodCkgLyAyKSkgLyBzY2FsZTsKLSAgICBFWFBFQ1RfTkVB
UihwYWdlV2lkdGggLyBkaXZXaWR0aCwgc2NhbGUsIDAuMSk7Ci0gICAgRVhQRUNUX0VRKGhTY3Jv
bGwsIHNjcm9sbC54KTsKLSAgICBFWFBFQ1RfRVEodlNjcm9sbCwgc2Nyb2xsLnkpOwotCi0gICAg
Ly8gVGVzdCB6b29tIG91dCB0byBvdmVydmlldyBzY2FsZS4KLSAgICB3ZWJWaWV3SW1wbC0+YXBw
bHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2Vi
Vmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNj
YWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2ViVmlld0ltcGw6OkRvdWJs
ZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEsIHNjYWxlKTsKLSAg
ICBFWFBFQ1RfRVEoV2ViUG9pbnQoMCwgMCksIHNjcm9sbCk7Ci0KLSAgICAvLyBUZXN0cyBmb3Ig
Y2xhbXBlZCBzY2FsaW5nLgotICAgIC8vIFRlc3QgY2xhbXAgdG8gZGV2aWNlIHNjYWxlOgotICAg
IHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xsLngsIHNjcm9s
bC55KSwgc2NhbGUgLyB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZp
ZXdJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcigyLjUpOwotICAgIHdlYlZpZXdJbXBsLT5jb21w
dXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJWaWV3SW1wbDo6
RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMi41LCBzY2Fs
ZSk7Ci0KLSAgICAvLyBUZXN0IGNsYW1wIHRvIG1pbmltdW0gc2NhbGU6Ci0gICAgd2ViVmlld0lt
cGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGwueCwgc2Nyb2xsLnkpLCBzY2Fs
ZSAvIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgd2ViVmlld0ltcGwtPnNl
dFBhZ2VTY2FsZUZhY3RvckxpbWl0cygxLjUgLyB3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSwgNCAvIHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3
SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChkb3VibGVUYXBQb2ludCwgV2Vi
Vmlld0ltcGw6OkRvdWJsZVRhcCwgc2NhbGUsIHNjcm9sbCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VR
KDEuNSwgc2NhbGUpOwotICAgIEVYUEVDVF9FUShXZWJQb2ludCgwLCAwKSwgc2Nyb2xsKTsKLQot
ICAgIC8vIFRlc3QgY2xhbXAgdG8gbWF4aW11bSBzY2FsZToKLSAgICB3ZWJWaWV3SW1wbC0+YXBw
bHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHNjYWxlIC8gd2Vi
Vmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNl
U2NhbGVGYWN0b3IoNCk7Ci0gICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0
cygwLCAzIC8gd2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHdlYlZpZXdJ
bXBsLT5jb21wdXRlU2NhbGVBbmRTY3JvbGxGb3JIaXRSZWN0KGRvdWJsZVRhcFBvaW50LCBXZWJW
aWV3SW1wbDo6RG91YmxlVGFwLCBzY2FsZSwgc2Nyb2xsKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
Mywgc2NhbGUpOworVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGl2QXV0b1pvb21NdWx0aXBsZURpdnNU
ZXN0KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImdldF9tdWx0aXBsZV9kaXZz
X2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIik7CiAKLSAgICAvLyBUZXN0IGZvciBOb24tZG91Ymxl
dGFwIHNjYWxpbmcKLSAgICB3ZWJWaWV3SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yKDEsIFdlYlBv
aW50KDAsIDApKTsKLSAgICB3ZWJWaWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoNCk7Ci0g
ICAgd2ViVmlld0ltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cygwLCA0IC8gd2ViVmlld0lt
cGwtPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIC8vIFRlc3Qgem9vbWluZyBpbnRvIGRpdi4K
LSAgICB3ZWJWaWV3SW1wbC0+Y29tcHV0ZVNjYWxlQW5kU2Nyb2xsRm9ySGl0UmVjdChXZWJSZWN0
KDI1MCwgMjUwLCAxMCwgMTApLCBXZWJWaWV3SW1wbDo6RmluZEluUGFnZSwgc2NhbGUsIHNjcm9s
bCk7Ci0gICAgRVhQRUNUX05FQVIocGFnZVdpZHRoIC8gZGl2V2lkdGgsIHNjYWxlLCAwLjEpOwor
ICAgIERpdkF1dG9ab29tVGVzdFdlYlZpZXdDbGllbnQgY2xpZW50OworICAgIGludCB2aWV3cG9y
dFdpZHRoID0gNjQwOworICAgIGludCB2aWV3cG9ydEhlaWdodCA9IDQ4MDsKKyAgICBmbG9hdCBk
b3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbyA9IDEuMjsKKyAgICBjbGllbnQubV93aW5k
b3dSZWN0ID0gV2ViUmVjdCgwLCAwLCB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7Cisg
ICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2Vi
Vmlld0FuZExvYWQobV9iYXNlVVJMICsgImdldF9tdWx0aXBsZV9kaXZzX2Zvcl9hdXRvX3pvb21f
dGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+ZW5hYmxlRml4ZWRM
YXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lk
dGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2ViVmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGlt
aXRzKDEsIDQpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYlZpZXctPnNldERldmlj
ZVNjYWxlRmFjdG9yKDEuNWYpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3Rh
dGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3KTsKKyAgICB3ZWJWaWV3SW1wbC0+c2hvdWxk
VXNlQW5pbWF0ZURvdWJsZVRhcFRpbWVaZXJvRm9yVGVzdGluZyh0cnVlKTsKKworICAgIFdlYlJl
Y3QgdG9wRGl2KDIwMCwgMTAwLCAyMDAsIDE1MCk7CisgICAgV2ViUmVjdCBib3R0b21EaXYoMjAw
LCAzMDAsIDIwMCwgMTUwKTsKKyAgICBXZWJQb2ludCB0b3BQb2ludCh0b3BEaXYueCArIDUwLCB0
b3BEaXYueSArIDUwKTsKKyAgICBXZWJQb2ludCBib3R0b21Qb2ludChib3R0b21EaXYueCArIDUw
LCBib3R0b21EaXYueSArIDUwKTsKKyAgICBmbG9hdCBzY2FsZTsKKyAgICBzZXRTY2FsZUFuZFNj
cm9sbEFuZExheW91dCh3ZWJWaWV3SW1wbCwgV2ViUG9pbnQoMCwgMCksICh3ZWJWaWV3SW1wbC0+
bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKSAqICgxICsgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdp
YmxlUmF0aW8pIC8gMik7CisKKyAgICAvLyBUZXN0IGRvdWJsZSB0YXAgb24gdHdvIGRpZmZlcmVu
dCBkaXZzCisgICAgLy8gQWZ0ZXIgZmlyc3Qgem9vbSwgd2Ugc2hvdWxkIGdvIGJhY2sgdG8gbWlu
aW11bSBwYWdlIHNjYWxlIHdpdGggYSBzZWNvbmQgZG91YmxlIHRhcC4KKyAgICBzaW11bGF0ZURv
dWJsZVRhcCh3ZWJWaWV3SW1wbCwgdG9wUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEod2ViVmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0
ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgYm90dG9tUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOwor
CisgICAgLy8gSWYgdGhlIHVzZXIgcGluY2ggem9vbXMgYWZ0ZXIgZG91YmxlIHRhcCwgYSBzZWNv
bmQgZG91YmxlIHRhcCBzaG91bGQgem9vbSBiYWNrIHRvIHRoZSBkaXYuCisgICAgc2ltdWxhdGVE
b3VibGVUYXAod2ViVmlld0ltcGwsIHRvcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKHdlYlZpZXdJbXBsLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgd2ViVmll
d0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAwLjYpOworICAgIHNpbXVsYXRl
RG91YmxlVGFwKHdlYlZpZXdJbXBsLCBib3R0b21Qb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9G
TE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworfQorCitU
RVNUX0YoV2ViRnJhbWVUZXN0LCBEaXZBdXRvWm9vbVNjYWxlQm91bmRzVGVzdCkKK3sKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJnZXRfc2NhbGVfYm91bmRzX2NoZWNrX2Zvcl9hdXRv
X3pvb21fdGVzdC5odG1sIik7CisKKyAgICBEaXZBdXRvWm9vbVRlc3RXZWJWaWV3Q2xpZW50IGNs
aWVudDsKKyAgICBpbnQgdmlld3BvcnRXaWR0aCA9IDY0MDsKKyAgICBpbnQgdmlld3BvcnRIZWln
aHQgPSA0ODA7CisgICAgZmxvYXQgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlUmF0aW8gPSAx
LjI7CisgICAgY2xpZW50Lm1fd2luZG93UmVjdCA9IFdlYlJlY3QoMCwgMCwgdmlld3BvcnRXaWR0
aCwgdmlld3BvcnRIZWlnaHQpOworICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJnZXRfc2NhbGVf
Ym91bmRzX2NoZWNrX2Zvcl9hdXRvX3pvb21fdGVzdC5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7
CisgICAgd2ViVmlldy0+ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKHRydWUpOworICAgIHdlYlZpZXct
PnJlc2l6ZShXZWJTaXplKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSk7CisgICAgd2Vi
Vmlldy0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKDEsIDQpOworICAgIHdlYlZpZXctPmxheW91
dCgpOworICAgIHdlYlZpZXctPnNldERldmljZVNjYWxlRmFjdG9yKDEuNWYpOworCisgICAgV2Vi
Vmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPih3ZWJWaWV3
KTsKKyAgICB3ZWJWaWV3SW1wbC0+c2hvdWxkVXNlQW5pbWF0ZURvdWJsZVRhcFRpbWVaZXJvRm9y
VGVzdGluZyh0cnVlKTsKKyAgICBmbG9hdCBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVTY2Fs
ZSA9IHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgKiBkb3VibGVUYXBab29t
QWxyZWFkeUxlZ2libGVSYXRpbzsKKworICAgIFdlYlJlY3QgZGl2KDIwMCwgMTAwLCAyMDAsIDE1
MCk7CisgICAgV2ViUG9pbnQgZG91YmxlVGFwUG9pbnQoZGl2LnggKyA1MCwgZGl2LnkgKyA1MCk7
CisgICAgZmxvYXQgc2NhbGU7CiAKLSAgICAvLyBEcm9wIGFueSBwZW5kaW5nIGZha2UgbW91c2Ug
ZXZlbnRzIGZyb20gem9vbWluZyBiZWZvcmUgbGVhdmluZyB0aGUgdGVzdC4KLSAgICB3ZWJWaWV3
SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmNsZWFyKCk7CisgICAg
Ly8gVGVzdCBkb3VibGUgdGFwIHNjYWxlIGJvdW5kcy4KKyAgICAvLyBtaW5pbXVtUGFnZVNjYWxl
IDwgZG91YmxlVGFwWm9vbUFscmVhZHlMZWdpYmxlU2NhbGUgPCBkZXZpY2VEcGlTY2FsZQorICAg
IHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBsLCBXZWJQb2ludCgwLCAwKSwg
KHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpICogKDEgKyBkb3VibGVUYXBa
b29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKyAgICBzaW11bGF0ZURvdWJsZVRhcCh3ZWJW
aWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEod2Vi
Vmlld0ltcGwtPmRldmljZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKKyAgICBzaW11bGF0ZURvdWJs
ZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGUpOworICAg
IHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwgc2NhbGUpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc2Nh
bGUpOworCisgICAgLy8gWm9vbSBpbiB0byByZXNldCBkb3VibGVfdGFwX3pvb21faW5fZWZmZWN0
IGZsYWcuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAx
LjEpOworICAgIC8vIGRldmljZURwaVNjYWxlIDwgbWluaW11bVBhZ2VTY2FsZSA8IGRvdWJsZVRh
cFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlCisgICAgd2ViVmlld0ltcGwtPnNldERldmljZVNjYWxl
RmFjdG9yKDAuNWYpOworICAgIHNldFNjYWxlQW5kU2Nyb2xsQW5kTGF5b3V0KHdlYlZpZXdJbXBs
LCBXZWJQb2ludCgwLCAwKSwgKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkp
ICogKDEgKyBkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVSYXRpbykgLyAyKTsKKyAgICBzaW11
bGF0ZURvdWJsZVRhcCh3ZWJWaWV3SW1wbCwgZG91YmxlVGFwUG9pbnQsIHNjYWxlKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEod2ViVmlld0ltcGwtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgc2Nh
bGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVUYXBQb2ludCwg
c2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUShkb3VibGVUYXBab29tQWxyZWFkeUxlZ2libGVT
Y2FsZSwgc2NhbGUpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVU
YXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisKKyAgICAvLyBab29tIGluIHRvIHJlc2V0IGRv
dWJsZV90YXBfem9vbV9pbl9lZmZlY3QgZmxhZy4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3Jv
bGxBbmRTY2FsZShXZWJTaXplKCksIDEuMSk7CisgICAgLy8gbWluaW11bVBhZ2VTY2FsZSA8IGRv
dWJsZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlIDwgZGV2aWNlRHBpU2NhbGUKKyAgICB3ZWJW
aWV3SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS4xZik7CisgICAgc2V0U2NhbGVBbmRTY3Jv
bGxBbmRMYXlvdXQod2ViVmlld0ltcGwsIFdlYlBvaW50KDAsIDApLCAod2ViVmlld0ltcGwtPm1p
bmltdW1QYWdlU2NhbGVGYWN0b3IoKSkgKiAoMSArIGRvdWJsZVRhcFpvb21BbHJlYWR5TGVnaWJs
ZVJhdGlvKSAvIDIpOworICAgIHNpbXVsYXRlRG91YmxlVGFwKHdlYlZpZXdJbXBsLCBkb3VibGVU
YXBQb2ludCwgc2NhbGUpOworICAgIEVYUEVDVF9GTE9BVF9FUSh3ZWJWaWV3SW1wbC0+bWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVUYXAod2ViVmll
d0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKGRvdWJs
ZVRhcFpvb21BbHJlYWR5TGVnaWJsZVNjYWxlLCBzY2FsZSk7CisgICAgc2ltdWxhdGVEb3VibGVU
YXAod2ViVmlld0ltcGwsIGRvdWJsZVRhcFBvaW50LCBzY2FsZSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKHdlYlZpZXdJbXBsLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0
X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvZ2V0X211bHRpcGxlX2RpdnNfZm9yX2F1dG9fem9vbV90ZXN0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYyZTY0NDJmYmFmYmIzNGY1M2RhZmM2NWVmODA0ZDY0ZmNkNGI5ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRf
bXVsdGlwbGVfZGl2c19mb3JfYXV0b196b29tX3Rlc3QuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMTAwcHg7IHdpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAxNTBweCI+CisgICAgICA8cCBpZD0iRGl2Ij5Ub3AgRGl2PC9wPgorICAgIDwv
ZGl2PgorICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjog
YWJzb2x1dGU7IGxlZnQ6IDIwMHB4OyB0b3A6IDMwMHB4OyB3aWR0aDogMjAwcHg7IGhlaWdodDog
MTUwcHgiPgorICAgICAgPHAgaWQ9IkRpdiI+Qm90dG9tIERpdjwvcD4KKyAgICA8L2Rpdj4KKyAg
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0Lmh0bWwgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZ2V0X3NjYWxlX2JvdW5kc19jaGVja19m
b3JfYXV0b196b29tX3Rlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2M4ZTljMTY1MDM0OGJjNmI4NTYz
ZDcyN2JhMjgwYTU2YjQ1Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9ib3VuZHNfY2hlY2tfZm9yX2F1dG9fem9vbV90ZXN0
Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKyAgPGJvZHk+CisgICAgPGRpdiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7
IHRvcDogMTAwcHg7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiA0MDBweCI+CisgICAgICA8cCBpZD0i
RGl2Ij5EaXY8L3A+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9v
bV9pbnRvX2Rpdl90ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEv
Z2V0X3NjYWxlX2Zvcl9hdXRvX3pvb21faW50b19kaXZfdGVzdC5odG1sCmluZGV4IDE4MTdkYzQ3
ZDU0YjUzYmEyYzQ2YTViMGE5YmE3NDk5ZmNhMjcwZWMuLjk1ZTdiMzc4N2Q1YzYxMDE2YmQ3Y2Ey
NTBkOGE4M2ZkNmU3NTgyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9nZXRfc2NhbGVfZm9yX2F1dG9fem9vbV9pbnRvX2Rpdl90ZXN0Lmh0bWwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2dldF9zY2FsZV9mb3JfYXV0b196b29t
X2ludG9fZGl2X3Rlc3QuaHRtbApAQCAtMSwxMyArMSwxMCBAQAogPGh0bWw+CiAgIDxib2R5Pgot
ICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBwb3NpdGlvbjogYWJzb2x1
dGU7IGxlZnQ6IDBweDsgdG9wOiAwcHg7IHdpZHRoOiA2NDBweDsgaGVpZ2h0OiA0ODBweCI+Ci0g
ICAgICA8cD5Ub3AgRGl2PC9wPgotICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
d2hpdGU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRvcDogMjAwcHg7IHdpZHRo
OiAyMDBweDsgaGVpZ2h0OiAxNTBweCI+Ci0gICAgICAgIDxwIGlkPSJpbm5lckRpdiI+RGl2IHRv
IHpvb20gdG88L3A+Ci0gICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsg
cG9zaXRpb246IGZpeGVkOyBsZWZ0OiAyMjBweDsgdG9wOiAzNTBweDsgd2lkdGg6IDE2MHB4OyBo
ZWlnaHQ6IDQwcHgiPgotICAgICAgICAgIDxwIGlkPSJpbm5lcklubmVyRGl2Ij5EaXYgTk9UIHRv
IHpvb20gdG88L3A+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9kaXY+CisgICAgPGRpdiBzdHls
ZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAw
cHg7IHRvcDogMTAwcHg7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAxNTBweCI+CisgICAgICA8cCBp
ZD0id2lkZURpdiI+V2lkZSBkaXY8L3A+CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjAwcHg7IHRv
cDogMzAwcHg7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA4MDAiPgorICAgICAgPHAgaWQ9InRhbGxE
aXYiPlRhbGwgZGl2PC9wPgogICAgIDwvZGl2PgogICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>