<?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>169498</bug_id>
          
          <creation_ts>2017-03-10 18:19:13 -0800</creation_ts>
          <short_desc>CanvasCapture should not generate a frame per each canvas draw command</short_desc>
          <delta_ts>2017-03-14 22:21:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1286030</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-10 18:19:13 -0800</bug_when>
    <thetext>CanvasCapture is generating one frame per draw command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286031</commentid>
    <comment_count>1</comment_count>
      <attachid>304111</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-10 18:20:26 -0800</bug_when>
    <thetext>Created attachment 304111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287262</commentid>
    <comment_count>2</comment_count>
      <attachid>304279</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 11:49:17 -0700</bug_when>
    <thetext>Created attachment 304279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287282</commentid>
    <comment_count>3</comment_count>
      <attachid>304279</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-13 12:15:54 -0700</bug_when>
    <thetext>Comment on attachment 304279
Patch

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

&gt; LayoutTests/ChangeLog:9
&gt; +        * fast/mediastream/captureStream/canvas2d-heavy-drawing-expected.txt: Added.

Looks like you forgot to include the results.

&gt; LayoutTests/fast/mediastream/captureStream/canvas2d-heavy-drawing.html:6
&gt; +    &lt;head&gt;
&gt; +        &lt;canvas id=&quot;canvas1&quot; width=100px height=100px&gt;&lt;/canvas&gt;
&gt; +        &lt;video id=&quot;video&quot; autoplay width=100px height=100px&gt;&lt;/video&gt;
&gt; +        &lt;canvas id=&quot;canvas2&quot; width=100px height=100px&gt;&lt;/canvas&gt;

Why are these in the &lt;head&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287312</commentid>
    <comment_count>4</comment_count>
      <attachid>304292</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 13:44:36 -0700</bug_when>
    <thetext>Created attachment 304292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287313</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 13:44:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 304279 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304279&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:9
&gt; &gt; +        * fast/mediastream/captureStream/canvas2d-heavy-drawing-expected.txt: Added.
&gt; 
&gt; Looks like you forgot to include the results.
&gt; 
&gt; &gt; LayoutTests/fast/mediastream/captureStream/canvas2d-heavy-drawing.html:6
&gt; &gt; +    &lt;head&gt;
&gt; &gt; +        &lt;canvas id=&quot;canvas1&quot; width=100px height=100px&gt;&lt;/canvas&gt;
&gt; &gt; +        &lt;video id=&quot;video&quot; autoplay width=100px height=100px&gt;&lt;/video&gt;
&gt; &gt; +        &lt;canvas id=&quot;canvas2&quot; width=100px height=100px&gt;&lt;/canvas&gt;
&gt; 
&gt; Why are these in the &lt;head&gt;?

Thanks, done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287314</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 13:45:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 304279 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304279&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:9
&gt; &gt; +        * fast/mediastream/captureStream/canvas2d-heavy-drawing-expected.txt: Added.

But, why is it that the EWS bots did not catch this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287417</commentid>
    <comment_count>7</comment_count>
      <attachid>304292</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-13 16:36:34 -0700</bug_when>
    <thetext>Comment on attachment 304292
Patch

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

&gt; LayoutTests/fast/mediastream/captureStream/canvas2d-heavy-drawing.html:24
&gt; +    	if (window.internals) {
&gt; +             assert_true((internals.canvasChangedCount - previousNumberOfCanvasChanged) &lt;= 1);
&gt; +             previousNumberOfCanvasChanged = internals.canvasChangedCount;
&gt; +        }
&gt; +        canvas2.getContext(&quot;2d&quot;).drawImage(video, 0 ,0);
&gt; +        assert_array_equals(canvas2.getContext(&quot;2d&quot;).getImageData(0 ,0, 100, 100), canvas2.getContext(&quot;2d&quot;).getImageData(0, 0, 100, 100));

Nit: indentation.

&gt; LayoutTests/fast/mediastream/captureStream/canvas2d-heavy-drawing.html:37
&gt; +    	    previousNumberOfCanvasChanged = internals.canvasChangedCount;

Ditto.

&gt; LayoutTests/fast/mediastream/captureStream/canvas2d-heavy-drawing.html:53
&gt; +    for (var i = 0 ; i &lt; 100; ++i)
&gt; +	context.fillRect(0, 0, 100, 100);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287476</commentid>
    <comment_count>8</comment_count>
      <attachid>304340</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 20:15:41 -0700</bug_when>
    <thetext>Created attachment 304340
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287482</commentid>
    <comment_count>9</comment_count>
      <attachid>304340</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 20:38:57 -0700</bug_when>
    <thetext>Comment on attachment 304340
Patch for landing

Rejecting attachment 304340 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 304340, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
4f1 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
fatal: unable to connect to git.webkit.org:
git.webkit.org[0: 54.190.50.177]: errno=Operation timed out

Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/3314280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287485</commentid>
    <comment_count>10</comment_count>
      <attachid>304340</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 21:08:11 -0700</bug_when>
    <thetext>Comment on attachment 304340
Patch for landing

Rejecting attachment 304340 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 304340, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
4f1 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
fatal: unable to connect to git.webkit.org:
git.webkit.org[0: 54.190.50.177]: errno=Operation timed out

Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/3314968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287494</commentid>
    <comment_count>11</comment_count>
      <attachid>304340</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-13 21:34:35 -0700</bug_when>
    <thetext>Comment on attachment 304340
Patch for landing

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

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:370
&gt; +void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect&amp; rect)
&gt; +{
&gt; +    if (!m_observers.size())
&gt; +        return;
&gt; +
&gt; +    m_changedRect = unionRect(m_changedRect, rect);
&gt; +    if (m_canvasChangedTimer.isActive())
&gt; +        return;
&gt; +    m_canvasChangedTimer.startOneShot(0);

Doesn&apos;t this make the canvasChanged API now asynchronous for all observers? That looks like it may affect the behavior of CSSCanvasValue::canvasChanged(), which could be web-observable via -webkit-canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287495</commentid>
    <comment_count>12</comment_count>
      <attachid>304340</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-13 21:35:17 -0700</bug_when>
    <thetext>Comment on attachment 304340
Patch for landing

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        CanvasCapture is generating too many frames

This is too vague. Too many per second? More than one per screen update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287501</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 22:07:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 304340 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304340&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:370
&gt; &gt; +void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect&amp; rect)
&gt; &gt; +{
&gt; &gt; +    if (!m_observers.size())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_changedRect = unionRect(m_changedRect, rect);
&gt; &gt; +    if (m_canvasChangedTimer.isActive())
&gt; &gt; +        return;
&gt; &gt; +    m_canvasChangedTimer.startOneShot(0);
&gt; 
&gt; Doesn&apos;t this make the canvasChanged API now asynchronous for all observers?
&gt; That looks like it may affect the behavior of
&gt; CSSCanvasValue::canvasChanged(), which could be web-observable via
&gt; -webkit-canvas.

Right, the idea is to be closer to what is happening on the screen.
Ideally, we would like to call observers whenever the canvas compositing happens.

The patch seems good for -webkit-canvas too.
I am not sure how I can add a test for it though.

(In reply to comment #12)
&gt; Comment on attachment 304340 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304340&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        CanvasCapture is generating too many frames
&gt; 
&gt; This is too vague. Too many per second? More than one per screen update?

I&apos;ll beef up the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287506</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-13 22:17:21 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; Comment on attachment 304340 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=304340&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:370
&gt; &gt; &gt; +void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect&amp; rect)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (!m_observers.size())
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    m_changedRect = unionRect(m_changedRect, rect);
&gt; &gt; &gt; +    if (m_canvasChangedTimer.isActive())
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +    m_canvasChangedTimer.startOneShot(0);
&gt; &gt; 
&gt; &gt; Doesn&apos;t this make the canvasChanged API now asynchronous for all observers?
&gt; &gt; That looks like it may affect the behavior of
&gt; &gt; CSSCanvasValue::canvasChanged(), which could be web-observable via
&gt; &gt; -webkit-canvas.
&gt; 
&gt; Right, the idea is to be closer to what is happening on the screen.
&gt; Ideally, we would like to call observers whenever the canvas compositing
&gt; happens.
&gt; 
&gt; The patch seems good for -webkit-canvas too.
&gt; I am not sure how I can add a test for it though.

I&apos;m concerned that changes made to a -webkit-canvas (see https://webkit.org/blog/176/css-canvas-drawing/) will be one frame behind after this changes.

Can you do away with the one-shot timer in HTMLCanvasElement, and just do the work when painting happens?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287519</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-13 22:38:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Comment on attachment 304340 [details]
&gt; &gt; &gt; Patch for landing
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=304340&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:370
&gt; &gt; &gt; &gt; +void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect&amp; rect)
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; &gt; +    if (!m_observers.size())
&gt; &gt; &gt; &gt; +        return;
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    m_changedRect = unionRect(m_changedRect, rect);
&gt; &gt; &gt; &gt; +    if (m_canvasChangedTimer.isActive())
&gt; &gt; &gt; &gt; +        return;
&gt; &gt; &gt; &gt; +    m_canvasChangedTimer.startOneShot(0);
&gt; &gt; &gt; 
&gt; &gt; &gt; Doesn&apos;t this make the canvasChanged API now asynchronous for all observers?
&gt; &gt; &gt; That looks like it may affect the behavior of
&gt; &gt; &gt; CSSCanvasValue::canvasChanged(), which could be web-observable via
&gt; &gt; &gt; -webkit-canvas.
&gt; &gt; 
&gt; &gt; Right, the idea is to be closer to what is happening on the screen.
&gt; &gt; Ideally, we would like to call observers whenever the canvas compositing
&gt; &gt; happens.
&gt; &gt; 
&gt; &gt; The patch seems good for -webkit-canvas too.
&gt; &gt; I am not sure how I can add a test for it though.
&gt; 
&gt; I&apos;m concerned that changes made to a -webkit-canvas (see
&gt; https://webkit.org/blog/176/css-canvas-drawing/) will be one frame behind
&gt; after this changes.

I see.
If the risk to break web sites is important, the simplest approach is to put the timer logic in CanvasCapture and not touch --webkit-canvas behavior.

&gt; Can you do away with the one-shot timer in HTMLCanvasElement, and just do
&gt; the work when painting happens?

We only want to call observers when canvas change, not for other repainting reasons.
I am not very familiar with the rendering code. From looking at the code, it was not super straightforward to do that. Not sure I will have time to precisely study that, although that would probably be a perf improvement for --webkit-canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287721</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-14 11:59:48 -0700</bug_when>
    <thetext>Another consideration here. I don&apos;t think you should ever encode a frame for WebRTC that the sender cannot see locally. In other words, you should never send frames that are not displayed on the sender&apos;s screen, so that suggests linking capture to display. 

If WebRTC can use offscreen canvases then we&apos;ll have to come up with something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287746</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-14 12:43:18 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Another consideration here. I don&apos;t think you should ever encode a frame for
&gt; WebRTC that the sender cannot see locally. In other words, you should never
&gt; send frames that are not displayed on the sender&apos;s screen, so that suggests
&gt; linking capture to display. 
&gt; 
&gt; If WebRTC can use offscreen canvases then we&apos;ll have to come up with
&gt; something else.

captureStream can be applied to offscreen canvases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287886</commentid>
    <comment_count>18</comment_count>
      <attachid>304445</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-14 16:59:22 -0700</bug_when>
    <thetext>Created attachment 304445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287887</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-14 17:00:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created attachment 304445 [details]
&gt; Patch

Moving the async logic to CanvasCapture. Another review needed then...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287969</commentid>
    <comment_count>20</comment_count>
      <attachid>304469</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-14 21:39:01 -0700</bug_when>
    <thetext>Created attachment 304469
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287985</commentid>
    <comment_count>21</comment_count>
      <attachid>304469</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 22:21:09 -0700</bug_when>
    <thetext>Comment on attachment 304469
Patch for landing

Clearing flags on attachment: 304469

Committed r213972: &lt;http://trac.webkit.org/changeset/213972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287987</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 22:21:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304111</attachid>
            <date>2017-03-10 18:20:26 -0800</date>
            <delta_ts>2017-03-13 11:49:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169498-20170310182025.patch</filename>
            <type>text/plain</type>
            <size>10693</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdjMzg3MTc3OWQzZGQy
ODhiOWM3YjM5ZTAwZTNlZWE2NWE1MDBlYy4uOGI3YzkyODkzZDJhNTVjNTZkYjY5NDVmY2JlMGE5
MmYyOTI4NDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTAzLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBmaXgxNjk0OTgKKworICAg
ICAgICBDYW52YXNDYXB0dXJlIGlzIGdlbmVyYXRpbmcgdG9vIG1hbnkgZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlh
c3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCisKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZl
cnNDYW52YXNDaGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFz
RWxlbWVudDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6Om9ic2VydmVDYW52YXMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCisyMDE3LTAzLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBNYWtlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnR5cGUgYW4gZW51bSBjbGFzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4
IDNlYzcxYzE2ZjQ4MTE2MWU1MDU0MjdjN2M4YTM2MTBmNTY0ODY2M2UuLjcwMGMzZDE0NzBhMjA4
YzAzNTBkMDE4YWNhY2ExMjI5YmE0MmVjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAt
NzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2FuY2VsKSBcCiAg
ICAgbWFjcm8oY2FucGxheSkgXAogICAgIG1hY3JvKGNhbnBsYXl0aHJvdWdoKSBcCisgICAgbWFj
cm8oY2FudmFzQ2hhbmdlZCkgXAogICAgIG1hY3JvKGNoYW5nZSkgXAogICAgIG1hY3JvKGNoYXJn
aW5nY2hhbmdlKSBcCiAgICAgbWFjcm8oY2hhcmdpbmd0aW1lY2hhbmdlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDRiNTFlZmU5Yzc0Zjk4OTJjMGUy
YWQ0ZmFmMzBkOTE1YWM3NjVmYTguLjUxNTk4ZTA4ZTU3OGYzMWU0YzNhMTAzMDg5ODgzMGQ1ZTUy
MGFhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05
OSw2ICs5OSw3IEBAIHN0YXRpYyBzaXplX3QgYWN0aXZlUGl4ZWxNZW1vcnkgPSAwOwogCiBIVE1M
Q2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCisgICAgLCBtX2NhbnZhc0NoYW5nZWRUaW1lcigqdGhpcywgJkhUTUxDYW52YXNFbGVt
ZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkVGltZXJGaXJlZCkKICAgICAsIG1fc2l6
ZShkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
Y2FudmFzVGFnKSk7CkBAIC0zMTgsMTAgKzMxOSwyMiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50
OjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBub3RpZnlPYnNlcnZlcnNDYW52
YXNDaGFuZ2VkKGRpcnR5UmVjdCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlm
eU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRpbWVyRmlyZWQoKQog
ewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2
ZXItPmNhbnZhc0NoYW5nZWQoKnRoaXMsIHJlY3QpOworICAgICAgICBvYnNlcnZlci0+Y2FudmFz
Q2hhbmdlZCgqdGhpcywgbV9jaGFuZ2VkUmVjdCk7Cit9CisKKwordm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKCFtX29ic2VydmVycy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY2hhbmdlZFJlY3QgPSB1bmlvblJlY3QobV9jaGFuZ2VkUmVjdCwgcmVjdCk7CisgICAgaWYg
KG1fY2FudmFzQ2hhbmdlZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NhbnZhc0NoYW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgSFRNTENhbnZh
c0VsZW1lbnQ6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApp
bmRleCBjZTA2ZmZiMWI1NzI4MGU4ZjAyNWRmNzY4MTFlYjY0ZmM4MjE2ZDM4Li45ZGEyYzc0Mzgy
ZDg1YjlhZmQwNmI1ZDk5YTZiOTAwOTFhYjQ2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtMTA5LDYgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcK
ICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNl
cnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgbm90aWZ5T2Jz
ZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCkBAIC0xNzcsNiArMTc5LDggQEAgcHJp
dmF0ZToKICAgICBib29sIGlzM0QoKSBjb25zdDsKICNlbmRpZgogCisgICAgRmxvYXRSZWN0IG1f
Y2hhbmdlZFJlY3Q7CisgICAgVGltZXIgbV9jYW52YXNDaGFuZ2VkVGltZXI7CiAgICAgSGFzaFNl
dDxDYW52YXNPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYW52
YXNSZW5kZXJpbmdDb250ZXh0PiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBiNzhmMWRjYjk5ODQ5OTdhY2Y5MGRiMzU3YTM4ZjUzN2EzMGQ4ZmMzLi5i
MjhjZTNiOWUzZWM3NDcxNzI2ODU1ODI5NTM4YzFkZGRhMTc3NjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNzYsNiArMzc2LDggQEAgUmVmPEludGVybmFscz4gSW50
ZXJuYWxzOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBJbnRlcm5hbHM6On5JbnRlcm5h
bHMoKQogeworICAgIGlmIChtX2NhbnZhcykKKyAgICAgICAgbV9jYW52YXMtPnJlbW92ZU9ic2Vy
dmVyKCp0aGlzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUo
UGFnZSYgcGFnZSkKQEAgLTM4MDcsNSArMzgwOSwxMSBAQCB2b2lkIEludGVybmFsczo6c2ltdWxh
dGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiB9CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6Om9ic2VydmVDYW52YXMoSFRNTENhbnZhc0Vs
ZW1lbnQmIGNhbnZhcykKK3sKKyAgICBtX2NhbnZhc0NoYW5nZWROdW1iZXIgPSAwOworICAgIG1f
Y2FudmFzID0gJmNhbnZhczsKKyAgICBjYW52YXMuYWRkT2JzZXJ2ZXIoKnRoaXMpOworfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBk
OGEzZmQ0NTBkMDQ4NDljYzcyNjc1OGRlNjJiN2EyNTI1M2ZlMzhhLi5kYjU0NGFhNDUxMWI0YjZl
MTA5ZTUwMzc5YTgwMzBmNTA2MjgyNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJQ
YWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CiAK
QEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgVHlwZUNvbnZlcnNpb25zOwogY2xhc3MgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCi1jbGFzcyBJbnRlcm5h
bHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+LCBwcml2YXRlIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPEludGVybmFscz4sICBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBw
cml2YXRlIENhbnZhc09ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEludGVybmFs
cz4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SW50ZXJuYWxzKCk7CkBAIC01NDMs
NiArNTQ0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2Vk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICNlbmRpZgogCisgICAgdW5zaWduZWQgbG9u
ZyBjYW52YXNDaGFuZ2VkTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jYW52YXNDaGFuZ2VkTnVt
YmVyOyB9CisgICAgdm9pZCBvYnNlcnZlQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50Jik7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9jdW1lbnQq
IGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNTUwLDcgKzU1NCwxNCBAQCBwcml2YXRlOgog
CiAgICAgRXhjZXB0aW9uT3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+IG1hcmtlckF0KE5vZGUm
LCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4KTsKIAorICAgIC8vIENh
bnZhcyBub3RpZmllciBBUEkKKyAgICB2b2lkIGNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1l
bnQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IG1fY2FudmFzQ2hhbmdlZE51bWJlcisrOyB9
CisgICAgdm9pZCBjYW52YXNSZXNpemVkKEhUTUxDYW52YXNFbGVtZW50JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0VsZW1lbnQmKSBmaW5hbCB7IG1fY2Fu
dmFzID0gbnVsbHB0cjsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9u
dGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsKKyAgICB1bnNpZ25lZCBsb25nIG1fY2FudmFzQ2hh
bmdlZE51bWJlciB7IDAgfTsKKyAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IG1fY2FudmFz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IDYwYjdkYTZjODdjNmRmMTVhZTNlNWJkMDdiZmY3ODU2MGZkY2NjNTYuLjM5
YjMwNWE1YTQ1NWM1NWMzYzIxYmYyOTRjNDNkN2NjZmFlYWJlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdC
ZWhhdmlvciB7CiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQs
CiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCi1dIGludGVyZmFjZSBJbnRlcm5hbHMgeworXSBpbnRl
cmZhY2UgSW50ZXJuYWxzIDogRXZlbnRUYXJnZXQgewogICAgIERPTVN0cmluZyBhZGRyZXNzKE5v
ZGUgbm9kZSk7CiAgICAgYm9vbGVhbiBub2RlTmVlZHNTdHlsZVJlY2FsYyhOb2RlIG5vZGUpOwog
ICAgIERPTVN0cmluZyBzdHlsZUNoYW5nZVR5cGUoTm9kZSBub2RlKTsKQEAgLTUxNCw0ICs1MTQs
NyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICB2b2lkIGRpc2FibGVUaWxl
U2l6ZVVwZGF0ZURlbGF5KCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIHZvaWQgc2ltdWxh
dGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgY29udGV4dCk7
CisKKyAgICB2b2lkIG9ic2VydmVDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQgY2FudmFzKTsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjYW52YXNDaGFuZ2VkTnVtYmVyOwog
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5YjJkOTc5MDBiZDMwYmE4MzhiMzM5ZTFmZGNjYjlmNDVmZWYyZjQ4Li5kMmM0
ZGFkYjRjOGEwOTRmYTQ4ZTE3N2QzZDVjNTZlOWU5MDgwNjRlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYg
QEAKIDIwMTctMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAg
ICAgIGZpeDE2OTQ5OAorCisgICAgICAgIENhbnZhc0NhcHR1cmUgaXMgZ2VuZXJhdGluZyB0b28g
bWFueSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdp
bmcuaHRtbDogQWRkZWQuCisKKzIwMTctMDMtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCiAgICAgICAgIE1vdmUgbGlid2VicnRjIGJhY2tlbmQgdG8gdXNpbmcgdHJhY2tz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NzIK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFt
L2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3aW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2IzMDVkZTk1OTAzOTE0NTBkZTc0OTA1N2Y5ODk4YmY1MjExZGFkNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1o
ZWF2eS1kcmF3aW5nLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxj
YW52YXMgaWQ9ImNhbnZhczEiIHdpZHRoPTEwMHB4IGhlaWdodD0xMDBweD48L2NhbnZhcz4KKyAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgYXV0b3BsYXkgd2lkdGg9MTAwcHggaGVpZ2h0PTEwMHB4
PjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhczIiIHdpZHRoPTEwMHB4IGhlaWdo
dD0xMDBweD48L2NhbnZhcz4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorCit2YXIgY2FudmFzMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMxIik7
Cit2YXIgY2FudmFzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMyIik7Cit2YXIg
dmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKKwordmFyIHByZXZpb3Vz
TnVtYmVyT2ZDYW52YXNDaGFuZ2VkID0gMAorZnVuY3Rpb24gdmFsaWRhdGVDYW52YXMocmVzb2x2
ZSwgcmVqZWN0KQoreworICAgIHRyeSB7CisgICAgCWlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoKGludGVybmFscy5jYW52YXNDaGFuZ2VkTnVtYmVyIC0g
cHJldmlvdXNOdW1iZXJPZkNhbnZhc0NoYW5nZWQpIDw9IDEpOworICAgICAgICAgICAgIHByZXZp
b3VzTnVtYmVyT2ZDYW52YXNDaGFuZ2VkID0gaW50ZXJuYWxzLmNhbnZhc0NoYW5nZWROdW1iZXI7
CisgICAgICAgIH0KKyAgICAgICAgY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh2
aWRlbywgMCAsMCk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FudmFzMi5nZXRDb250
ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwICwwLCAxMDAsIDEwMCksIGNhbnZhczIuZ2V0Q29udGV4
dCgiMmQiKS5nZXRJbWFnZURhdGEoMCwgMCwgMTAwLCAxMDApKTsKKyAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgcmVqZWN0KGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNldFRpbWVv
dXQoKCkgPT4geyB2YWxpZGF0ZUNhbnZhcyhyZWplY3QsIHJlc29sdmUpOyB9LCA1KTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tDYW52YXMoY2FudmFzLCBzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0g
c3RyZWFtOworICAgICAgICB2aWRlby5vbnBsYXkgPSAoKSA9PiB7CisgICAgICAgICAgICB2YWxp
ZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNv
bHZlLCA1MDApOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBjcHRyID0gMDsKK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5vYnNlcnZlQ2FudmFzKGNhbnZhczEpOwor
CitmdW5jdGlvbiBwcmludExpbmUoKQoreworICAgIHZhciBjb250ZXh0ID0gY2FudmFzMS5nZXRD
b250ZXh0KCIyZCIpOworICAgIGNvbnRleHQuZmlsbFN0eWxlPSJyZWQiOworICAgIGZvciAodmFy
IGkgPSAwIDsgaSA8IDEwMDsgKytpKQorCWNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDAp
OworCisgICAgY3B0ciArPSA1OworICAgIGlmIChjcHRyID4gMjU1KQorICAgICAgICBjcHRyID0g
MDsKKyAgICBjb250ZXh0LmZpbGxTdHlsZT0icmdiKDAsICIgKyBjcHRyICsgIiwgMCkiOworICAg
IGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIHNldFRpbWVvdXQocHJpbnRM
aW5lLCAxMDApOworfQorCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICB2YXIgc3RyZWFt
ID0gY2FudmFzMS5jYXB0dXJlU3RyZWFtKCk7CisKKyAgICBwcm9taXNlID0gY2hlY2tDYW52YXMo
Y2FudmFzMSwgc3RyZWFtKTsKKworICAgIHByaW50TGluZSgpOworCisgICAgcmV0dXJuIHByb21p
c2U7Cit9LCAiY2FwdHVyZVN0cmVhbSB3aXRoIDJkIGNvbnRleHQgZHJhd2luZyIpOworICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304279</attachid>
            <date>2017-03-13 11:49:17 -0700</date>
            <delta_ts>2017-03-13 13:44:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169498-20170313114917.patch</filename>
            <type>text/plain</type>
            <size>11087</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjODdhYjdlZDZmNmUy
OTBhNjdkOTZkNzk1MzJiYzNkYTM3ZDc2Ni4uMTVhYTgzOGUyNTgyNzEzNDlmZDUyNzBhNGY2NDZl
MjlhZTBjY2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXNDYXB0dXJlIGlz
IGdlbmVyYXRpbmcgdG9vIG1hbnkgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0v
Y2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCisKKyAgICAgICAgTWFraW5nIENhbnZhc09ic2Vy
dmVycyBiZSBub3RpZmllZCBhc3luY2hyb25vdXNseSBvZiBjYW52YXMgY2hhbmdlcy4KKyAgICAg
ICAgVGhpcyBlbnN1cmVzIHRoYXQgb25lIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGRvbmUgZm9yIGEg
c2V0IG9mIHN5bmNocm9ub3VzIGRyYXcgY29tbWFuZHMuCisKKyAgICAgICAgQWRkaW5nIGFuIGlu
dGVybmFsIEFQSSB0byB0ZXN0IHRoYXQuCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFz
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6bm90aWZ5T2Jz
ZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6On5JbnRlcm5hbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpvYnNlcnZlQ2FudmFzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0xMyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ29t
cGlsZSBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5k
ZXggNGYxMjU2OWJjN2UxMDIzNGE3OWRiODk2MTM2NDM2MThjZDM0NDQ3Yy4uNmY1MjQxMjcyODZh
NDZjNDhjNmE2MGE4MTYzMmM5Y2ZiOGY0MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBzdGF0aWMgc2l6ZV90IGFjdGl2
ZVBpeGVsTWVtb3J5ID0gMDsKIAogSFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwgbV9jYW52YXNDaGFuZ2VkVGlt
ZXIoKnRoaXMsICZIVE1MQ2FudmFzRWxlbWVudDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdl
ZFRpbWVyRmlyZWQpCiAgICAgLCBtX3NpemUoZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNhbnZhc1RhZykpOwpAQCAtMzUyLDEwICszNTMsMjEg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChkaXJ0eVJlY3QpOwogfQogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3ZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2VydmVyc0Nh
bnZhc0NoYW5nZWRUaW1lckZpcmVkKCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5jYW52YXNDaGFuZ2VkKCp0aGlzLCByZWN0KTsK
KyAgICAgICAgb2JzZXJ2ZXItPmNhbnZhc0NoYW5nZWQoKnRoaXMsIG1fY2hhbmdlZFJlY3QpOwor
fQorCit2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2Vk
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1fb2JzZXJ2ZXJzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jaGFuZ2VkUmVjdCA9IHVuaW9uUmVjdChtX2NoYW5n
ZWRSZWN0LCByZWN0KTsKKyAgICBpZiAobV9jYW52YXNDaGFuZ2VkVGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY2FudmFzQ2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIAogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDIyY2RlZjkzZmNiYjRmYjVkZTUyOWNjNzlmOGIw
YTM1NWZlMjY3MjguLmY1NTMwOTQ5ZDU3ZTg5ZGQ4Yzc1MDUyOGEzNTJmNTExNjMxNTlmOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC02OSw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTENhbnZhc0VsZW1lbnQoKTsKIAotICAgIHZv
aWQgYWRkT2JzZXJ2ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KENhbnZhc09ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihD
YW52YXNPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIo
Q2FudmFzT2JzZXJ2ZXImKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
c2l6ZSgpLndpZHRoKCk7IH0KICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBz
aXplKCkuaGVpZ2h0KCk7IH0KQEAgLTExMyw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNl
ZCBmb3IgcmVuZGVyaW5nCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWRUaW1lckZpcmVkKCk7CiAKICAgICB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtMTg0
LDYgKzE4Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0dQVSgpIGNvbnN0OwogI2VuZGlmCiAK
KyAgICBGbG9hdFJlY3QgbV9jaGFuZ2VkUmVjdDsKKyAgICBUaW1lciBtX2NhbnZhc0NoYW5nZWRU
aW1lcjsKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAppbmRleCBlZTM4YjU1ZmM3YzQ0NDA0
YzVlYjhiNTBlZmE3NDYzZGIyYWUyMzUxLi4wNGVkZTJiOWYwNzBlZWM2Yzk3ZDNhMjlhNjdmYjk4
NTVjM2U5ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbApA
QCAtMjcsNiArMjcsNyBAQAogdHlwZWRlZiAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIG9yIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpIFJlbmRlcmluZ0NvbnRleHQ7CiAKIFsKKyAgICBFeHBv
cnRUb1dyYXBwZWRGdW5jdGlvbiwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
UmVwb3J0RXh0cmFNZW1vcnlDb3N0LAogICAgIFJlcG9ydEV4dGVybmFsTWVtb3J5Q29zdCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzZGNiNTMwNjAyYzE3M2JkYmNhZGMz
NGY0MmE5ZTgyMmQ2YzYyZmIxLi42YmVmYzQwYWI0ZTc1ZDJhZWViMmNiN2VlMTc2MGZkNjU0MzYx
YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNzYsNiArMzc2LDgg
QEAgUmVmPEludGVybmFscz4gSW50ZXJuYWxzOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
CiBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogeworICAgIGlmIChtX2NhbnZhcykKKyAgICAgICAg
bV9jYW52YXMtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJl
c2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKQEAgLTM4MjQsNSArMzgyNiwxMSBAQCB2
b2lkIEludGVybmFsczo6c2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiB9CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6Om9ic2Vy
dmVDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKK3sKKyAgICBtX2NhbnZhc0NoYW5n
ZWRDb3VudCA9IDA7CisgICAgbV9jYW52YXMgPSAmY2FudmFzOworICAgIGNhbnZhcy5hZGRPYnNl
cnZlcigqdGhpcyk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDFmZGQ3OTQ3YTkyM2VlNDhkOGNjZGJhNTA2NjY0Yjc5YTBkNzUx
Y2IuLjdlZmZiMjAzZTMxZmExOTJmYmMxNjQzZGQ2OTkzMDdjOWM2NzU3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9GbG9hdDMyQXJyYXkuaD4KIApAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBUeXBlQ29udmVyc2lv
bnM7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogY2xhc3MgWE1MSHR0cFJlcXVl
c3Q7CiAKLWNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFs
cz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgSW50ZXJuYWxz
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgIHByaXZhdGUgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIsIHByaXZhdGUgQ2FudmFzT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5J
bnRlcm5hbHMoKTsKQEAgLTU0NCw2ICs1NDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0
ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogI2VuZGlm
CiAKKyAgICB1bnNpZ25lZCBsb25nIGNhbnZhc0NoYW5nZWRDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FudmFzQ2hhbmdlZENvdW50OyB9CisgICAgdm9pZCBvYnNlcnZlQ2FudmFzKEhUTUxDYW52
YXNFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50
Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNTUxLDcgKzU1
NSwxNCBAQCBwcml2YXRlOgogCiAgICAgRXhjZXB0aW9uT3I8UmVuZGVyZWREb2N1bWVudE1hcmtl
cio+IG1hcmtlckF0KE5vZGUmLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGlu
ZGV4KTsKIAorICAgIC8vIENhbnZhcyBub3RpZmllciBBUEkKKyAgICB2b2lkIGNhbnZhc0NoYW5n
ZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IG1fY2FudmFz
Q2hhbmdlZENvdW50Kys7IH0KKyAgICB2b2lkIGNhbnZhc1Jlc2l6ZWQoSFRNTENhbnZhc0VsZW1l
bnQmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNhbnZhc0Rlc3Ryb3llZChIVE1MQ2FudmFzRWxlbWVu
dCYpIGZpbmFsIHsgbV9jYW52YXMgPSBudWxscHRyOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOworICAgIHVuc2lnbmVk
IGxvbmcgbV9jYW52YXNDaGFuZ2VkQ291bnQgeyAwIH07CisgICAgUmVmUHRyPEhUTUxDYW52YXNF
bGVtZW50PiBtX2NhbnZhczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjYWI0ZDIyM2U2Yzk3MWVkNTFmZDk4YjUxNjAw
ZTBkYzE4YzI0MDMwLi40MTBiMTRjODVhMjhiMDdmMTY2ZGU1YWQyZGEwYmMwZmE3NmQwMThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MTYsNCArNTE2LDcgQEAgZW51
bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgdm9pZCBkaXNhYmxlVGlsZVNpemVVcGRh
dGVEZWxheSgpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSB2b2lkIHNpbXVsYXRlV2ViR0xD
b250ZXh0Q2hhbmdlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGNvbnRleHQpOworCisgICAg
dm9pZCBvYnNlcnZlQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcyk7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2FudmFzQ2hhbmdlZENvdW50OwogfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBkMjFjMTUzMmU0YWM1NzJkZDM4ODJmMGVkMjI0NDkyYzdlOGI3MTM0Li5kNmE5NDA2NDhkNzQ2
ZTNmOWNkM2RlMTU2MjQ4MmU2YTllY2EyYjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDMtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIENhbnZh
c0NhcHR1cmUgaXMgZ2VuZXJhdGluZyB0b28gbWFueSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJl
U3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAxNy0wMy0xMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJl
Z29AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnByZWZpeCAtd2Via2l0LW1pbi1jb250ZW50LCAt
d2Via2l0LW1heC1jb250ZW50IGFuZCAtd2Via2l0LWZpdC1jb250ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnkt
ZHJhd2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFt
L2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjFkZjdlNzFlMGU3ZjYx
NGJhMjg1MmMyNGY1YzcyYjE0NzQyZmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRt
bApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFz
MSIgd2lkdGg9MTAwcHggaGVpZ2h0PTEwMHB4PjwvY2FudmFzPgorICAgICAgICA8dmlkZW8gaWQ9
InZpZGVvIiBhdXRvcGxheSB3aWR0aD0xMDBweCBoZWlnaHQ9MTAwcHg+PC92aWRlbz4KKyAgICAg
ICAgPGNhbnZhcyBpZD0iY2FudmFzMiIgd2lkdGg9MTAwcHggaGVpZ2h0PTEwMHB4PjwvY2FudmFz
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKK3ZhciBjYW52
YXMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczEiKTsKK3ZhciBjYW52YXMyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsKK3ZhciB2aWRlbyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOworCit2YXIgcHJldmlvdXNOdW1iZXJPZkNhbnZhc0No
YW5nZWQgPSAwCitmdW5jdGlvbiB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpCit7Cisg
ICAgdHJ5IHsKKyAgICAJaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZSgoaW50ZXJuYWxzLmNhbnZhc0NoYW5nZWRDb3VudCAtIHByZXZpb3VzTnVtYmVyT2ZD
YW52YXNDaGFuZ2VkKSA8PSAxKTsKKyAgICAgICAgICAgICBwcmV2aW91c051bWJlck9mQ2FudmFz
Q2hhbmdlZCA9IGludGVybmFscy5jYW52YXNDaGFuZ2VkQ291bnQ7CisgICAgICAgIH0KKyAgICAg
ICAgY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh2aWRlbywgMCAsMCk7CisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdl
RGF0YSgwICwwLCAxMDAsIDEwMCksIGNhbnZhczIuZ2V0Q29udGV4dCgiMmQiKS5nZXRJbWFnZURh
dGEoMCwgMCwgMTAwLCAxMDApKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgcmVqZWN0KGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNldFRpbWVvdXQoKCkgPT4geyB2YWxpZGF0
ZUNhbnZhcyhyZWplY3QsIHJlc29sdmUpOyB9LCA1KTsKK30KKworZnVuY3Rpb24gY2hlY2tDYW52
YXMoY2FudmFzLCBzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtOworICAgICAgICB2
aWRlby5vbnBsYXkgPSAoKSA9PiB7CisgICAgCSAgICBwcmV2aW91c051bWJlck9mQ2FudmFzQ2hh
bmdlZCA9IGludGVybmFscy5jYW52YXNDaGFuZ2VkQ291bnQ7CisgICAgICAgICAgICB2YWxpZGF0
ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZl
LCA1MDApOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBjcHRyID0gMDsKK2lmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5vYnNlcnZlQ2FudmFzKGNhbnZhczEpOworCitm
dW5jdGlvbiBwcmludExpbmUoKQoreworICAgIHZhciBjb250ZXh0ID0gY2FudmFzMS5nZXRDb250
ZXh0KCIyZCIpOworICAgIGNvbnRleHQuZmlsbFN0eWxlPSJyZWQiOworICAgIGZvciAodmFyIGkg
PSAwIDsgaSA8IDEwMDsgKytpKQorCWNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOwor
CisgICAgY3B0ciArPSA1OworICAgIGlmIChjcHRyID4gMjU1KQorICAgICAgICBjcHRyID0gMDsK
KyAgICBjb250ZXh0LmZpbGxTdHlsZT0icmdiKDAsICIgKyBjcHRyICsgIiwgMCkiOworICAgIGNv
bnRleHQuZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIHNldFRpbWVvdXQocHJpbnRMaW5l
LCAxMDApOworfQorCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICB2YXIgc3RyZWFtID0g
Y2FudmFzMS5jYXB0dXJlU3RyZWFtKCk7CisgICAgcHJvbWlzZSA9IGNoZWNrQ2FudmFzKGNhbnZh
czEsIHN0cmVhbSk7CisKKyAgICBwcmludExpbmUoKTsKKworICAgIHJldHVybiBwcm9taXNlOwor
fSwgImNhcHR1cmVTdHJlYW0gd2l0aCAyZCBjb250ZXh0IGRyYXdpbmciKTsKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304292</attachid>
            <date>2017-03-13 13:44:36 -0700</date>
            <delta_ts>2017-03-13 20:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169498-20170313134436.patch</filename>
            <type>text/plain</type>
            <size>11539</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFjODdhYjdlZDZmNmUy
OTBhNjdkOTZkNzk1MzJiYzNkYTM3ZDc2Ni4uMTVhYTgzOGUyNTgyNzEzNDlmZDUyNzBhNGY2NDZl
MjlhZTBjY2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXNDYXB0dXJlIGlz
IGdlbmVyYXRpbmcgdG9vIG1hbnkgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0v
Y2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCisKKyAgICAgICAgTWFraW5nIENhbnZhc09ic2Vy
dmVycyBiZSBub3RpZmllZCBhc3luY2hyb25vdXNseSBvZiBjYW52YXMgY2hhbmdlcy4KKyAgICAg
ICAgVGhpcyBlbnN1cmVzIHRoYXQgb25lIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGRvbmUgZm9yIGEg
c2V0IG9mIHN5bmNocm9ub3VzIGRyYXcgY29tbWFuZHMuCisKKyAgICAgICAgQWRkaW5nIGFuIGlu
dGVybmFsIEFQSSB0byB0ZXN0IHRoYXQuCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFz
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6bm90aWZ5T2Jz
ZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6On5JbnRlcm5hbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpvYnNlcnZlQ2FudmFzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0xMyAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ29t
cGlsZSBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5k
ZXggNGYxMjU2OWJjN2UxMDIzNGE3OWRiODk2MTM2NDM2MThjZDM0NDQ3Yy4uNmY1MjQxMjcyODZh
NDZjNDhjNmE2MGE4MTYzMmM5Y2ZiOGY0MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBzdGF0aWMgc2l6ZV90IGFjdGl2
ZVBpeGVsTWVtb3J5ID0gMDsKIAogSFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwgbV9jYW52YXNDaGFuZ2VkVGlt
ZXIoKnRoaXMsICZIVE1MQ2FudmFzRWxlbWVudDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdl
ZFRpbWVyRmlyZWQpCiAgICAgLCBtX3NpemUoZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNhbnZhc1RhZykpOwpAQCAtMzUyLDEwICszNTMsMjEg
QEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChkaXJ0eVJlY3QpOwogfQogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3ZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2VydmVyc0Nh
bnZhc0NoYW5nZWRUaW1lckZpcmVkKCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5jYW52YXNDaGFuZ2VkKCp0aGlzLCByZWN0KTsK
KyAgICAgICAgb2JzZXJ2ZXItPmNhbnZhc0NoYW5nZWQoKnRoaXMsIG1fY2hhbmdlZFJlY3QpOwor
fQorCit2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2Vk
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1fb2JzZXJ2ZXJzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jaGFuZ2VkUmVjdCA9IHVuaW9uUmVjdChtX2NoYW5n
ZWRSZWN0LCByZWN0KTsKKyAgICBpZiAobV9jYW52YXNDaGFuZ2VkVGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY2FudmFzQ2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIAogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDIyY2RlZjkzZmNiYjRmYjVkZTUyOWNjNzlmOGIw
YTM1NWZlMjY3MjguLmY1NTMwOTQ5ZDU3ZTg5ZGQ4Yzc1MDUyOGEzNTJmNTExNjMxNTlmOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC02OSw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTENhbnZhc0VsZW1lbnQoKTsKIAotICAgIHZv
aWQgYWRkT2JzZXJ2ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KENhbnZhc09ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihD
YW52YXNPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIo
Q2FudmFzT2JzZXJ2ZXImKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
c2l6ZSgpLndpZHRoKCk7IH0KICAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBz
aXplKCkuaGVpZ2h0KCk7IH0KQEAgLTExMyw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNl
ZCBmb3IgcmVuZGVyaW5nCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2b2lkIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWRUaW1lckZpcmVkKCk7CiAKICAgICB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmKTsKIApAQCAtMTg0
LDYgKzE4Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0dQVSgpIGNvbnN0OwogI2VuZGlmCiAK
KyAgICBGbG9hdFJlY3QgbV9jaGFuZ2VkUmVjdDsKKyAgICBUaW1lciBtX2NhbnZhc0NoYW5nZWRU
aW1lcjsKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAppbmRleCBlZTM4YjU1ZmM3YzQ0NDA0
YzVlYjhiNTBlZmE3NDYzZGIyYWUyMzUxLi4wNGVkZTJiOWYwNzBlZWM2Yzk3ZDNhMjlhNjdmYjk4
NTVjM2U5ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbApA
QCAtMjcsNiArMjcsNyBAQAogdHlwZWRlZiAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIG9yIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpIFJlbmRlcmluZ0NvbnRleHQ7CiAKIFsKKyAgICBFeHBv
cnRUb1dyYXBwZWRGdW5jdGlvbiwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
UmVwb3J0RXh0cmFNZW1vcnlDb3N0LAogICAgIFJlcG9ydEV4dGVybmFsTWVtb3J5Q29zdCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzZGNiNTMwNjAyYzE3M2JkYmNhZGMz
NGY0MmE5ZTgyMmQ2YzYyZmIxLi42YmVmYzQwYWI0ZTc1ZDJhZWViMmNiN2VlMTc2MGZkNjU0MzYx
YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNzYsNiArMzc2LDgg
QEAgUmVmPEludGVybmFscz4gSW50ZXJuYWxzOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
CiBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogeworICAgIGlmIChtX2NhbnZhcykKKyAgICAgICAg
bV9jYW52YXMtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJl
c2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKQEAgLTM4MjQsNSArMzgyNiwxMSBAQCB2
b2lkIEludGVybmFsczo6c2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiB9CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6Om9ic2Vy
dmVDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKK3sKKyAgICBtX2NhbnZhc0NoYW5n
ZWRDb3VudCA9IDA7CisgICAgbV9jYW52YXMgPSAmY2FudmFzOworICAgIGNhbnZhcy5hZGRPYnNl
cnZlcigqdGhpcyk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IDFmZGQ3OTQ3YTkyM2VlNDhkOGNjZGJhNTA2NjY0Yjc5YTBkNzUx
Y2IuLjdlZmZiMjAzZTMxZmExOTJmYmMxNjQzZGQ2OTkzMDdjOWM2NzU3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9GbG9hdDMyQXJyYXkuaD4KIApAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBUeXBlQ29udmVyc2lv
bnM7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogY2xhc3MgWE1MSHR0cFJlcXVl
c3Q7CiAKLWNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFs
cz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgSW50ZXJuYWxz
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgIHByaXZhdGUgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIsIHByaXZhdGUgQ2FudmFzT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5J
bnRlcm5hbHMoKTsKQEAgLTU0NCw2ICs1NDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0
ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogI2VuZGlm
CiAKKyAgICB1bnNpZ25lZCBsb25nIGNhbnZhc0NoYW5nZWRDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FudmFzQ2hhbmdlZENvdW50OyB9CisgICAgdm9pZCBvYnNlcnZlQ2FudmFzKEhUTUxDYW52
YXNFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50
Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpAQCAtNTUxLDcgKzU1
NSwxNCBAQCBwcml2YXRlOgogCiAgICAgRXhjZXB0aW9uT3I8UmVuZGVyZWREb2N1bWVudE1hcmtl
cio+IG1hcmtlckF0KE5vZGUmLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGlu
ZGV4KTsKIAorICAgIC8vIENhbnZhcyBub3RpZmllciBBUEkKKyAgICB2b2lkIGNhbnZhc0NoYW5n
ZWQoSFRNTENhbnZhc0VsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IG1fY2FudmFz
Q2hhbmdlZENvdW50Kys7IH0KKyAgICB2b2lkIGNhbnZhc1Jlc2l6ZWQoSFRNTENhbnZhc0VsZW1l
bnQmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNhbnZhc0Rlc3Ryb3llZChIVE1MQ2FudmFzRWxlbWVu
dCYpIGZpbmFsIHsgbV9jYW52YXMgPSBudWxscHRyOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOworICAgIHVuc2lnbmVk
IGxvbmcgbV9jYW52YXNDaGFuZ2VkQ291bnQgeyAwIH07CisgICAgUmVmUHRyPEhUTUxDYW52YXNF
bGVtZW50PiBtX2NhbnZhczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjYWI0ZDIyM2U2Yzk3MWVkNTFmZDk4YjUxNjAw
ZTBkYzE4YzI0MDMwLi40MTBiMTRjODVhMjhiMDdmMTY2ZGU1YWQyZGEwYmMwZmE3NmQwMThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MTYsNCArNTE2LDcgQEAgZW51
bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgdm9pZCBkaXNhYmxlVGlsZVNpemVVcGRh
dGVEZWxheSgpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQkdMXSB2b2lkIHNpbXVsYXRlV2ViR0xD
b250ZXh0Q2hhbmdlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGNvbnRleHQpOworCisgICAg
dm9pZCBvYnNlcnZlQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcyk7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2FudmFzQ2hhbmdlZENvdW50OwogfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBkMjFjMTUzMmU0YWM1NzJkZDM4ODJmMGVkMjI0NDkyYzdlOGI3MTM0Li5kNmE5NDA2NDhkNzQ2
ZTNmOWNkM2RlMTU2MjQ4MmU2YTllY2EyYjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDMtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIENhbnZh
c0NhcHR1cmUgaXMgZ2VuZXJhdGluZyB0b28gbWFueSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJl
U3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAxNy0wMy0xMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJl
Z29AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnByZWZpeCAtd2Via2l0LW1pbi1jb250ZW50LCAt
d2Via2l0LW1heC1jb250ZW50IGFuZCAtd2Via2l0LWZpdC1jb250ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnkt
ZHJhd2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1
cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWM4YjNmNjQxZDIyZDRkMzA2MWY0ZTczZWMwZmRhMzQ1MTA4NDJlZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1o
ZWF2eS1kcmF3aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKyAgIAorCitQQVNTIGNh
cHR1cmVTdHJlYW0gd2l0aCAyZCBjb250ZXh0IGRyYXdpbmcgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2Fu
dmFzMmQtaGVhdnktZHJhd2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NTdkYjBhYWYyODlkZjAzYjlj
OTg4MzMyYjVjOTMzYzVlN2JjODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCkBA
IC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorICAgIDxib2R5PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMxIiB3
aWR0aD0xMDBweCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+CisgICAgICAgIDx2aWRlbyBpZD0idmlk
ZW8iIGF1dG9wbGF5IHdpZHRoPTEwMHB4IGhlaWdodD0xMDBweD48L3ZpZGVvPgorICAgICAgICA8
Y2FudmFzIGlkPSJjYW52YXMyIiB3aWR0aD0xMDBweCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKwordmFyIGNhbnZhczEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOwordmFyIGNhbnZhczIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMiIpOwordmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInZpZGVvIik7CisKK3ZhciBwcmV2aW91c051bWJlck9mQ2FudmFzQ2hhbmdl
ZCA9IDAKK2Z1bmN0aW9uIHZhbGlkYXRlQ2FudmFzKHJlc29sdmUsIHJlamVjdCkKK3sKKyAgICB0
cnkgeworICAgIAlpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgIGFzc2VydF90
cnVlKChpbnRlcm5hbHMuY2FudmFzQ2hhbmdlZENvdW50IC0gcHJldmlvdXNOdW1iZXJPZkNhbnZh
c0NoYW5nZWQpIDw9IDEpOworICAgICAgICAgICAgIHByZXZpb3VzTnVtYmVyT2ZDYW52YXNDaGFu
Z2VkID0gaW50ZXJuYWxzLmNhbnZhc0NoYW5nZWRDb3VudDsKKyAgICAgICAgfQorICAgICAgICBj
YW52YXMyLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHZpZGVvLCAwICwwKTsKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhjYW52YXMyLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRh
KDAgLDAsIDEwMCwgMTAwKSwgY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgw
LCAwLCAxMDAsIDEwMCkpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZWplY3QoZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHZhbGlkYXRlQ2Fu
dmFzKHJlamVjdCwgcmVzb2x2ZSk7IH0sIDUpOworfQorCitmdW5jdGlvbiBjaGVja0NhbnZhcyhj
YW52YXMsIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgICAgIHZpZGVv
Lm9ucGxheSA9ICgpID0+IHsKKyAgICAJICAgIHByZXZpb3VzTnVtYmVyT2ZDYW52YXNDaGFuZ2Vk
ID0gaW50ZXJuYWxzLmNhbnZhc0NoYW5nZWRDb3VudDsKKyAgICAgICAgICAgIHZhbGlkYXRlQ2Fu
dmFzKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDUw
MCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordmFyIGNwdHIgPSAwOworaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLm9ic2VydmVDYW52YXMoY2FudmFzMSk7CisKK2Z1bmN0
aW9uIHByaW50TGluZSgpCit7CisgICAgdmFyIGNvbnRleHQgPSBjYW52YXMxLmdldENvbnRleHQo
IjJkIik7CisgICAgY29udGV4dC5maWxsU3R5bGU9InJlZCI7CisgICAgZm9yICh2YXIgaSA9IDAg
OyBpIDwgMTAwOyArK2kpCisJY29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisKKyAg
ICBjcHRyICs9IDU7CisgICAgaWYgKGNwdHIgPiAyNTUpCisgICAgICAgIGNwdHIgPSAwOworICAg
IGNvbnRleHQuZmlsbFN0eWxlPSJyZ2IoMCwgIiArIGNwdHIgKyAiLCAwKSI7CisgICAgY29udGV4
dC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgc2V0VGltZW91dChwcmludExpbmUsIDEw
MCk7Cit9CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAgIHZhciBzdHJlYW0gPSBjYW52
YXMxLmNhcHR1cmVTdHJlYW0oKTsKKyAgICBwcm9taXNlID0gY2hlY2tDYW52YXMoY2FudmFzMSwg
c3RyZWFtKTsKKworICAgIHByaW50TGluZSgpOworCisgICAgcmV0dXJuIHByb21pc2U7Cit9LCAi
Y2FwdHVyZVN0cmVhbSB3aXRoIDJkIGNvbnRleHQgZHJhd2luZyIpOworICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304340</attachid>
            <date>2017-03-13 20:15:41 -0700</date>
            <delta_ts>2017-03-14 16:59:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169498-20170313201540.patch</filename>
            <type>text/plain</type>
            <size>11636</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNiNTk3M2VlNWNjNzll
OGU4MGFlY2I4M2Y1NTU1ZmRhMDRhMjI3YS4uZGM4ODFiNTBmZTY2YzM5NzYwZDJkMDRjMjJhZmY2
MGUxNWFkZjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE3LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDYW52YXNDYXB0dXJlIGlz
IGdlbmVyYXRpbmcgdG9vIG1hbnkgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2Nh
bnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbAorCisgICAgICAgIE1ha2luZyBDYW52YXNPYnNlcnZl
cnMgYmUgbm90aWZpZWQgYXN5bmNocm9ub3VzbHkgb2YgY2FudmFzIGNoYW5nZXMuCisgICAgICAg
IFRoaXMgZW5zdXJlcyB0aGF0IG9uZSBub3RpZmljYXRpb24gd2lsbCBiZSBkb25lIGZvciBhIHNl
dCBvZiBzeW5jaHJvbm91cyBkcmF3IGNvbW1hbmRzLgorCisgICAgICAgIEFkZGluZyBhbiBpbnRl
cm5hbCBBUEkgdG8gdGVzdCB0aGF0LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0Vs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2Vy
dmVyc0NhbnZhc0NoYW5nZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50Ojpub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp+SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6b2JzZXJ2ZUNhbnZhcyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKKzIwMTctMDMtMTMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIE1ha2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dHlwZSBhbiBlbnVtIGNsYXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAppbmRleCBmNjhmYTViOTVkNDgzZDdjZTRlZDliNGFmMmFjZjVlOTk1
OTJjODQ4Li40YzliNWFmOWY3ZmNmMGE2Zjc4MTUwMzk5MTA5NDJlZmRmNjg4NTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMTAzLDYgKzEwMyw3IEBA
IHN0YXRpYyBzaXplX3QgYWN0aXZlUGl4ZWxNZW1vcnkgPSAwOwogCiBIVE1MQ2FudmFzRWxlbWVu
dDo6SFRNTENhbnZhc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAg
LCBtX2NhbnZhc0NoYW5nZWRUaW1lcigqdGhpcywgJkhUTUxDYW52YXNFbGVtZW50Ojpub3RpZnlP
YnNlcnZlcnNDYW52YXNDaGFuZ2VkVGltZXJGaXJlZCkKICAgICAsIG1fc2l6ZShkZWZhdWx0V2lk
dGgsIGRlZmF1bHRIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoY2FudmFzVGFnKSk7
CkBAIC0zNTIsMTAgKzM1MywyMSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGRp
cnR5UmVjdCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlmeU9ic2VydmVyc0Nh
bnZhc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRpbWVyRmlyZWQoKQogewogICAgIGZvciAo
YXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPmNhbnZhc0No
YW5nZWQoKnRoaXMsIHJlY3QpOworICAgICAgICBvYnNlcnZlci0+Y2FudmFzQ2hhbmdlZCgqdGhp
cywgbV9jaGFuZ2VkUmVjdCk7Cit9CisKK3ZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om5vdGlmeU9i
c2VydmVyc0NhbnZhc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmICgh
bV9vYnNlcnZlcnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NoYW5nZWRSZWN0
ID0gdW5pb25SZWN0KG1fY2hhbmdlZFJlY3QsIHJlY3QpOworICAgIGlmIChtX2NhbnZhc0NoYW5n
ZWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jYW52YXNDaGFuZ2Vk
VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNl
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggMjJjZGVmOTNm
Y2JiNGZiNWRlNTI5Y2M3OWY4YjBhMzU1ZmUyNjcyOC4uZjU1MzA5NDlkNTdlODlkZDhjNzUwNTI4
YTM1MmY1MTE2MzE1OWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTY5LDggKzcw
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MQ2FudmFz
RWxlbWVudCgpOwogCi0gICAgdm9pZCBhZGRPYnNlcnZlcihDYW52YXNPYnNlcnZlciYpOwotICAg
IHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZE9ic2VydmVyKENhbnZhc09ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVPYnNlcnZlcihDYW52YXNPYnNlcnZlciYpOwogCiAgICAgdW5zaWduZWQgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBzaXplKCkud2lkdGgoKTsgfQogICAgIHVuc2lnbmVkIGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQpAQCAtMTEzLDYgKzExNCw3IEBA
IHB1YmxpYzoKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKICAgICB2b2lkIGRpZERyYXcoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNv
bnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZFRp
bWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
b3V0UmVjdCYpOwogCkBAIC0xODQsNiArMTg2LDggQEAgcHJpdmF0ZToKICAgICBib29sIGlzR1BV
KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIEZsb2F0UmVjdCBtX2NoYW5nZWRSZWN0OworICAgIFRp
bWVyIG1fY2FudmFzQ2hhbmdlZFRpbWVyOwogICAgIEhhc2hTZXQ8Q2FudmFzT2JzZXJ2ZXIqPiBt
X29ic2VydmVyczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dD4g
bV9jb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCmlu
ZGV4IGVlMzhiNTVmYzdjNDQ0MDRjNWViOGI1MGVmYTc0NjNkYjJhZTIzNTEuLjA0ZWRlMmI5ZjA3
MGVlYzZjOTdkM2EyOWE2N2ZiOTg1NWMzZTk4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCkBAIC0yNyw2ICsyNyw3IEBACiB0eXBlZGVmIChDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgb3IgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSkgUmVuZGVyaW5nQ29u
dGV4dDsKIAogWworICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKICAgICBSZXBvcnRFeHRyYU1lbW9yeUNvc3QsCiAgICAgUmVwb3J0RXh0
ZXJuYWxNZW1vcnlDb3N0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNk
Y2I1MzA2MDJjMTczYmRiY2FkYzM0ZjQyYTllODIyZDZjNjJmYjEuLjZiZWZjNDBhYjRlNzVkMmFl
ZWIyY2I3ZWUxNzYwZmQ2NTQzNjFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTM3Niw2ICszNzYsOCBAQCBSZWY8SW50ZXJuYWxzPiBJbnRlcm5hbHM6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCiAKIEludGVybmFsczo6fkludGVybmFscygpCiB7CisgICAgaWYg
KG1fY2FudmFzKQorICAgICAgICBtX2NhbnZhcy0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQog
CiB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQpAQCAt
MzgyNCw1ICszODI2LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZVdlYkdMQ29udGV4dENo
YW5nZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIH0KICNlbmRpZgogCit2
b2lkIEludGVybmFsczo6b2JzZXJ2ZUNhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQor
eworICAgIG1fY2FudmFzQ2hhbmdlZENvdW50ID0gMDsKKyAgICBtX2NhbnZhcyA9ICZjYW52YXM7
CisgICAgY2FudmFzLmFkZE9ic2VydmVyKCp0aGlzKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMWZkZDc5NDdhOTIzZWU0OGQ4
Y2NkYmE1MDY2NjRiNzlhMGQ3NTFjYi4uN2VmZmIyMDNlMzFmYTE5MmZiYzE2NDNkZDY5OTMwN2M5
YzY3NTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQu
aCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogCkBAIC03NSw3ICs3Niw3IEBA
IGNsYXNzIFR5cGVDb252ZXJzaW9uczsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7
CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAotY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CitjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+
LCAgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgcHJpdmF0ZSBDYW52YXNPYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbnRlcm5hbHM+IGNyZWF0ZShEb2N1bWVu
dCYpOwogICAgIHZpcnR1YWwgfkludGVybmFscygpOwpAQCAtNTQ0LDYgKzU0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdlZChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CiAjZW5kaWYKIAorICAgIHVuc2lnbmVkIGxvbmcgY2FudmFzQ2hhbmdlZENv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9jYW52YXNDaGFuZ2VkQ291bnQ7IH0KKyAgICB2b2lkIG9i
c2VydmVDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkg
Y29uc3Q7CkBAIC01NTEsNyArNTU1LDE0IEBAIHByaXZhdGU6CiAKICAgICBFeGNlcHRpb25PcjxS
ZW5kZXJlZERvY3VtZW50TWFya2VyKj4gbWFya2VyQXQoTm9kZSYsIGNvbnN0IFN0cmluZyYgbWFy
a2VyVHlwZSwgdW5zaWduZWQgaW5kZXgpOwogCisgICAgLy8gQ2FudmFzIG5vdGlmaWVyIEFQSQor
ICAgIHZvaWQgY2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVj
dCYpIGZpbmFsIHsgbV9jYW52YXNDaGFuZ2VkQ291bnQrKzsgfQorICAgIHZvaWQgY2FudmFzUmVz
aXplZChIVE1MQ2FudmFzRWxlbWVudCYpIGZpbmFsIHsgfQorICAgIHZvaWQgY2FudmFzRGVzdHJv
eWVkKEhUTUxDYW52YXNFbGVtZW50JikgZmluYWwgeyBtX2NhbnZhcyA9IG51bGxwdHI7IH0KKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJv
bnRlbmQ7CisgICAgdW5zaWduZWQgbG9uZyBtX2NhbnZhc0NoYW5nZWRDb3VudCB7IDAgfTsKKyAg
ICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IG1fY2FudmFzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNhYjRkMjIz
ZTZjOTcxZWQ1MWZkOThiNTE2MDBlMGRjMThjMjQwMzAuLjQxMGIxNGM4NWEyOGIwN2YxNjZkZTVh
ZDJkYTBiYzBmYTc2ZDAxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTUxNiw0ICs1MTYsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICB2b2lk
IGRpc2FibGVUaWxlU2l6ZVVwZGF0ZURlbGF5KCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCR0xd
IHZvaWQgc2ltdWxhdGVXZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UgY29udGV4dCk7CisKKyAgICB2b2lkIG9ic2VydmVDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQg
Y2FudmFzKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBjYW52YXNDaGFu
Z2VkQ291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVjNWQwYmNjOTE1MzU2ZmM0MjhmZDgxOTljZjMxYjliZTNh
Yzg3NjEuLjAwYzEzZjEzMTRmY2ExYTJjMTM4OTQyZjU5NTRkZjBmNjgzODRiMDkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwxNSBAQAogMjAxNy0wMy0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKKyAgICAgICAgQ2FudmFzQ2FwdHVyZSBpcyBnZW5lcmF0aW5nIHRvbyBtYW55IGZyYW1l
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDk4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhl
YXZ5LWRyYXdpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKworMjAxNy0wMy0xMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgSW1wb3J0IHdlYi1wbGF0Zm9ybS10
ZXN0cy9jb3JzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk1NjUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0
dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjOGIzZjY0MWQyMmQ0ZDMwNjFmNGU3M2VjMGZkYTM0
NTEwODQyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisgICAKKworUEFTUyBjYXB0dXJlU3RyZWFtIHdpdGggMmQgY29udGV4dCBkcmF3
aW5nIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVT
dHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRyYXdpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMmRhMTVlZDkxOTkxODljN2U0MDZkYjM4NjVkNTk2ODc4ZTgwMjE3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZh
czJkLWhlYXZ5LWRyYXdpbmcuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPGNhbnZhcyBpZD0iY2FudmFzMSIgd2lkdGg9MTAwcHggaGVpZ2h0PTEwMHB4PjwvY2FudmFz
PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheSB3aWR0aD0xMDBweCBoZWlnaHQ9
MTAwcHg+PC92aWRlbz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzMiIgd2lkdGg9MTAwcHgg
aGVpZ2h0PTEwMHB4PjwvY2FudmFzPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisKK3ZhciBjYW52YXMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
czEiKTsKK3ZhciBjYW52YXMyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsK
K3ZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOworCit2YXIgcHJl
dmlvdXNOdW1iZXJPZkNhbnZhc0NoYW5nZWQgPSAwCitmdW5jdGlvbiB2YWxpZGF0ZUNhbnZhcyhy
ZXNvbHZlLCByZWplY3QpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgoaW50ZXJuYWxzLmNhbnZhc0NoYW5nZWRD
b3VudCAtIHByZXZpb3VzTnVtYmVyT2ZDYW52YXNDaGFuZ2VkKSA8PSAxKTsKKyAgICAgICAgICAg
ICBwcmV2aW91c051bWJlck9mQ2FudmFzQ2hhbmdlZCA9IGludGVybmFscy5jYW52YXNDaGFuZ2Vk
Q291bnQ7CisgICAgICAgIH0KKyAgICAgICAgY2FudmFzMi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJ
bWFnZSh2aWRlbywgMCAsMCk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FudmFzMi5n
ZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwICwwLCAxMDAsIDEwMCksIGNhbnZhczIuZ2V0
Q29udGV4dCgiMmQiKS5nZXRJbWFnZURhdGEoMCwgMCwgMTAwLCAxMDApKTsKKyAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgcmVqZWN0KGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNl
dFRpbWVvdXQoKCkgPT4geyB2YWxpZGF0ZUNhbnZhcyhyZWplY3QsIHJlc29sdmUpOyB9LCA1KTsK
K30KKworZnVuY3Rpb24gY2hlY2tDYW52YXMoY2FudmFzLCBzdHJlYW0pCit7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdmlkZW8uc3JjT2Jq
ZWN0ID0gc3RyZWFtOworICAgICAgICB2aWRlby5vbnBsYXkgPSAoKSA9PiB7CisgICAgICAgICAg
ICBwcmV2aW91c051bWJlck9mQ2FudmFzQ2hhbmdlZCA9IGludGVybmFscy5jYW52YXNDaGFuZ2Vk
Q291bnQ7CisgICAgICAgICAgICB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpOworICAg
ICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlLCA1MDApOworICAgICAgICB9CisgICAgfSk7Cit9
CisKK3ZhciBjcHRyID0gMDsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5v
YnNlcnZlQ2FudmFzKGNhbnZhczEpOworCitmdW5jdGlvbiBwcmludExpbmUoKQoreworICAgIHZh
ciBjb250ZXh0ID0gY2FudmFzMS5nZXRDb250ZXh0KCIyZCIpOworICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gInJlZCI7CisgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgMTAwOyArK2kpCisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworCisgICAgY3B0ciArPSA1OworICAg
IGlmIChjcHRyID4gMjU1KQorICAgICAgICBjcHRyID0gMDsKKyAgICBjb250ZXh0LmZpbGxTdHls
ZT0icmdiKDAsICIgKyBjcHRyICsgIiwgMCkiOworICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwg
MTAwLCAxMDApOworICAgIHNldFRpbWVvdXQocHJpbnRMaW5lLCAxMDApOworfQorCitwcm9taXNl
X3Rlc3QoKHRlc3QpID0+IHsKKyAgICB2YXIgc3RyZWFtID0gY2FudmFzMS5jYXB0dXJlU3RyZWFt
KCk7CisgICAgcHJvbWlzZSA9IGNoZWNrQ2FudmFzKGNhbnZhczEsIHN0cmVhbSk7CisKKyAgICBw
cmludExpbmUoKTsKKworICAgIHJldHVybiBwcm9taXNlOworfSwgImNhcHR1cmVTdHJlYW0gd2l0
aCAyZCBjb250ZXh0IGRyYXdpbmciKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304445</attachid>
            <date>2017-03-14 16:59:22 -0700</date>
            <delta_ts>2017-03-14 21:38:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169498-20170314165922.patch</filename>
            <type>text/plain</type>
            <size>12970</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MjliMmQwMzFmNzhj
MjI3OGQ2NWJkZWI2YmJmOGYzZDJmZGIzMy4uMWE1YzlhMGQ5ZDMzOGJjYWVhMWRmMzcwMzE1YWY4
MTc1YTg2YzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAzLTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXNDYXB0dXJlIHNo
b3VsZCBub3QgZ2VuZXJhdGUgYSBmcmFtZSBwZXIgZWFjaCBjYW52YXMgZHJhdyBjb21tYW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0
L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCisK
KyAgICAgICAgTWFraW5nIENhbnZhcyBjYXB0dXJlIGJlIGFzeW5jaHJvbm91cy4KKyAgICAgICAg
VGhpcyBlbnN1cmVzIHRoYXQgb25lIGZyYW1lIHdpbGwgYmUgY3JlYXRlZCBmb3IgYSBzZXQgb2Yg
c3luY2hyb25vdXMgZHJhdyBjb21tYW5kcy4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgd2Ugc2hv
dWxkIGZpbmQgYSBiZXR0ZXIgYXBwcm9hY2gsIGxpa2UgYWxpZ25pbmcgd2l0aCByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUuCisgICAgICAgIEFkZGluZyBpbnRlcm5hbHMgb2JzZXJ2ZXIgQVBJIGZvciBt
ZWRpYSBzdHJlYW0gdHJhY2tzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5p
ZGw6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9ic2Vy
dmVNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0xNCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBEYXRhIGludGVyYWN0
aW9uIHRlc3RzIG9jY2FzaW9uYWxseSBoaXQgYXNzZXJ0aW9ucyBpbiBkZWJ1ZyBidWlsZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNGQ4NDE1Y2I0OWEzMDM4
NGQ0MWNkNDc4OWQ1NDZkOGU1ZWRkNmE1OS4uNjQ2MmM1YjI0YTg1M2FkMDMyZTk4OTk2MzViYmMx
N2FmMWJlZGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAg
LTYyLDYgKzYyLDcgQEAgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291
cmNlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIHN0ZDo6b3AKICAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2UoU3RyaW5nKCksIFR5cGU6OlZpZGVvLCBTdHJpbmcoKSkKICAgICAsIG1fZnJhbWVS
ZXF1ZXN0UmF0ZShXVEZNb3ZlKGZyYW1lUmVxdWVzdFJhdGUpKQogICAgICwgbV9yZXF1ZXN0RnJh
bWVUaW1lcigqdGhpcywgJlNvdXJjZTo6cmVxdWVzdEZyYW1lVGltZXJGaXJlZCkKKyAgICAsIG1f
Y2FudmFzQ2hhbmdlZFRpbWVyKCp0aGlzLCAmU291cmNlOjpjYXB0dXJlQ2FudmFzKQogICAgICwg
bV9jYW52YXMoJmNhbnZhcykKIHsKICAgICBtX3NldHRpbmdzLnNldFdpZHRoKGNhbnZhcy53aWR0
aCgpKTsKQEAgLTEyMyw3ICsxMjQsMTAgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50JiBjYW4KIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGNhbnZhcywgbV9jYW52YXMgPT0gJmNhbnZhcyk7CiAKLSAgICBjYXB0
dXJlQ2FudmFzKCk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gZ2VuZXJhdGUgdGhl
IGZyYW1lIGF0IHRoZSB0aW1lIHRoZSBzY3JlZW4gaXMgYmVpbmcgdXBkYXRlZC4KKyAgICBpZiAo
bV9jYW52YXNDaGFuZ2VkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y2FudmFzQ2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suaAppbmRleCBhMzgyNGI2ZWRlOTFjMzU5YTNjM2FkMTY1MjBi
YzNjZThmMWNhNmIzLi4xNjcwMDJiZTMxNWE1M2FhOTAzNTE2NGM3ZjUyMGU3ZjVhNTU0MTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2suaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBi
b29sIG1fc2hvdWxkRW1pdEZyYW1lIHsgdHJ1ZSB9OwogICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbV9mcmFtZVJlcXVlc3RSYXRlOwogICAgICAgICBUaW1lciBtX3JlcXVlc3RGcmFtZVRp
bWVyOworICAgICAgICBUaW1lciBtX2NhbnZhc0NoYW5nZWRUaW1lcjsKICAgICAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgICAgIEhUTUxDYW52YXNFbGVt
ZW50KiBtX2NhbnZhczsKICAgICAgICAgUmVmUHRyPEltYWdlPiBtX2N1cnJlbnRJbWFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaWRsCmluZGV4IDBiMDdmOGFhNzU4OGU4MmM2YzQ0OWVlZDEyZGY4NDQ5MTY0YmMzODku
LjQzODgxYjgzMTZmZDNkMGU1NzNlMWJhOTA5MjNkMDI2NmRjYzRiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlk
bApAQCAtMjksNiArMjksNyBAQCBlbnVtIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAi
bGl2ZSIsICJlbmRlZCIgfTsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCisgICAgRXhwb3J0VG9XcmFwcGVk
RnVuY3Rpb24sCiAgICAgUHJpdmF0ZUlkZW50aWZpZXIsCiAgICAgUHVibGljSWRlbnRpZmllciwK
IF0gaW50ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2sgOiBFdmVudFRhcmdldCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmgKaW5kZXggMWE5MTFhZGExMjE1ZTc2YzI3MzY1OGQ0NDA0ZGNmNmJiYTc4MWFkNC4uMzI3
NGI4NWIzM2E1NGEyMGNjNjhiZmEzM2YxM2ZkZDkyMWY1ZmNmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aApAQCAtMTI3LDggKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW1vdGU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlKGJv
b2wgcmVtb3RlKSB7IG1fcmVtb3RlID0gcmVtb3RlOyB9CiAKLSAgICB2b2lkIGFkZE9ic2VydmVy
KE9ic2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0b3BQcm9kdWNpbmdE
YXRhKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggM2RjYjUzMDYw
MmMxNzNiZGJjYWRjMzRmNDJhOWU4MjJkNmM2MmZiMS4uMzY4ZWM0ZjE3ZTU3MTEwMjYyNTZmNjM4
NTdlZTlkYzM3N2U4N2VjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
OTAsNiArOTAsNyBAQAogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1v
cnlJbmZvLmgiCiAjaW5jbHVkZSAiTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgiCkBAIC0z
NzYsNiArMzc3LDggQEAgUmVmPEludGVybmFscz4gSW50ZXJuYWxzOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogCiBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogeworICAgIGlmIChtX3RyYWNr
KQorICAgICAgICBtX3RyYWNrLT5zb3VyY2UoKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC0z
ODI1LDQgKzM4MjgsMTAgQEAgdm9pZCBJbnRlcm5hbHM6OnNpbXVsYXRlV2ViR0xDb250ZXh0Q2hh
bmdlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogI2VuZGlmCiAKIAordm9p
ZCBJbnRlcm5hbHM6Om9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRy
YWNrKQoreworICAgIG1fdHJhY2sgPSAmdHJhY2s7CisgICAgbV90cmFjay0+c291cmNlKCkuYWRk
T2JzZXJ2ZXIoKnRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCAxZmRkNzk0N2E5MjNlZTQ4ZDhjY2RiYTUwNjY2NGI3OWEw
ZDc1MWNiLi5iMDBjZjAxM2QyMWQzOWRhNzk1MjQ4YjE1MWQxMjgzNDczYTZmZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KIAogI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQpAQCAtNTcsNiArNTgsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQ7
CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwogY2xhc3MgTWFsbG9jU3RhdGlzdGljczsKIGNsYXNz
IE1lZGlhU2Vzc2lvbjsKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBNZW1vcnlJbmZv
OwogY2xhc3MgTW9ja0NETUZhY3Rvcnk7CiBjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OwpAQCAtNzUsNyArNzcsNyBAQCBjbGFzcyBUeXBlQ29udmVyc2lvbnM7CiBjbGFzcyBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKLWNsYXNzIEludGVy
bmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sIHByaXZhdGUgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW50ZXJuYWxzPiwgIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIs
IHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5JbnRl
cm5hbHMoKTsKQEAgLTU0NCw2ICs1NDYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVX
ZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICNlbmRpZgog
CisgICAgdW5zaWduZWQgbG9uZyB0cmFja0F1ZGlvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudDsgfQorICAgIHVuc2lnbmVkIGxvbmcgdHJhY2tWaWRl
b1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFja1ZpZGVvU2FtcGxlQ291bnQ7IH0K
KyAgICB2b2lkIG9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVu
dCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CkBAIC01NTEsNyArNTU3LDE1IEBAIHByaXZhdGU6
CiAKICAgICBFeGNlcHRpb25PcjxSZW5kZXJlZERvY3VtZW50TWFya2VyKj4gbWFya2VyQXQoTm9k
ZSYsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgpOwogCisgICAgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsIHsgbV90cmFja1ZpZGVvU2FtcGxlQ291bnQrKzsg
fQorICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVf
dCkgZmluYWwgeyBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudCsrOyB9CisKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOworCisgICAg
dW5zaWduZWQgbG9uZyBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50IHsgMCB9OworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiBtX3RyYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGNhYjRkMjIzZTZjOTcxZWQ1MWZkOThiNTE2
MDBlMGRjMThjMjQwMzAuLjBmNDU4NTRiZGNhYTM2ZDNkMTZhMjliMjQwNWZjNjI1M2MxZTBlNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTUxNiw0ICs1MTYsOCBAQCBl
bnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICB2b2lkIGRpc2FibGVUaWxlU2l6ZVVw
ZGF0ZURlbGF5KCk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIHZvaWQgc2ltdWxhdGVXZWJH
TENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgY29udGV4dCk7CisKKyAg
ICB2b2lkIG9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVDb3Vu
dDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxl
Q291bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGYxODA4MWM4MjQ1ZjIwYzY0ZDY1NmRjMGQyMGQ5ZWM2ODkwMzdm
YTUuLjlmYjZkOGM1Yzg4NmYwZTI5MmFmMGI3NjM0YmUzMDIxMDJiY2U2NWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNSBAQAogMjAxNy0wMy0xNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKKyAgICAgICAgQ2FudmFzQ2FwdHVyZSBzaG91bGQgbm90IGdlbmVyYXRlIGEgZnJhbWUgcGVy
IGVhY2ggY2FudmFzIGRyYXcgY29tbWFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFz
MmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3aW5nLmh0bWw6IEFkZGVk
LgorCisyMDE3LTAzLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAg
ICAgICBJbXBvcnQgd2ViLXBsYXRmb3JtLXRlc3RzL2NvcnMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTU2NQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJl
YW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4YjNm
NjQxZDIyZDRkMzA2MWY0ZTczZWMwZmRhMzQ1MTA4NDJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1k
cmF3aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKyAgIAorCitQQVNTIGNhcHR1cmVT
dHJlYW0gd2l0aCAyZCBjb250ZXh0IGRyYXdpbmcgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3aW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQt
aGVhdnktZHJhd2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNDA2OTY5ZGY0N2ZhZGU2ZWE1YjY4MzJj
YjFkZDU3ODZiZTA1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCkBAIC0wLDAg
KzEsNzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorICAgIDxib2R5PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMxIiB3aWR0aD0x
MDBweCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1
dG9wbGF5IHdpZHRoPTEwMHB4IGhlaWdodD0xMDBweD48L3ZpZGVvPgorICAgICAgICA8Y2FudmFz
IGlkPSJjYW52YXMyIiB3aWR0aD0xMDBweCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKwordmFyIGNhbnZhczEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOwordmFyIGNhbnZhczIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzMiIpOwordmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInZpZGVvIik7CisKK3ZhciBwcmV2aW91c1RyYWNrU2FtcGxlQ291bnQgPSAwCitmdW5j
dGlvbiB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpCit7CisgICAgdHJ5IHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgoaW50
ZXJuYWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudCAtIHByZXZpb3VzVHJhY2tTYW1wbGVDb3VudCkg
PD0gMSwgImdvdCB0b28gbXVjaCBpbnRlcm5hbHMudHJhY2tWaWRlb1NhbXBsZUNvdW50Iik7Cisg
ICAgICAgICAgICAgcHJldmlvdXNUcmFja1NhbXBsZUNvdW50ID0gaW50ZXJuYWxzLnRyYWNrVmlk
ZW9TYW1wbGVDb3VudDsKKyAgICAgICAgfQorICAgICAgICBjYW52YXMyLmdldENvbnRleHQoIjJk
IikuZHJhd0ltYWdlKHZpZGVvLCAwICwwKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
YW52YXMyLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKDAgLDAsIDEwMCwgMTAwKSwgY2Fu
dmFzMi5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLCAwLCAxMDAsIDEwMCkpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgICByZWplY3QoZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHZhbGlkYXRlQ2FudmFzKHJlamVjdCwgcmVzb2x2ZSk7
IH0sIDUpOworfQorCitmdW5jdGlvbiBjaGVja0NhbnZhcyhjYW52YXMsIHN0cmVhbSkKK3sKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB2aWRl
by5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgICAgIHZpZGVvLm9ucGxheSA9ICgpID0+IHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIHByZXZpb3Vz
VHJhY2tTYW1wbGVDb3VudCA9IGludGVybmFscy50cmFja1ZpZGVvU2FtcGxlQ291bnQ7CisgICAg
ICAgICAgICB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlLCA1MDApOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBjcHRy
ID0gMDsKK2Z1bmN0aW9uIHByaW50TGluZSgpCit7CisgICAgdmFyIGNvbnRleHQgPSBjYW52YXMx
LmdldENvbnRleHQoIjJkIik7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICBm
b3IgKHZhciBpID0gMCA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCgw
LCAwLCAxMDAsIDEwMCk7CisKKyAgICBjcHRyICs9IDU7CisgICAgaWYgKGNwdHIgPiAyNTUpCisg
ICAgICAgIGNwdHIgPSAwOworICAgIGNvbnRleHQuZmlsbFN0eWxlPSJyZ2IoMCwgIiArIGNwdHIg
KyAiLCAwKSI7CisgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgc2V0
VGltZW91dChwcmludExpbmUsIDEwMCk7Cit9CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4gewor
ICAgIHZhciBzdHJlYW0gPSBjYW52YXMxLmNhcHR1cmVTdHJlYW0oKTsKKworICAgIGFzc2VydF9m
YWxzZSghIXN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCk7CisgICAgYXNzZXJ0X3RydWUo
c3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID09IDEpOworCisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisKKyAgICBwcm9taXNlID0gY2hlY2tDYW52YXMoY2Fu
dmFzMSwgc3RyZWFtKTsKKworICAgIHByaW50TGluZSgpOworCisgICAgcmV0dXJuIHByb21pc2U7
Cit9LCAiY2FwdHVyZVN0cmVhbSB3aXRoIDJkIGNvbnRleHQgZHJhd2luZyIpOworICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304469</attachid>
            <date>2017-03-14 21:39:01 -0700</date>
            <delta_ts>2017-03-14 22:21:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169498-20170314213900.patch</filename>
            <type>text/plain</type>
            <size>13024</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgzZDY1NDZjMTliZDcx
OWI5OWIxOTA5YTEzMGQ0MjFkNTIwNjdkYy4uZGEyOGU3NWQ2YWVhMTQwMzc5NDFlNjYyMjFiOGI5
YTcyOGY4NGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAzLTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXNDYXB0dXJlIHNo
b3VsZCBub3QgZ2VuZXJhdGUgYSBmcmFtZSBwZXIgZWFjaCBjYW52YXMgZHJhdyBjb21tYW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIgJiBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczJkLWhlYXZ5LWRy
YXdpbmcuaHRtbAorCisgICAgICAgIE1ha2luZyBDYW52YXMgY2FwdHVyZSBiZSBhc3luY2hyb25v
dXMuCisgICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IG9uZSBmcmFtZSB3aWxsIGJlIGNyZWF0ZWQg
Zm9yIGEgc2V0IG9mIHN5bmNocm9ub3VzIGRyYXcgY29tbWFuZHMuCisgICAgICAgIEluIHRoZSBm
dXR1cmUsIHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIGFwcHJvYWNoLCBsaWtlIGFsaWduaW5nIHdp
dGggcmVxdWVzdEFuaW1hdGlvbkZyYW1lLgorICAgICAgICBBZGRpbmcgaW50ZXJuYWxzIG9ic2Vy
dmVyIEFQSSBmb3IgbWVkaWEgc3RyZWFtIHRyYWNrcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNh
bnZhc0NoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaWRsOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6On5JbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTctMDMtMTMg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBS
ZXBhaW50UmVnaW9uQWNjdW11bGF0b3IgaG9sZCBhIFdlYWtQdHIgdG8gaXRzIHJvb3QgUmVuZGVy
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA0ZDg0MTVj
YjQ5YTMwMzg0ZDQxY2Q0Nzg5ZDU0NmQ4ZTVlZGQ2YTU5Li42NDYyYzViMjRhODUzYWQwMzJlOTg5
OTYzNWJiYzE3YWYxYmVkZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtNjIsNiArNjIsNyBAQCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291
cmNlOjpTb3VyY2UoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgc3RkOjpvcAogICAgIDogUmVh
bHRpbWVNZWRpYVNvdXJjZShTdHJpbmcoKSwgVHlwZTo6VmlkZW8sIFN0cmluZygpKQogICAgICwg
bV9mcmFtZVJlcXVlc3RSYXRlKFdURk1vdmUoZnJhbWVSZXF1ZXN0UmF0ZSkpCiAgICAgLCBtX3Jl
cXVlc3RGcmFtZVRpbWVyKCp0aGlzLCAmU291cmNlOjpyZXF1ZXN0RnJhbWVUaW1lckZpcmVkKQor
ICAgICwgbV9jYW52YXNDaGFuZ2VkVGltZXIoKnRoaXMsICZTb3VyY2U6OmNhcHR1cmVDYW52YXMp
CiAgICAgLCBtX2NhbnZhcygmY2FudmFzKQogewogICAgIG1fc2V0dGluZ3Muc2V0V2lkdGgoY2Fu
dmFzLndpZHRoKCkpOwpAQCAtMTIzLDcgKzEyNCwxMCBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmIGNh
bgogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFzKTsKIAot
ICAgIGNhcHR1cmVDYW52YXMoKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBnZW5l
cmF0ZSB0aGUgZnJhbWUgYXQgdGhlIHRpbWUgdGhlIHNjcmVlbiBpcyBiZWluZyB1cGRhdGVkLgor
ICAgIGlmIChtX2NhbnZhc0NoYW5nZWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47
CisgICAgbV9jYW52YXNDaGFuZ2VkVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhcHR1cmVDYW52YXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGEzODI0YjZlZGU5MWMzNTlhM2Mz
YWQxNjUyMGJjM2NlOGYxY2E2YjMuLjE2NzAwMmJlMzE1YTUzYWE5MDM1MTY0YzdmNTIwZTdmNWE1
NTQxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFjay5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgbV9zaG91bGRFbWl0RnJhbWUgeyB0cnVlIH07CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7CiAgICAgICAgIFRpbWVyIG1fcmVxdWVz
dEZyYW1lVGltZXI7CisgICAgICAgIFRpbWVyIG1fY2FudmFzQ2hhbmdlZFRpbWVyOwogICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICAgICAgSFRNTENh
bnZhc0VsZW1lbnQqIG1fY2FudmFzOwogICAgICAgICBSZWZQdHI8SW1hZ2U+IG1fY3VycmVudElt
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5pZGwKaW5kZXggMGIwN2Y4YWE3NTg4ZTgyYzZjNDQ5ZWVkMTJkZjg0NDkx
NjRiYzM4OS4uNDM4ODFiODMxNmZkM2QwZTU3M2UxYmE5MDkyM2QwMjY2ZGNjNGJjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaWRsCkBAIC0yOSw2ICsyOSw3IEBAIGVudW0gTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsg
Im5ldyIsICJsaXZlIiwgImVuZGVkIiB9OwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0sCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICBFeHBvcnRU
b1dyYXBwZWRGdW5jdGlvbiwKICAgICBQcml2YXRlSWRlbnRpZmllciwKICAgICBQdWJsaWNJZGVu
dGlmaWVyLAogXSBpbnRlcmZhY2UgTWVkaWFTdHJlYW1UcmFjayA6IEV2ZW50VGFyZ2V0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAppbmRleCAxYTkxMWFkYTEyMTVlNzZjMjczNjU4ZDQ0MDRkY2Y2YmJhNzgx
YWQ0Li4zMjc0Yjg1YjMzYTU0YTIwY2M2OGJmYTMzZjEzZmRkOTIxZjVmY2ZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCkBAIC0xMjcsOCArMTI3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRS
ZW1vdGUoYm9vbCByZW1vdGUpIHsgbV9yZW1vdGUgPSByZW1vdGU7IH0KIAotICAgIHZvaWQgYWRk
T2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBy
b2R1Y2luZ0RhdGEoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
ZGNiNTMwNjAyYzE3M2JkYmNhZGMzNGY0MmE5ZTgyMmQ2YzYyZmIxLi4zNjhlYzRmMTdlNTcxMTAy
NjI1NmY2Mzg1N2VlOWRjMzc3ZTg3ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNsdWRlICJNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24u
aCIKQEAgLTM3Niw2ICszNzcsOCBAQCBSZWY8SW50ZXJuYWxzPiBJbnRlcm5hbHM6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCiAKIEludGVybmFsczo6fkludGVybmFscygpCiB7CisgICAgaWYg
KG1fdHJhY2spCisgICAgICAgIG1fdHJhY2stPnNvdXJjZSgpLnJlbW92ZU9ic2VydmVyKCp0aGlz
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFn
ZSkKQEAgLTM4MjUsNCArMzgyOCwxMCBAQCB2b2lkIEludGVybmFsczo6c2ltdWxhdGVXZWJHTENv
bnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAjZW5kaWYK
IAogCit2b2lkIEludGVybmFsczo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1U
cmFjayYgdHJhY2spCit7CisgICAgbV90cmFjayA9ICZ0cmFjazsKKyAgICBtX3RyYWNrLT5zb3Vy
Y2UoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDFmZGQ3OTQ3YTkyM2VlNDhkOGNjZGJhNTA2
NjY0Yjc5YTBkNzUxY2IuLmIwMGNmMDEzZDIxZDM5ZGE3OTUyNDhiMTUxZDEyODM0NzNhNmZkZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCkBAIC01Nyw2ICs1OCw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJG
cm9udGVuZDsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNz
OwogY2xhc3MgTWVkaWFTZXNzaW9uOworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIE1l
bW9yeUluZm87CiBjbGFzcyBNb2NrQ0RNRmFjdG9yeTsKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M7CkBAIC03NSw3ICs3Nyw3IEBAIGNsYXNzIFR5cGVDb252ZXJzaW9uczsKIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAotY2xh
c3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJpdmF0
ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+LCAgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxJbnRlcm5hbHM+IGNyZWF0ZShEb2N1bWVudCYpOwogICAgIHZpcnR1
YWwgfkludGVybmFscygpOwpAQCAtNTQ0LDYgKzU0NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aW11bGF0ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
I2VuZGlmCiAKKyAgICB1bnNpZ25lZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50OyB9CisgICAgdW5zaWduZWQgbG9uZyB0
cmFja1ZpZGVvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrVmlkZW9TYW1wbGVD
b3VudDsgfQorICAgIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFj
ayYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCYpOwogICAg
IERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKQEAgLTU1MSw3ICs1NTcsMTUgQEAg
cHJpdmF0ZToKIAogICAgIEV4Y2VwdGlvbk9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqPiBtYXJr
ZXJBdChOb2RlJiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCk7CiAK
KyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWwgeyBtX3RyYWNrVmlkZW9TYW1wbGVD
b3VudCsrOyB9CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jiwgc2l6ZV90KSBmaW5hbCB7IG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50Kys7IH0KKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJvbnRlbmQ7
CisKKyAgICB1bnNpZ25lZCBsb25nIG1fdHJhY2tWaWRlb1NhbXBsZUNvdW50IHsgMCB9OworICAg
IHVuc2lnbmVkIGxvbmcgbV90cmFja0F1ZGlvU2FtcGxlQ291bnQgeyAwIH07CisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggY2FiNGQyMjNlNmM5NzFlZDUx
ZmQ5OGI1MTYwMGUwZGMxOGMyNDAzMC4uMGY0NTg1NGJkY2FhMzZkM2QxNmEyOWIyNDA1ZmM2MjUz
YzFlMGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTE2LDQgKzUx
Niw4IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIHZvaWQgZGlzYWJsZVRp
bGVTaXplVXBkYXRlRGVsYXkoKTsKIAogICAgIFtDb25kaXRpb25hbD1XRUJHTF0gdm9pZCBzaW11
bGF0ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSBjb250ZXh0
KTsKKworICAgIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0
cmFjayk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdHJhY2tBdWRpb1Nh
bXBsZUNvdW50OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNrVmlk
ZW9TYW1wbGVDb3VudDsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjFlMTdmMDE0ZTNjNjBhNDBhZjVjNWQ3ZjZhMTE4
ODNhZmFmNGM1OS4uZTgyMzUzMDlmZWEzYzcxNjE1MDczNjVhM2ViMmY3ZjlkMWY3NjA3YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE3LTAzLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAorICAgICAgICBDYW52YXNDYXB0dXJlIHNob3VsZCBub3QgZ2VuZXJhdGUgYSBm
cmFtZSBwZXIgZWFjaCBjYW52YXMgZHJhdyBjb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIgJiBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2
eS1kcmF3aW5nLmh0bWw6IEFkZGVkLgorCisyMDE3LTAzLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSRUdSRVNTSU9OIChyMjEzODgyKTogMTIgbmV3L3Vw
ZGF0ZWQgd2ViLXBsYXRmb3JtLXRlc3RzIGZhaWxpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTYxNQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0v
Y2FudmFzMmQtaGVhdnktZHJhd2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4YjNmNjQx
ZDIyZDRkMzA2MWY0ZTczZWMwZmRhMzQ1MTA4NDJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3
aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKyAgIAorCitQQVNTIGNhcHR1cmVTdHJl
YW0gd2l0aCAyZCBjb250ZXh0IGRyYXdpbmcgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC1oZWF2eS1kcmF3aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVh
dnktZHJhd2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNDA2OTY5ZGY0N2ZhZGU2ZWE1YjY4MzJjYjFk
ZDU3ODZiZTA1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzMmQtaGVhdnktZHJhd2luZy5odG1sCkBAIC0wLDAgKzEs
NzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorICAgIDxib2R5PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMxIiB3aWR0aD0xMDBw
eCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9w
bGF5IHdpZHRoPTEwMHB4IGhlaWdodD0xMDBweD48L3ZpZGVvPgorICAgICAgICA8Y2FudmFzIGlk
PSJjYW52YXMyIiB3aWR0aD0xMDBweCBoZWlnaHQ9MTAwcHg+PC9jYW52YXM+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKwordmFyIGNhbnZhczEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOwordmFyIGNhbnZhczIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY2FudmFzMiIpOwordmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CisKK3ZhciBwcmV2aW91c1RyYWNrU2FtcGxlQ291bnQgPSAwCitmdW5jdGlv
biB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpCit7CisgICAgdHJ5IHsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgoaW50ZXJu
YWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudCAtIHByZXZpb3VzVHJhY2tTYW1wbGVDb3VudCkgPD0g
MSwgImdvdCB0b28gbXVjaCBpbnRlcm5hbHMudHJhY2tWaWRlb1NhbXBsZUNvdW50Iik7CisgICAg
ICAgICAgICAgcHJldmlvdXNUcmFja1NhbXBsZUNvdW50ID0gaW50ZXJuYWxzLnRyYWNrVmlkZW9T
YW1wbGVDb3VudDsKKyAgICAgICAgfQorICAgICAgICBjYW52YXMyLmdldENvbnRleHQoIjJkIiku
ZHJhd0ltYWdlKHZpZGVvLCAwICwwKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYW52
YXMyLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRhKDAgLDAsIDEwMCwgMTAwKSwgY2FudmFz
Mi5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLCAwLCAxMDAsIDEwMCkpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICByZWplY3QoZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgc2V0VGltZW91dCgoKSA9PiB7IHZhbGlkYXRlQ2FudmFzKHJlamVjdCwgcmVzb2x2ZSk7IH0s
IDUpOworfQorCitmdW5jdGlvbiBjaGVja0NhbnZhcyhjYW52YXMsIHN0cmVhbSkKK3sKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB2aWRlby5z
cmNPYmplY3QgPSBzdHJlYW07CisgICAgICAgIHZpZGVvLm9ucGxheSA9ICgpID0+IHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIHByZXZpb3VzVHJh
Y2tTYW1wbGVDb3VudCA9IGludGVybmFscy50cmFja1ZpZGVvU2FtcGxlQ291bnQ7CisgICAgICAg
ICAgICB2YWxpZGF0ZUNhbnZhcyhyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgc2V0VGlt
ZW91dChyZXNvbHZlLCA1MDApOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBjcHRyID0g
MDsKK2Z1bmN0aW9uIHByaW50TGluZSgpCit7CisgICAgdmFyIGNvbnRleHQgPSBjYW52YXMxLmdl
dENvbnRleHQoIjJkIik7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICBmb3Ig
KHZhciBpID0gMCA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAw
LCAxMDAsIDEwMCk7CisKKyAgICBjcHRyICs9IDU7CisgICAgaWYgKGNwdHIgPiAyNTUpCisgICAg
ICAgIGNwdHIgPSAwOworICAgIGNvbnRleHQuZmlsbFN0eWxlPSJyZ2IoMCwgIiArIGNwdHIgKyAi
LCAwKSI7CisgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgc2V0VGlt
ZW91dChwcmludExpbmUsIDEwMCk7Cit9CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAg
IHZhciBzdHJlYW0gPSBjYW52YXMxLmNhcHR1cmVTdHJlYW0oKTsKKworICAgIGFzc2VydF9mYWxz
ZSghIXN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCk7CisgICAgYXNzZXJ0X3RydWUoc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoID09IDEpOworCisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXSk7CisKKyAgICBwcm9taXNlID0gY2hlY2tDYW52YXMoY2FudmFz
MSwgc3RyZWFtKTsKKworICAgIHByaW50TGluZSgpOworCisgICAgcmV0dXJuIHByb21pc2U7Cit9
LCAiY2FwdHVyZVN0cmVhbSB3aXRoIDJkIGNvbnRleHQgZHJhd2luZyIpOworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>