<?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>174270</bug_id>
          
          <creation_ts>2017-07-07 12:48:46 -0700</creation_ts>
          <short_desc>NetworkProcess should close listening WebRTC sockets when being suspended</short_desc>
          <delta_ts>2017-07-11 09:16:55 -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>Media</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>InRadar</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>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326556</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 12:48:46 -0700</bug_when>
    <thetext>As per https://developer.apple.com/library/content/technotes/tn2277/_index.html#//apple_ref/doc/uid/DTS40010841-CH1-SUBSECTION2, listening sockets should be closed when process is suspended.
Otherwise, there is a risk for spinning in physicalsocketserver: select will return with a listening socket that should be read but accept will fail as there is nothing to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326557</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 12:50:41 -0700</bug_when>
    <thetext>Closing listening TCP sockets might be an issue in the case where we do WebRTC:
- no a/v capture
- Using server TCP sockets for the communication
In that case, the connection will be closed and the web page will probably need to redo a negotiation and ICE gathering to continue exchanging data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326561</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 12:54:15 -0700</bug_when>
    <thetext>rdar://problem/33139844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326579</commentid>
    <comment_count>3</comment_count>
      <attachid>314868</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 13:16:54 -0700</bug_when>
    <thetext>Created attachment 314868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326590</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 13:31:53 -0700</bug_when>
    <thetext>Does not build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326612</commentid>
    <comment_count>5</comment_count>
      <attachid>314876</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 14:04:52 -0700</bug_when>
    <thetext>Created attachment 314876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326649</commentid>
    <comment_count>6</comment_count>
      <attachid>314876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 14:55:12 -0700</bug_when>
    <thetext>Comment on attachment 314876
Patch

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

&gt; Source/WebKit2/ChangeLog:13
&gt; +       Tested through manual testing by going to a website doing WebRTC, homing out so that the network process is suspended and reopening Safari.

Indentation problem.

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:67
&gt; +    bool needToCleanupForSuspension() const

Instead of having a separate method, can we just have cleanupForSuspension() call the completion handler right away if there is nothing to clean. I think it would simplify the code.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:645
&gt; +    RELEASE_LOG(ProcessSuspension, &quot;%p - NetworkProcess::prepareToSuspend() Sending ProcessReadyToSuspend IPC message&quot;, this);

You need to update the method name in there.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:646
&gt; +    parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::ProcessReadyToSuspend(), 0);

We should ASSERT(!m_webProcessConnectionsToClean); in this method.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:653
&gt; +    if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)

Not sure we need this check. Setting member to 0 does not hurt, right?

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:661
&gt; +        if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)

Not sure we need this check.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:662
&gt; +            m_webProcessConnectionsToClean++;

++m_webProcessConnectionsToClean;

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:668
&gt; +            if (!--m_webProcessConnectionsToClean)

We should ASSERT(m_webProcessConnectionsToClean) before decrementing.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:244
&gt; +    uint64_t m_webProcessConnectionsToClean { 0 };

how about just unsigned? Why 64 bit?

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:237
&gt; +    completionHandler();

Can we do this at the end of the function instead? This seems safer.

&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:239
&gt; +    if (!m_connection)

This should not be an early return if you move the completionHandler call below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326660</commentid>
    <comment_count>7</comment_count>
      <attachid>314876</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 15:37:33 -0700</bug_when>
    <thetext>Comment on attachment 314876
Patch

Thanks for the review.

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

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:67
&gt;&gt; +    bool needToCleanupForSuspension() const
&gt; 
&gt; Instead of having a separate method, can we just have cleanupForSuspension() call the completion handler right away if there is nothing to clean. I think it would simplify the code.

In most cases, no cleanup will be done.
If we do not do this, we will increment/decrement counters, call functions, create callbacks for nothing.
Given the small added complexity, I slightly prefer the current approach.
If we need to add more regular clean-up in the future, we can easily change that.

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:645
&gt;&gt; +    RELEASE_LOG(ProcessSuspension, &quot;%p - NetworkProcess::prepareToSuspend() Sending ProcessReadyToSuspend IPC message&quot;, this);
&gt; 
&gt; You need to update the method name in there.

ok

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:646
&gt;&gt; +    parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::ProcessReadyToSuspend(), 0);
&gt; 
&gt; We should ASSERT(!m_webProcessConnectionsToClean); in this method.

ok

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:653
&gt;&gt; +    if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt; 
&gt; Not sure we need this check. Setting member to 0 does not hurt, right?

The issue is if processWillSuspendImminently is called while we still have some connections to clean.
Then we will set m_webProcessConnectionsToClean to zero and it will get decremented later on.

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:661
&gt;&gt; +        if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt; 
&gt; Not sure we need this check.

We could get rid of it if we are sure that prepareToSuspend() is always called before processWillSuspendImminently().
I am not sure this is guaranteed.

&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:244
&gt;&gt; +    uint64_t m_webProcessConnectionsToClean { 0 };
&gt; 
&gt; how about just unsigned? Why 64 bit?

yes, makes sense.

&gt;&gt; Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:237
&gt;&gt; +    completionHandler();
&gt; 
&gt; Can we do this at the end of the function instead? This seems safer.

We can do both ways.
It is ok to be suspended as soon as sockets are closed, which is ensured at this point.
Doing IPC to notify the web process is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326661</commentid>
    <comment_count>8</comment_count>
      <attachid>314876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 15:42:23 -0700</bug_when>
    <thetext>Comment on attachment 314876
Patch

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

&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:653
&gt;&gt;&gt; +    if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt;&gt; 
&gt;&gt; Not sure we need this check. Setting member to 0 does not hurt, right?
&gt; 
&gt; The issue is if processWillSuspendImminently is called while we still have some connections to clean.
&gt; Then we will set m_webProcessConnectionsToClean to zero and it will get decremented later on.

Hmm, I could see this happen indeed. Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326669</commentid>
    <comment_count>9</comment_count>
      <attachid>314876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 15:49:53 -0700</bug_when>
    <thetext>Comment on attachment 314876
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:653
&gt;&gt;&gt;&gt; +    if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt;&gt;&gt; 
&gt;&gt;&gt; Not sure we need this check. Setting member to 0 does not hurt, right?
&gt;&gt; 
&gt;&gt; The issue is if processWillSuspendImminently is called while we still have some connections to clean.
&gt;&gt; Then we will set m_webProcessConnectionsToClean to zero and it will get decremented later on.
&gt; 
&gt; Hmm, I could see this happen indeed. Good point.

We could also use something like:

class DelayedReadyToSuspendScope : public RefCounted&lt; DelayedReadyToSuspendScope &gt; {
    DelayedReadyToSuspendScope(networkProcess, shouldAcknowledgeWhenReadyToSuspend);

    ~DelayedReadyToSuspendScope()
    {
        if (m_shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
            m_networkProcess-&gt;notifyProcessReadyToSuspend()
    }

private:
    m_shouldAcknowledgeWhenReadyToSuspend;
    m_networkProcess;
}

Then you capture a RefPtr&lt;&gt; to this in each lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326671</commentid>
    <comment_count>10</comment_count>
      <attachid>314876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 15:58:12 -0700</bug_when>
    <thetext>Comment on attachment 314876
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:653
&gt;&gt;&gt;&gt;&gt; +    if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Not sure we need this check. Setting member to 0 does not hurt, right?
&gt;&gt;&gt; 
&gt;&gt;&gt; The issue is if processWillSuspendImminently is called while we still have some connections to clean.
&gt;&gt;&gt; Then we will set m_webProcessConnectionsToClean to zero and it will get decremented later on.
&gt;&gt; 
&gt;&gt; Hmm, I could see this happen indeed. Good point.
&gt; 
&gt; We could also use something like:
&gt; 
&gt; class DelayedReadyToSuspendScope : public RefCounted&lt; DelayedReadyToSuspendScope &gt; {
&gt;     DelayedReadyToSuspendScope(networkProcess, shouldAcknowledgeWhenReadyToSuspend);
&gt; 
&gt;     ~DelayedReadyToSuspendScope()
&gt;     {
&gt;         if (m_shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt;             m_networkProcess-&gt;notifyProcessReadyToSuspend()
&gt;     }
&gt; 
&gt; private:
&gt;     m_shouldAcknowledgeWhenReadyToSuspend;
&gt;     m_networkProcess;
&gt; }
&gt; 
&gt; Then you capture a RefPtr&lt;&gt; to this in each lambda.

We don&apos;t even need the shouldAcknowledgeWhenReadyToSuspend. This can be dealt with upon initial construction:
RefPtr&lt;DelayedReadyToSuspendScope&gt; scope;
if (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes)
    scope = adoptRef(DelayedReadyToSuspendScope(*this));

Then capture scope in the lambdas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326682</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 16:13:50 -0700</bug_when>
    <thetext>&gt; We don&apos;t even need the shouldAcknowledgeWhenReadyToSuspend. This can be
&gt; dealt with upon initial construction:
&gt; RefPtr&lt;DelayedReadyToSuspendScope&gt; scope;
&gt; if (shouldAcknowledgeWhenReadyToSuspend ==
&gt; ShouldAcknowledgeWhenReadyToSuspend::Yes)
&gt;     scope = adoptRef(DelayedReadyToSuspendScope(*this));
&gt; 
&gt; Then capture scope in the lambdas.

Yep, sounds much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326699</commentid>
    <comment_count>12</comment_count>
      <attachid>314898</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 16:45:25 -0700</bug_when>
    <thetext>Created attachment 314898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326701</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-07 16:48:04 -0700</bug_when>
    <thetext>Attachment 314898 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:651:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326703</commentid>
    <comment_count>14</comment_count>
      <attachid>314898</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 16:53:57 -0700</bug_when>
    <thetext>Comment on attachment 314898
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:67
&gt; +    bool needToCleanupForSuspension() const

I still don&apos;t like that we have this function. The complexity should be inside cleanupForSuspension(), not at the call site. Also, the API is risky since it will crash if you call cleanupForSuspension() without checking needToCleanupForSuspension() first. I still think the m_rtcProvider check should be inside cleanupForSuspension().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326704</commentid>
    <comment_count>15</comment_count>
      <attachid>314898</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 16:57:16 -0700</bug_when>
    <thetext>Comment on attachment 314898
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt; +void NetworkProcess::notifyProcessReadyToSuspend()

Not sure we need a function for this. We could just move those 2 lines in the DelayedReadyToSuspendScope destructor.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:661
&gt; +    RefPtr&lt;DelayedReadyToSuspendScope&gt; delayedReadyToSuspend = (shouldAcknowledgeWhenReadyToSuspend == ShouldAcknowledgeWhenReadyToSuspend::Yes) ? adoptRef(new DelayedReadyToSuspendScope(*this)) : nullptr;

No need for the parentheses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326715</commentid>
    <comment_count>16</comment_count>
      <attachid>314902</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 17:17:59 -0700</bug_when>
    <thetext>Created attachment 314902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326717</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-07 17:19:28 -0700</bug_when>
    <thetext>Attachment 314902 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:651:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326718</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-07 17:20:21 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; Created attachment 314902 [details]
&gt; Patch

Removed two-step cleanup util. Will retest it on iOS over the weekend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326786</commentid>
    <comment_count>19</comment_count>
      <attachid>314921</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-08 10:25:41 -0700</bug_when>
    <thetext>Created attachment 314921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326790</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-08 10:58:33 -0700</bug_when>
    <thetext>Attachment 314921 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:225:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:645:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326823</commentid>
    <comment_count>21</comment_count>
      <attachid>314932</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-08 17:55:08 -0700</bug_when>
    <thetext>Created attachment 314932
Fixing release logging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326824</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-08 17:57:26 -0700</bug_when>
    <thetext>Attachment 314932 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp:225:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:645:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326868</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 09:39:27 -0700</bug_when>
    <thetext>Promises in C++ code now? :( I have not looked in detail yet but the previous iteration seemed much simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326870</commentid>
    <comment_count>24</comment_count>
      <attachid>314932</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 10:11:41 -0700</bug_when>
    <thetext>Comment on attachment 314932
Fixing release logging

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

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:192
&gt; +std::optional&lt;SuspensionResult&gt; NetworkConnectionToWebProcess::cleanupForSuspension()

I would much prefer passing a lambda rather than returning an optional promise.

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:198
&gt; +    return std::nullopt;

This could call the lambda right away, as I suggested previously.

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h:54
&gt; +class SuspensionResult {

I don&apos;t think this added complexity is necessary. My previous review comments were about simplify the code.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt; +class TaskCounter : public RefCounted&lt;TaskCounter&gt; {

This looks extremely similar to WTF&apos;s RefCounter now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326929</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-09 21:03:39 -0700</bug_when>
    <thetext>Main change here is making sure no new TCP listening socket is created when we start closing them.
That should give us full protection against occasional spins.

Ideally we would close the listening sockets when resuming the process.
That way we would not close the sockets in case of cancelled suspension.
But the select/accept issue does not allow us that at the moment.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:192
&gt; &gt; +std::optional&lt;SuspensionResult&gt; NetworkConnectionToWebProcess::cleanupForSuspension()
&gt; 
&gt; I would much prefer passing a lambda rather than returning an optional
&gt; promise.

I like the way NetworkProcess::actualPrepareToSuspend is written.
That makes NetworkProcess code clearer to me.
I also like the fact of returning something instead of passing a parameter that we should make sure to call in every case.

If this is a blocker, I am fine going with more lambdas.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt; &gt; +class TaskCounter : public RefCounted&lt;TaskCounter&gt; {
&gt; 
&gt; This looks extremely similar to WTF&apos;s RefCounter now.

Using RefCounter seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327009</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 08:38:24 -0700</bug_when>
    <thetext>I think lambdas are much simpler here. I do not see the point of introducing a new concept for this tiny piece of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327216</commentid>
    <comment_count>27</comment_count>
      <attachid>315034</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-10 15:11:28 -0700</bug_when>
    <thetext>Created attachment 315034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327217</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-10 15:11:52 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #27)
&gt; Created attachment 315034 [details]
&gt; Patch

Here is the version with lambdas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327239</commentid>
    <comment_count>29</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-10 16:06:39 -0700</bug_when>
    <thetext>Attachment 315034 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:646:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327256</commentid>
    <comment_count>30</comment_count>
      <attachid>315034</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 16:46:00 -0700</bug_when>
    <thetext>Comment on attachment 315034
Patch

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

Looks good otherwise.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt; +// FIXME: We can remove this one by adapting RefCounter.

I think we should do this. Why introduce a new class if there is a direct replacement? As far as I can tell, this is a trivial change, no? If so, why add a FIXME comment instead of doing it right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327300</commentid>
    <comment_count>31</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-10 17:41:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #30)
&gt; Comment on attachment 315034 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=315034&amp;action=review
&gt; 
&gt; Looks good otherwise.
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt; &gt; +// FIXME: We can remove this one by adapting RefCounter.
&gt; 
&gt; I think we should do this. Why introduce a new class if there is a direct
&gt; replacement? As far as I can tell, this is a trivial change, no? If so, why
&gt; add a FIXME comment instead of doing it right?

We need the counter value of RefCounter to trigger the IPC call when it is decremented to zero.
This counter value is not passed to the lambda right now by RefCounter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327313</commentid>
    <comment_count>32</comment_count>
      <attachid>315034</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 18:18:53 -0700</bug_when>
    <thetext>Comment on attachment 315034
Patch

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

&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt;&gt;&gt; +// FIXME: We can remove this one by adapting RefCounter.
&gt;&gt; 
&gt;&gt; I think we should do this. Why introduce a new class if there is a direct replacement? As far as I can tell, this is a trivial change, no? If so, why add a FIXME comment instead of doing it right?
&gt; 
&gt; We need the counter value of RefCounter to trigger the IPC call when it is decremented to zero.
&gt; This counter value is not passed to the lambda right now by RefCounter.

You can get the counter value via RefCounter::value().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327353</commentid>
    <comment_count>33</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-10 20:46:52 -0700</bug_when>
    <thetext>The lambda has no reference to the counter at the moment.
I&apos;ll look at this refactoring when I will have some more time in a few weeks.
I don&apos;t think this should block landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327389</commentid>
    <comment_count>34</comment_count>
      <attachid>315034</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 23:27:58 -0700</bug_when>
    <thetext>Comment on attachment 315034
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:643
&gt;&gt;&gt;&gt; +// FIXME: We can remove this one by adapting RefCounter.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we should do this. Why introduce a new class if there is a direct replacement? As far as I can tell, this is a trivial change, no? If so, why add a FIXME comment instead of doing it right?
&gt;&gt; 
&gt;&gt; We need the counter value of RefCounter to trigger the IPC call when it is decremented to zero.
&gt;&gt; This counter value is not passed to the lambda right now by RefCounter.
&gt; 
&gt; You can get the counter value via RefCounter::value().

For the record, I preferred the previous version that had the IPC in its destructor. There is no point in making this generic and it is unlikely to be reused considering it is in a cpp file.
I preferred the previous iteration because it resulted in simpler code below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327461</commentid>
    <comment_count>35</comment_count>
      <attachid>315034</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-11 07:53:22 -0700</bug_when>
    <thetext>Comment on attachment 315034
Patch

Clearing flags on attachment: 315034

Committed r219328: &lt;http://trac.webkit.org/changeset/219328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327462</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-11 07:53:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327511</commentid>
    <comment_count>37</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-11 09:16:55 -0700</bug_when>
    <thetext>Thanks for the review.

&gt; For the record, I preferred the previous version that had the IPC in its
&gt; destructor. There is no point in making this generic and it is unlikely to
&gt; be reused considering it is in a cpp file.
&gt; I preferred the previous iteration because it resulted in simpler code below.

This allowed removing the friend class TaskCounter declaration in WebPageProxy header.
TaskCounter is probably not a very good name, improving it might be good for readability.
As of reusability, let&apos;s decide what we want when looking at merging it with RefCounter.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314868</attachid>
            <date>2017-07-07 13:16:54 -0700</date>
            <delta_ts>2017-07-07 14:04:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170707131653.patch</filename>
            <type>text/plain</type>
            <size>13352</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZlZTI3ZGU3N2UwYzJj
NjJjNTI1ODhjZTExZDNjNDNiOTdkMzY4NS4uZDUzNjBiM2JkZWE5NGFhNzNiZmYxN2Y2MWI3ZDVj
ZTc0MzEwNmZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgVGhlcmUgbWlnaHQgYmUgc3RpbGwgc29tZSByYXJlIGNhc2VzIHdoZXJlIHRo
ZSBXZWJQcm9jZXNzIHdpbGwgYXNrIHRvIGNyZWF0ZSBuZXcgbGlzdGVuaW5nIHNvY2tldHMgYWZ0
ZXIgdGhlIGNsZWFuLXVwLgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0
IGJlIHRvIGltcHJvdmUgc2VsZWN0L2NhbmNlbCBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRo
ZSBzdGFjayB1c2luZyBDRlN0cmVhbS4KKworICAgICAgIFRlc3RlZCB0aHJvdWdoIG1hbnVhbCB0
ZXN0aW5nIGJ5IGdvaW5nIHRvIGEgd2Vic2l0ZSBkb2luZyBXZWJSVEMsIGhvbWluZyBvdXQgc28g
dGhhdCB0aGUgbmV0d29yayBwcm9jZXNzIGlzIHN1c3BlbmRlZCBhbmQgcmVvcGVuaW5nIFNhZmFy
aS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFudXBGb3JTdXNwZW5zaW9uKToKKyAgICAgICAgUHJveHlpbmcgY2FsbCB0byBjbGVhbiBm
b3Igc3VzcGVuc2lvbiB0byBydGMgcHJvdmlkZXIgc28gdGhhdCBpdCB3aWxsCisgICAgICAgIGNs
b3NlIGxpc3RlbmluZyBzb2NrZXRzLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpuZWVkVG9DbGVhbnVwRm9yU3VzcGVuc2lvbik6CisgICAgICAgIE9u
bHkgcmV0dXJuaW5nIHRydWUgaWYgdGhpcyBjb25uZWN0aW9uIGlzIGRvaW5nIFdlYlJUQyBzdHVm
Zi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFu
dXBGb3JTdXNwZW5zaW9uKToKKyAgICAgICAgQ2xlYW4tdXAgaXMgZG9uZSBhc3luY2hyb25vdXNs
eSBhcyBpdCBjYW4gaGFwcGVuIGluIGJhY2tncm91bmQgdGhyZWFkcy4KKyAgICAgICAgSGVuY2Ug
d2h5IHBhc3NpbmcgYSBjYWxsYmFjayBhcyBwYXJhbWV0ZXIuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKTogSGVscGVyIHJvdXRpbmUKKyAgICAgICAg
dG8gbm90aWZ5IFVJIHByb2Nlc3MgdGhhdCBuZXR3b3JrIHByb2Nlc3MgY2xlYW4gdXAgaXMgZG9u
ZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQpOiBEb2luZyB0aGUgY2xlYW4tdXAKKyAgICAgICAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0
IG5lZWRzIGl0LgorICAgICAgICBNYWtpbmcgc3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBj
bGVhbi11cCBiZWluZyBjb21wbGV0ZWQgb25jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
Lmg6IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAgICAg
VXNlZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2NrZXRz
IGFuZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNs
b3NlTGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAgICAg
IGFuZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlzIGNs
b3NlZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBuZWVk
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2luZ0xp
c3RlbmluZ1NvY2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuaDoKKwogMjAxNy0wNy0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIEMgQVBJ
IHdpdGggQ29jb2EgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDE4MWNl
Y2I2ZTFmY2RmMWQyM2I4ZDIxYTE3MGY0MDAxNjBiNGQ0My4uZDFhMjQ4OTQ0NDUzNmZjNGQyY2E0
ZjAxNGU2MzhkMDU1ZGVkYTYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
MTg5LDYgKzE4OSwxMSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0
cm95U29ja2V0U3RyZWFtKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgbV9uZXR3b3JrU29ja2V0
U3RyZWFtcy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNsZWFudXBGb3JTdXNwZW5zaW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcnRjUHJvdmlkZXItPmNsb3NlTGlzdGVuaW5n
U29ja2V0cyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBhdXRvIGxvYWRl
ciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLCAqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5YjNjYjU0OTUzZjhlNDcwMzUxYWJlYTYz
YWM2MjBkODRhNTQ2ZGRlLi45YmRjYWRhOTA0MmRmNmRkNzRkMTA0ZmVlNTEzNzIyNGE1OGFjMjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY0LDYgKzY0LDE1IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGdldEJsb2JEYXRh
RmlsZVJlZmVyZW5jZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAorICAgIGJvb2wgbmVl
ZFRvQ2xlYW51cEZvclN1c3BlbnNpb24oKSBjb25zdAorICAgIHsKKyNpZiBVU0UoTElCV0VCUlRD
KQorICAgICAgICByZXR1cm4gbV9ydGNQcm92aWRlcjsKKyNlbmRpZgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHZvaWQgY2xlYW51cEZvclN1c3BlbnNpb24oV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAwOGYyZTIyMWQxOGI5OTQ5
OGRlNjg4NWQwMTAwZjgzYTAwNzMwOGMzLi43ZTJkOWUzZDM1OGVjNTk2YWY4NWEyYzczNjE4MjE4
MjEzMjE2MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC02NDMsOSArNjQzLDQzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnRl
cm1pbmF0ZSgpCiAgICAgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShib29sJiBoYW5kbGVkKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKK3sKKyAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnBy
ZXBhcmVUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2Fn
ZSIsIHRoaXMpOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3ds
ZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCBzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZCkKIHsKICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOworCisgICAgaWYgKHNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hl
blJlYWR5VG9TdXNwZW5kOjpZZXMpCisgICAgICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zVG9D
bGVhbiA9IDA7CisKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucykgeworICAgICAgICBpZiAoIWNvbm5lY3Rpb24tPm5lZWRUb0NsZWFudXBGb3JTdXNw
ZW5zaW9uKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1
c3BlbmQoKSBzdGFydGVkIGNsZWFuaW5nIHdlYiBwcm9jZXNzIGNvbm5lY3Rpb24gJXAiLCB0aGlz
LCBjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgaWYgKHNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMp
CisgICAgICAgICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uc1RvQ2xlYW4rKzsKKworICAgICAg
ICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihbdGhpcywgc2hvdWxkQWNrbm93bGVk
Z2VXaGVuUmVhZHlUb1N1c3BlbmQsIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLmdldCgpXSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1By
b2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoKSBmaW5pc2hlZCBjbGVhbmluZyB3ZWIgcHJv
Y2VzcyBjb25uZWN0aW9uICVwIiwgdGhpcywgY29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAo
c2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgPT0gU2hvdWxkQWNrbm93bGVkZ2VX
aGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmICghLS1tX3dlYlByb2Nlc3NDb25uZWN0aW9uc1RvQ2xlYW4pCisgICAgICAgICAgICAg
ICAgbm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCA9PSBTaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzICYmICFtX3dlYlByb2Nlc3NDb25uZWN0aW9u
c1RvQ2xlYW4pCisgICAgICAgIG5vdGlmeVByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhh
bmRsZWQpCit7CisgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdo
ZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAgIGhhbmRsZWQgPSB0cnVlOwogfQogCkBAIC02NTMs
OSArNjg3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCiB7CiAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpw
cmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2Fs
OjpZZXMpOwotCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdv
cmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1c3Bl
bmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQo
KSwgMCk7CisgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5S
ZWFkeVRvU3VzcGVuZDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsUHJl
cGFyZVRvU3VzcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCAyOTBmMWU2MWQ4NTljMWM3YTU1YjJlMzJhOTBhOWQ5NDk5MzlkZDM5
Li4yNzNjOTlmMjg5MDQzZmNhZjgzNmJiODMwMTI4ZDhmYWFjNjhmM2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEzNCw2ICsxMzQs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbCk7CiAK
KyAgICBlbnVtIGNsYXNzIFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHsgTm8s
IFllcyB9OworICAgIHZvaWQgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRn
ZVdoZW5SZWFkeVRvU3VzcGVuZCk7CisgICAgdm9pZCBub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKTsKKwogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3Mo
Y29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CkBAIC0yMzYsNiArMjQwLDggQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyOwogI2VuZGlmCisKKyAgICB1aW50NjRfdCBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uc1RvQ2xlYW4geyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5jcHAKaW5kZXggMzYxOGZkNjdhOGVjM2JkYTJkYzA3OTc4MGE1
YzNiNjE1ZmI0ZGE5Yy4uNzNiMDE5Njc1OTRlMGFlNGQ2MmNiZmU1ZGY2NmM3MWQ3ZjAwYmE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIExpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50
KHVpbnQ2NF90IGlkZW50aWZpZXIsIE5ldHdvcmtSVENQcm92aWRlciYgcnRjUHJvdmlkZXIsIHN0
ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmIHNvY2tldCwgVHlwZSB0eXBl
KQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fcnRjUHJvdmlkZXIocnRjUHJvdmlkZXIpCiAgICAgLCBtX3NvY2tldChXVEZNb3ZlKHNv
Y2tldCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKaW5kZXggZTRhY2I2MjcxMTU5Y2I5NmMx
Nzg3MDAxYTllZWE5ZThkNjY4MDI3Zi4uYmY4N2VmYWYzOGNhMWViMzQzZTYzMmY4ZWRmMzQ1YTA5
ZTM1YTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNTQsMTEgKzU0LDEyIEBAIHB1
YmxpYzoKICAgICBMaWJXZWJSVENTb2NrZXRDbGllbnQodWludDY0X3QgaWRlbnRpZmllciwgTmV0
d29ya1JUQ1Byb3ZpZGVyJiwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+
JiYsIFR5cGUpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQor
ICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1JU
Q1NvY2tldDsKIAotICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHNldE9wdGlvbihpbnQgb3B0
aW9uLCBpbnQgdmFsdWUpOwogICAgIHZvaWQgc2VuZFRvKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYsIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9u
cyYpOwogCkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaWduYWxBZGRyZXNz
UmVhZHkoKTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBUeXBlIG1fdHlwZTsK
ICAgICBOZXR3b3JrUlRDUHJvdmlkZXImIG1fcnRjUHJvdmlkZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IG1fc29ja2V0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggY2VjMDIyY2FkMzdmYzljZmM2ZWJkODI3MWJlOWZiNWNhNmRjMGJmMC4uMGEy
MGNlZDYzNjZjZDFmNmNkZTQxZDE4NTk2ZDJkNDU3NWY1NmVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKQEAgLTIxNSw2ICsyMTUsMzQgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnJlc29s
dmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8KICAgICBy
ZXNvbHZlci0+cnRjUHJvdmlkZXIubV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCByZXNv
bHZlci0+aWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxp
c3RlbmluZ1NvY2tldHMoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9y
PHVpbnQ2NF90PiBsaXN0ZW5pbmdTb2NrZXRJRHM7CisgICAgICAgIGZvciAoYXV0byYga2V5VmFs
dWUgOiBtX3NvY2tldHMpIHsKKyAgICAgICAgICAgIGlmIChrZXlWYWx1ZS52YWx1ZS0+dHlwZSgp
ID09IExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKQorICAgICAgICAgICAg
ICAgIGxpc3RlbmluZ1NvY2tldElEcy5hcHBlbmQoa2V5VmFsdWUua2V5KTsKKyAgICAgICAgfQor
ICAgICAgICBmb3IgKGF1dG8gaWQgOiBsaXN0ZW5pbmdTb2NrZXRJRHMpCisgICAgICAgICAgICBt
X3NvY2tldHMuZ2V0KGlkKS0+Y2xvc2UoKTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm92aWRlciA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5pbmdTb2NrZXRJRHMgPSBXVEZNb3ZlKGxp
c3RlbmluZ1NvY2tldElEcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm92aWRlci0+ZmluaXNoQ2xvc2lu
Z0xpc3RlbmluZ1NvY2tldHMobGlzdGVuaW5nU29ja2V0SURzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtSVENQcm92
aWRlcjo6ZmluaXNoQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgc29ja2V0SURzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogc29ja2V0SURzKQor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENT
b2NrZXQ6OlNpZ25hbENsb3NlKEVDT05OQUJPUlRFRCksIGlkZW50aWZpZXIpOworfQorCiBzdHJ1
Y3QgTmV0d29ya01lc3NhZ2VEYXRhIDogcHVibGljIHJ0Yzo6TWVzc2FnZURhdGEgewogICAgIE5l
dHdvcmtNZXNzYWdlRGF0YShSZWY8TmV0d29ya1JUQ1Byb3ZpZGVyPiYmIHJ0Y1Byb3ZpZGVyLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgICAgIDogcnRjUHJvdmlkZXIoV1RGTW92
ZShydGNQcm92aWRlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggMmFiMmJmNTk5MjllMDVkNzRm
OGRlODZkNTk4OGNlMDU0OGU2Zjc1Yi4uNDQwYzcwYmZmYTA3ZmQyNmJhOGEwMTNlMjc2ZDYyOGZm
MTg4MTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZW5kRnJvbU1haW5UaHJlYWQoRnVuY3Rpb248dm9pZChJUEM6OkNvbm5lY3Rpb24m
KT4mJik7CiAKICAgICB2b2lkIG5ld0Nvbm5lY3Rpb24oTGliV2ViUlRDU29ja2V0Q2xpZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+JiYpOworICAgIHZvaWQgY2xv
c2VMaXN0ZW5pbmdTb2NrZXRzKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKQEAgLTg2LDYgKzg3LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopOwogCisgICAgdm9pZCBmaW5pc2hDbG9z
aW5nTGlzdGVuaW5nU29ja2V0cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYpOworCiAgICAgc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiwg
Q0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKik7CiAKICAgICBzdHJ1
Y3QgUmVzb2x2ZXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314876</attachid>
            <date>2017-07-07 14:04:52 -0700</date>
            <delta_ts>2017-07-07 16:45:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170707140451.patch</filename>
            <type>text/plain</type>
            <size>13386</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwYWZlOWY4YzU1Njc4
MTk0M2FhYzkwMDhkMWU5ZDdlZjU0YTc3Mi4uOWI2ZTk0ZTI2MzRhYzRjNzhhMGFlMmEwODJjYzM1
MGZlYzU5ZTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgVGhlcmUgbWlnaHQgYmUgc3RpbGwgc29tZSByYXJlIGNhc2VzIHdoZXJlIHRo
ZSBXZWJQcm9jZXNzIHdpbGwgYXNrIHRvIGNyZWF0ZSBuZXcgbGlzdGVuaW5nIHNvY2tldHMgYWZ0
ZXIgdGhlIGNsZWFuLXVwLgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0
IGJlIHRvIGltcHJvdmUgc2VsZWN0L2NhbmNlbCBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRo
ZSBzdGFjayB1c2luZyBDRlN0cmVhbS4KKworICAgICAgIFRlc3RlZCB0aHJvdWdoIG1hbnVhbCB0
ZXN0aW5nIGJ5IGdvaW5nIHRvIGEgd2Vic2l0ZSBkb2luZyBXZWJSVEMsIGhvbWluZyBvdXQgc28g
dGhhdCB0aGUgbmV0d29yayBwcm9jZXNzIGlzIHN1c3BlbmRlZCBhbmQgcmVvcGVuaW5nIFNhZmFy
aS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFudXBGb3JTdXNwZW5zaW9uKToKKyAgICAgICAgUHJveHlpbmcgY2FsbCB0byBjbGVhbiBm
b3Igc3VzcGVuc2lvbiB0byBydGMgcHJvdmlkZXIgc28gdGhhdCBpdCB3aWxsCisgICAgICAgIGNs
b3NlIGxpc3RlbmluZyBzb2NrZXRzLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpuZWVkVG9DbGVhbnVwRm9yU3VzcGVuc2lvbik6CisgICAgICAgIE9u
bHkgcmV0dXJuaW5nIHRydWUgaWYgdGhpcyBjb25uZWN0aW9uIGlzIGRvaW5nIFdlYlJUQyBzdHVm
Zi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFu
dXBGb3JTdXNwZW5zaW9uKToKKyAgICAgICAgQ2xlYW4tdXAgaXMgZG9uZSBhc3luY2hyb25vdXNs
eSBhcyBpdCBjYW4gaGFwcGVuIGluIGJhY2tncm91bmQgdGhyZWFkcy4KKyAgICAgICAgSGVuY2Ug
d2h5IHBhc3NpbmcgYSBjYWxsYmFjayBhcyBwYXJhbWV0ZXIuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKTogSGVscGVyIHJvdXRpbmUKKyAgICAgICAg
dG8gbm90aWZ5IFVJIHByb2Nlc3MgdGhhdCBuZXR3b3JrIHByb2Nlc3MgY2xlYW4gdXAgaXMgZG9u
ZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQpOiBEb2luZyB0aGUgY2xlYW4tdXAKKyAgICAgICAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0
IG5lZWRzIGl0LgorICAgICAgICBNYWtpbmcgc3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBj
bGVhbi11cCBiZWluZyBjb21wbGV0ZWQgb25jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
Lmg6IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAgICAg
VXNlZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2NrZXRz
IGFuZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNs
b3NlTGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAgICAg
IGFuZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlzIGNs
b3NlZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBuZWVk
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2luZ0xp
c3RlbmluZ1NvY2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuaDoKKwogMjAxNy0wNy0wNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxOTIzOCwg
cjIxOTIzOSwgYW5kIHIyMTkyNDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
MDE4MWNlY2I2ZTFmY2RmMWQyM2I4ZDIxYTE3MGY0MDAxNjBiNGQ0My4uMzYwMDViYTMyYTE3ODg0
MDY2MTZiMmJmNWViODNmYWYwMmVmZjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMTg5LDYgKzE4OSwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkZXN0cm95U29ja2V0U3RyZWFtKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgbV9uZXR3b3Jr
U29ja2V0U3RyZWFtcy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFudXBGb3JTdXNwZW5zaW9uKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgbV9y
dGNQcm92aWRlci0+Y2xvc2VMaXN0ZW5pbmdTb2NrZXRzKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
Y2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYg
bG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggOWIzY2I1NDk1M2Y4ZTQ3MDM1MWFiZWE2M2FjNjIwZDg0YTU0NmRkZS4uOWJkY2Fk
YTkwNDJkZjZkZDc0ZDEwNGZlZTUxMzcyMjRhNThhYzIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC02NCw2ICs2NCwxNSBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBnZXRCbG9iRGF0YUZpbGVSZWZlcmVuY2VGb3JQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCk7CiAKKyAgICBib29sIG5lZWRUb0NsZWFudXBGb3JTdXNwZW5zaW9u
KCkgY29uc3QKKyAgICB7CisjaWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgcmV0dXJuIG1fcnRj
UHJvdmlkZXI7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB2b2lk
IGNsZWFudXBGb3JTdXNwZW5zaW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMzJkNmIzOWFhZDhhYTljMDE3YWNhMGExMDc5ZmM2YjdiMDE1Y2Ew
Yy4uZmMzYjU0MDlmNGM0YTM1ZWU5ODBkNGIwZWUxOGJlZDEyMWQ5NDg4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjQwLDkg
KzY0MCw0MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp0ZXJtaW5hdGUoKQogICAgIENoaWxkUHJv
Y2Vzczo6dGVybWluYXRlKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkoYm9vbCYgaGFuZGxlZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Om5v
dGlmeVByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGlu
ZyBQcm9jZXNzUmVhZHlUb1N1c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpQ
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFj
dHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQg
c2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpCiB7CiAgICAgbG93TWVtb3J5SGFu
ZGxlcihDcml0aWNhbDo6WWVzKTsKKworICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFk
eVRvU3VzcGVuZCA9PSBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKQor
ICAgICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uc1RvQ2xlYW4gPSAwOworCisgICAgZm9yIChh
dXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYg
KCFjb25uZWN0aW9uLT5uZWVkVG9DbGVhbnVwRm9yU3VzcGVuc2lvbigpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAt
IE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKCkgc3RhcnRlZCBjbGVhbmlu
ZyB3ZWIgcHJvY2VzcyBjb25uZWN0aW9uICVwIiwgdGhpcywgY29ubmVjdGlvbi5nZXQoKSk7Cisg
ICAgICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCA9PSBTaG91bGRB
Y2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKQorICAgICAgICAgICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnNUb0NsZWFuKys7CisKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xlYW51cEZv
clN1c3BlbnNpb24oW3RoaXMsIHNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kLCBj
b25uZWN0aW9uID0gY29ubmVjdGlvbi5nZXQoKV0geworICAgICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9T
dXNwZW5kKCkgZmluaXNoZWQgY2xlYW5pbmcgd2ViIHByb2Nlc3MgY29ubmVjdGlvbiAlcCIsIHRo
aXMsIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKHNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIS0tbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbnNUb0NsZWFuKQorICAgICAgICAgICAgICAgIG5vdGlmeVByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkQWNrbm93bGVk
Z2VXaGVuUmVhZHlUb1N1c3BlbmQgPT0gU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3Bl
bmQ6OlllcyAmJiAhbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnNUb0NsZWFuKQorICAgICAgICBub3Rp
ZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShib29sJiBoYW5kbGVkKQoreworICAgIGFjdHVhbFBy
ZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsK
ICAgICBoYW5kbGVkID0gdHJ1ZTsKIH0KIApAQCAtNjUwLDkgKzY4NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIiwgdGhp
cyk7CiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKLQotICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3Vz
cGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNwZW5kIElQQyBtZXNzYWdlIiwgdGhpcyk7
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCksIDApOworICAgIGFjdHVhbFByZXBh
cmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Olllcyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjcxZmEy
NzExYTEwODhhODRmNTIyMGI3ZDJlMzY5ZWRjNTUxYjY0Ny4uZTUzOGVlMTg5YzRjNTk1ODEzNmQz
ZmNhZTMyMWI4YTBjM2RmNWE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMzQsNiArMTM0LDEwIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwpOwogCisgICAgZW51bSBjbGFzcyBTaG91bGRB
Y2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCB7IE5vLCBZZXMgfTsKKyAgICB2b2lkIGFjdHVh
bFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwor
ICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CisKICAgICAvLyBDaGlsZFBy
b2Nlc3MKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJy
aWRlOwpAQCAtMjM2LDYgKzI0MCw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNl
bmRpZgorCisgICAgdWludDY0X3QgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnNUb0NsZWFuIHsgMCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3Bw
CmluZGV4IDM2MThmZDY3YThlYzNiZGEyZGMwNzk3ODBhNWMzYjYxNWZiNGRhOWMuLjczYjAxOTY3
NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2YwMGJhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGll
bnQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBMaWJXZWJSVENT
b2NrZXRDbGllbnQ6OkxpYldlYlJUQ1NvY2tldENsaWVudCh1aW50NjRfdCBpZGVudGlmaWVyLCBO
ZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4mJiBzb2NrZXQsIFR5cGUgdHlwZSkKICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3J0Y1Byb3ZpZGVyKHJ0Y1By
b3ZpZGVyKQogICAgICwgbV9zb2NrZXQoV1RGTW92ZShzb2NrZXQpKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5oCmluZGV4IGU0YWNiNjI3MTE1OWNiOTZjMTc4NzAwMWE5ZWVhOWU4ZDY2ODAyN2Yu
LmJmODdlZmFmMzhjYTFlYjM0M2U2MzJmOGVkZjM0NWEwOWUzNWE3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmgKQEAgLTU0LDExICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgTGliV2ViUlRDU29j
a2V0Q2xpZW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIE5ldHdvcmtSVENQcm92aWRlciYsIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmLCBUeXBlKTsKIAogICAgIHVpbnQ2
NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIGNsb3NlKCk7CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtSVENTb2NrZXQ7CiAKLSAgICB2b2lkIGNs
b3NlKCk7CiAgICAgdm9pZCBzZXRPcHRpb24oaW50IG9wdGlvbiwgaW50IHZhbHVlKTsKICAgICB2
b2lkIHNlbmRUbyhjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmLCBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmKTsKIApAQCAtNzIsNiArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2lnbmFsQWRkcmVzc1JlYWR5KCk7CiAKICAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBtX3R5cGU7CiAgICAgTmV0d29ya1JUQ1Byb3ZpZGVy
JiBtX3J0Y1Byb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29j
a2V0PiBtX3NvY2tldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGNlYzAyMmNhZDM3
ZmM5Y2ZjNmViZDgyNzFiZTlmYjVjYTZkYzBiZjAuLjBhMjBjZWQ2MzY2Y2QxZjZjZGU0MWQxODU5
NmQyZDQ1NzVmNTZlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0yMTUsNiArMjE1LDM0
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpyZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RS
ZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvCiAgICAgcmVzb2x2ZXItPnJ0Y1Byb3ZpZGVyLm1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgcmVzb2x2ZXItPmlkZW50aWZpZXIpOwogfQog
Cit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xvc2VMaXN0ZW5pbmdTb2NrZXRzKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhbGxPblJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbGlzdGVuaW5nU29j
a2V0SURzOworICAgICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogbV9zb2NrZXRzKSB7CisgICAg
ICAgICAgICBpZiAoa2V5VmFsdWUudmFsdWUtPnR5cGUoKSA9PSBMaWJXZWJSVENTb2NrZXRDbGll
bnQ6OlR5cGU6OlNlcnZlclRDUCkKKyAgICAgICAgICAgICAgICBsaXN0ZW5pbmdTb2NrZXRJRHMu
YXBwZW5kKGtleVZhbHVlLmtleSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvIGlkIDog
bGlzdGVuaW5nU29ja2V0SURzKQorICAgICAgICAgICAgbV9zb2NrZXRzLmdldChpZCktPmNsb3Nl
KCk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdmlkZXIgPSBtYWtlUmVmKCp0aGlz
KSwgbGlzdGVuaW5nU29ja2V0SURzID0gV1RGTW92ZShsaXN0ZW5pbmdTb2NrZXRJRHMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgcHJvdmlkZXItPmZpbmlzaENsb3NpbmdMaXN0ZW5pbmdTb2NrZXRzKGxpc3Rl
bmluZ1NvY2tldElEcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmZpbmlzaENsb3NpbmdMaXN0
ZW5pbmdTb2NrZXRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHNvY2tldElEcywgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBm
b3IgKGF1dG8gaWRlbnRpZmllciA6IHNvY2tldElEcykKKyAgICAgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDU29ja2V0OjpTaWduYWxDbG9zZShFQ09O
TkFCT1JURUQpLCBpZGVudGlmaWVyKTsKK30KKwogc3RydWN0IE5ldHdvcmtNZXNzYWdlRGF0YSA6
IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKICAgICBOZXR3b3JrTWVzc2FnZURhdGEoUmVmPE5l
dHdvcmtSVENQcm92aWRlcj4mJiBydGNQcm92aWRlciwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKQogICAgICAgICA6IHJ0Y1Byb3ZpZGVyKFdURk1vdmUocnRjUHJvdmlkZXIpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5oCmluZGV4IDJhYjJiZjU5OTI5ZTA1ZDc0ZjhkZTg2ZDU5ODhjZTA1NDhlNmY3NWIu
LjQ0MGM3MGJmZmEwN2ZkMjZiYThhMDEzZTI3NmQ2MjhmZjE4ODEwOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZEZyb21NYWluVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdm9pZCBuZXdD
b25uZWN0aW9uKExpYldlYlJUQ1NvY2tldENsaWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiYmKTsKKyAgICB2b2lkIGNsb3NlTGlzdGVuaW5nU29ja2V0cyhXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTmV0d29ya1JUQ1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Jik7CkBAIC04Niw2ICs4Nyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIE9uTWVzc2FnZShydGM6
Ok1lc3NhZ2UqKTsKIAorICAgIHZvaWQgZmluaXNoQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMoY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKwogICAgIHN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYsIENGSG9zdEluZm9UeXBlLCBjb25zdCBD
RlN0cmVhbUVycm9yKiwgdm9pZCopOwogCiAgICAgc3RydWN0IFJlc29sdmVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314898</attachid>
            <date>2017-07-07 16:45:25 -0700</date>
            <delta_ts>2017-07-07 17:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170707164525.patch</filename>
            <type>text/plain</type>
            <size>12841</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwYWZlOWY4YzU1Njc4
MTk0M2FhYzkwMDhkMWU5ZDdlZjU0YTc3Mi4uNDFjOGQxN2NhZjFlZjlmMmMzYTJhNmQ4MDQwNjU3
Yjg4ZjE2ZWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgVGhlcmUgbWlnaHQgYmUgc3RpbGwgc29tZSByYXJlIGNhc2VzIHdoZXJlIHRo
ZSBXZWJQcm9jZXNzIHdpbGwgYXNrIHRvIGNyZWF0ZSBuZXcgbGlzdGVuaW5nIHNvY2tldHMgYWZ0
ZXIgdGhlIGNsZWFuLXVwLgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0
IGJlIHRvIGltcHJvdmUgc2VsZWN0L2NhbmNlbCBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRo
ZSBzdGFjayB1c2luZyBDRlN0cmVhbS4KKworICAgICAgICBUZXN0ZWQgdGhyb3VnaCBtYW51YWwg
dGVzdGluZyBieSBnb2luZyB0byBhIHdlYnNpdGUgZG9pbmcgV2ViUlRDLCBob21pbmcgb3V0IHNv
IHRoYXQgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQgYW5kIHJlb3BlbmluZyBTYWZh
cmkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhbnVwRm9yU3VzcGVuc2lvbik6CisgICAgICAgIFByb3h5aW5nIGNhbGwgdG8gY2xlYW4g
Zm9yIHN1c3BlbnNpb24gdG8gcnRjIHByb3ZpZGVyIHNvIHRoYXQgaXQgd2lsbAorICAgICAgICBj
bG9zZSBsaXN0ZW5pbmcgc29ja2V0cy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6bmVlZFRvQ2xlYW51cEZvclN1c3BlbnNpb24pOgorICAgICAgICBP
bmx5IHJldHVybmluZyB0cnVlIGlmIHRoaXMgY29ubmVjdGlvbiBpcyBkb2luZyBXZWJSVEMgc3R1
ZmYuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVh
bnVwRm9yU3VzcGVuc2lvbik6CisgICAgICAgIENsZWFuLXVwIGlzIGRvbmUgYXN5bmNocm9ub3Vz
bHkgYXMgaXQgY2FuIGhhcHBlbiBpbiBiYWNrZ3JvdW5kIHRocmVhZHMuCisgICAgICAgIEhlbmNl
IHdoeSBwYXNzaW5nIGEgY2FsbGJhY2sgYXMgcGFyYW1ldGVyLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Om5vdGlmeVByb2Nlc3NSZWFkeVRvU3VzcGVuZCk6IEhlbHBlciByb3V0aW5lCisgICAgICAg
IHRvIG5vdGlmeSBVSSBwcm9jZXNzIHRoYXQgbmV0d29yayBwcm9jZXNzIGNsZWFuIHVwIGlzIGRv
bmUuCisgICAgICAgIChXZWJLaXQ6OkRlbGF5ZWRSZWFkeVRvU3VzcGVuZFNjb3BlOjpEZWxheWVk
UmVhZHlUb1N1c3BlbmRTY29wZSk6IEhlbHBlciBjbGFzcyB0byBjYWxsIG5vdGlmeVByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCB3aGVuIG5lZWRlZC4KKyAgICAgICAgKFdlYktpdDo6RGVsYXllZFJlYWR5
VG9TdXNwZW5kU2NvcGU6On5EZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKTogRG9pbmcgdGhl
IGNsZWFuLXVwCisgICAgICAgIGZvciBlYWNoIGNvbm5lY3Rpb24gdGhhdCBuZWVkcyBpdC4KKyAg
ICAgICAgTWFraW5nIHN1cmUgdG8gbm90aWZ5IFVJIHByb2Nlc3Mgb2YgY2xlYW4tdXAgYmVpbmcg
Y29tcGxldGVkIG9uY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBjbGVhbmVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENTb2NrZXRDbGllbnQ6OkxpYldlYlJUQ1NvY2tldENsaWVudCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOiBBZGRpbmcgdHlw
ZSBnZXR0ZXIgYW5kIG1ha2luZyBjbG9zZSBwdWJsaWMuCisgICAgICAgIFVzZWQgYnkgTmV0d29y
a1JUQ1Byb3ZpZGVyIHRvIGlkZW50aWZpeSBsaXN0ZW5pbmcgc29ja2V0cyBhbmQgY2xvc2UgdGhl
bS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1Nv
Y2tldHMpOiBXZSBjbG9zZSB0aGUgd2VicnRjIHNvY2tldAorICAgICAgICBhbmQgd2UgYWxzbyBu
b3RpZnkgdGhlIFdlYiBQcm9jZXNzIHRoYXQgdGhlIHNvY2tldCBpcyBjbG9zZWQgc28gdGhhdCBp
dCBjYW4gdGFrZSBhY3Rpb25zIHRvIHJlY3JlYXRlIHNvbWUgaWYgbmVlZGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKwogMjAxNy0wNy0w
NyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxOTIzOCwgcjIxOTIzOSwgYW5kIHIyMTkyNDEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDE4MWNlY2I2ZTFmY2RmMWQyM2I4ZDIxYTE3
MGY0MDAxNjBiNGQ0My4uMzYwMDViYTMyYTE3ODg0MDY2MTZiMmJmNWViODNmYWYwMmVmZjg2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTg5LDYgKzE4OSwxMyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0cm95U29ja2V0U3RyZWFtKHVpbnQ2
NF90IGlkZW50aWZpZXIpCiAgICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5yZW1vdmUoaWRlbnRp
Zmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFudXBG
b3JTdXNwZW5zaW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgbV9ydGNQcm92aWRlci0+Y2xvc2VMaXN0ZW5pbmdT
b2NrZXRzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgorfQorCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0
byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywg
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOWIzY2I1NDk1M2Y4ZTQ3MDM1
MWFiZWE2M2FjNjIwZDg0YTU0NmRkZS4uOWJkY2FkYTkwNDJkZjZkZDc0ZDEwNGZlZTUxMzcyMjRh
NThhYzIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02NCw2ICs2NCwxNSBAQCBw
dWJsaWM6CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBnZXRC
bG9iRGF0YUZpbGVSZWZlcmVuY2VGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKKyAgICBi
b29sIG5lZWRUb0NsZWFudXBGb3JTdXNwZW5zaW9uKCkgY29uc3QKKyAgICB7CisjaWYgVVNFKExJ
QldFQlJUQykKKyAgICAgICAgcmV0dXJuIG1fcnRjUHJvdmlkZXI7CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB2b2lkIGNsZWFudXBGb3JTdXNwZW5zaW9uKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMzJkNmIzOWFh
ZDhhYTljMDE3YWNhMGExMDc5ZmM2YjdiMDE1Y2EwYy4uY2NmZTgzMjRiZTQyNTZiOTQwNzRjOGU2
MDVkNWY0OWVmYTdiZWVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjQwLDE5ICs2NDAsNDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6dGVybWluYXRlKCkKICAgICBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0ZSgpOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhh
bmRsZWQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQo
KQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJv
Y2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlU
b1N1c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1
c3BlbmQoKSwgMCk7Cit9CisKK2NsYXNzIERlbGF5ZWRSZWFkeVRvU3VzcGVuZFNjb3BlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RGVsYXllZFJlYWR5VG9TdXNwZW5kU2NvcGU+IHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBEZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MpIDogbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykgeyB9CisgICAg
fkRlbGF5ZWRSZWFkeVRvU3VzcGVuZFNjb3BlKCkgeyBtX25ldHdvcmtQcm9jZXNzLm5vdGlmeVBy
b2Nlc3NSZWFkeVRvU3VzcGVuZCgpOyB9Citwcml2YXRlOgorICAgIE5ldHdvcmtQcm9jZXNzJiBt
X25ldHdvcmtQcm9jZXNzOworfTsKKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFy
ZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCBzaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCkKIHsKICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsOjpZZXMpOworCisgICAgUmVmUHRyPERlbGF5ZWRSZWFkeVRvU3VzcGVuZFNjb3BlPiBkZWxh
eWVkUmVhZHlUb1N1c3BlbmQgPSAoc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQg
PT0gU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6OlllcykgPyBhZG9wdFJlZihu
ZXcgRGVsYXllZFJlYWR5VG9TdXNwZW5kU2NvcGUoKnRoaXMpKSA6IG51bGxwdHI7CisKKyAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykgeworICAgICAg
ICBpZiAoIWNvbm5lY3Rpb24tPm5lZWRUb0NsZWFudXBGb3JTdXNwZW5zaW9uKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoKSBzdGFydGVkIGNs
ZWFuaW5nIHdlYiBwcm9jZXNzIGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBjb25uZWN0aW9uLmdldCgp
KTsKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oW3RoaXMsIGRlbGF5
ZWRSZWFkeVRvU3VzcGVuZCwgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24uZ2V0KCldIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
czo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZCgpIGZpbmlzaGVkIGNsZWFuaW5nIHdlYiBwcm9jZXNz
IGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBjb25uZWN0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJv
b2wmIGhhbmRsZWQpCit7CisgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3ds
ZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAgIGhhbmRsZWQgPSB0cnVlOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKIHsKICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoKSIsIHRoaXMpOwotICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7Ci0KLSAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnBy
ZXBhcmVUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2Fn
ZSIsIHRoaXMpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKKyAgICBh
Y3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5k
OjpZZXMpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5k
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGY3MWZhMjcxMWExMDg4YTg0ZjUyMjBiN2QyZTM2OWVkYzU1MWI2NDcuLjA2MDNmYmMyODFk
ZDRmYThiNDgyNWNhOTQzZDkyN2UwMmI3MThjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0LDYgKzEzNCwxMSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsKTsKIAorICAgIGVudW0gY2xh
c3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgeyBObywgWWVzIH07CisgICAg
dm9pZCBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9T
dXNwZW5kKTsKKyAgICB2b2lkIG5vdGlmeVByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOworICAgIGZy
aWVuZCBjbGFzcyBEZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZTsKKwogICAgIC8vIENoaWxkUHJv
Y2VzcwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vz
c05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDU29ja2V0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCmluZGV4IDM2MThmZDY3YThlYzNiZGEyZGMw
Nzk3ODBhNWMzYjYxNWZiNGRhOWMuLjczYjAxOTY3NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2Yw
MGJhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OkxpYldlYlJUQ1NvY2tl
dENsaWVudCh1aW50NjRfdCBpZGVudGlmaWVyLCBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3Zp
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4mJiBzb2NrZXQsIFR5
cGUgdHlwZSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV90eXBlKHR5
cGUpCiAgICAgLCBtX3J0Y1Byb3ZpZGVyKHJ0Y1Byb3ZpZGVyKQogICAgICwgbV9zb2NrZXQoV1RG
TW92ZShzb2NrZXQpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IGU0YWNiNjI3MTE1
OWNiOTZjMTc4NzAwMWE5ZWVhOWU4ZDY2ODAyN2YuLmJmODdlZmFmMzhjYTFlYjM0M2U2MzJmOGVk
ZjM0NWEwOWUzNWE3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKQEAgLTU0LDExICs1NCwx
MiBAQCBwdWJsaWM6CiAgICAgTGliV2ViUlRDU29ja2V0Q2xpZW50KHVpbnQ2NF90IGlkZW50aWZp
ZXIsIE5ldHdvcmtSVENQcm92aWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0
U29ja2V0PiYmLCBUeXBlKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5l
dHdvcmtSVENTb2NrZXQ7CiAKLSAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBzZXRPcHRpb24o
aW50IG9wdGlvbiwgaW50IHZhbHVlKTsKICAgICB2b2lkIHNlbmRUbyhjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmLCBjb25zdCBydGM6OlBhY2tl
dE9wdGlvbnMmKTsKIApAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2lnbmFs
QWRkcmVzc1JlYWR5KCk7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBt
X3R5cGU7CiAgICAgTmV0d29ya1JUQ1Byb3ZpZGVyJiBtX3J0Y1Byb3ZpZGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBtX3NvY2tldDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwCmluZGV4IGNlYzAyMmNhZDM3ZmM5Y2ZjNmViZDgyNzFiZTlmYjVjYTZkYzBi
ZjAuLjU3ZTg2YTk3MTlkZmM5M2U1NDYwOTVmODM4ZGRhZDkyYzVhZjJhNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwCkBAIC0yMTUsNiArMjE1LDI3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVy
OjpyZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZv
CiAgICAgcmVzb2x2ZXItPnJ0Y1Byb3ZpZGVyLm1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2Vz
KSwgcmVzb2x2ZXItPmlkZW50aWZpZXIpOwogfQogCit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6
Y2xvc2VMaXN0ZW5pbmdTb2NrZXRzKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IFZlY3Rvcjx1aW50NjRfdD4gbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnM7CisgICAgICAgIGZv
ciAoYXV0byYga2V5VmFsdWUgOiBtX3NvY2tldHMpIHsKKyAgICAgICAgICAgIGlmIChrZXlWYWx1
ZS52YWx1ZS0+dHlwZSgpID09IExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQ
KQorICAgICAgICAgICAgICAgIGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzLmFwcGVuZChrZXlW
YWx1ZS5rZXkpOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byBpZCA6IGxpc3RlbmluZ1Nv
Y2tldElkZW50aWZpZXJzKQorICAgICAgICAgICAgbV9zb2NrZXRzLmdldChpZCktPmNsb3NlKCk7
CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdmlkZXIgPSBtYWtlUmVmKCp0aGlzKSwg
bGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMgPSBXVEZNb3ZlKGxpc3RlbmluZ1NvY2tldElkZW50
aWZpZXJzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChwcm92aWRlci0+bV9jb25uZWN0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBsaXN0ZW5pbmdTb2NrZXRJZGVu
dGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXItPm1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1NvY2tldDo6U2lnbmFsQ2xvc2UoRUNPTk5B
Qk9SVEVEKSwgaWRlbnRpZmllcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogc3RydWN0IE5ldHdvcmtN
ZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsKICAgICBOZXR3b3JrTWVzc2Fn
ZURhdGEoUmVmPE5ldHdvcmtSVENQcm92aWRlcj4mJiBydGNQcm92aWRlciwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKQogICAgICAgICA6IHJ0Y1Byb3ZpZGVyKFdURk1vdmUocnRjUHJvdmlk
ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IDJhYjJiZjU5OTI5ZTA1ZDc0ZjhkZTg2ZDU5ODhj
ZTA1NDhlNmY3NWIuLjUwODM0N2UxMThjYzcwNzRlM2I3YWNiYzdhY2U2MTYzOWU1YmQ2ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Vu
ZEZyb21NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAg
ICAgdm9pZCBuZXdDb25uZWN0aW9uKExpYldlYlJUQ1NvY2tldENsaWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmKTsKKyAgICB2b2lkIGNsb3NlTGlzdGVuaW5n
U29ja2V0cyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314902</attachid>
            <date>2017-07-07 17:17:59 -0700</date>
            <delta_ts>2017-07-08 10:25:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170707171758.patch</filename>
            <type>text/plain</type>
            <size>12241</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwYWZlOWY4YzU1Njc4
MTk0M2FhYzkwMDhkMWU5ZDdlZjU0YTc3Mi4uNWIwNzNkNmVhNTk1OWRhNGQ2MzhkNzBmZGIzMDA0
ZDk0MmQwNTAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgVGhlcmUgbWlnaHQgYmUgc3RpbGwgc29tZSByYXJlIGNhc2VzIHdoZXJlIHRo
ZSBXZWJQcm9jZXNzIHdpbGwgYXNrIHRvIGNyZWF0ZSBuZXcgbGlzdGVuaW5nIHNvY2tldHMgYWZ0
ZXIgdGhlIGNsZWFuLXVwLgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0
IGJlIHRvIGltcHJvdmUgc2VsZWN0L2NhbmNlbCBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRo
ZSBzdGFjayB1c2luZyBDRlN0cmVhbS4KKworICAgICAgICBUZXN0ZWQgdGhyb3VnaCBtYW51YWwg
dGVzdGluZyBieSBnb2luZyB0byBhIHdlYnNpdGUgZG9pbmcgV2ViUlRDLCBob21pbmcgb3V0IHNv
IHRoYXQgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQgYW5kIHJlb3BlbmluZyBTYWZh
cmkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhbnVwRm9yU3VzcGVuc2lvbik6CisgICAgICAgIFByb3h5aW5nIGNhbGwgdG8gY2xlYW4g
Zm9yIHN1c3BlbnNpb24gdG8gcnRjIHByb3ZpZGVyIHNvIHRoYXQgaXQgd2lsbAorICAgICAgICBj
bG9zZSBsaXN0ZW5pbmcgc29ja2V0cy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2xlYW51cEZvclN1c3BlbnNpb24pOgorICAgICAgICBDbGVhbi11
cCBpcyBkb25lIGFzeW5jaHJvbm91c2x5IGFzIGl0IGNhbiBoYXBwZW4gaW4gYmFja2dyb3VuZCB0
aHJlYWRzLgorICAgICAgICBIZW5jZSB3aHkgcGFzc2luZyBhIGNhbGxiYWNrIGFzIHBhcmFtZXRl
ci4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQpOiBI
ZWxwZXIgcm91dGluZQorICAgICAgICB0byBub3RpZnkgVUkgcHJvY2VzcyB0aGF0IG5ldHdvcmsg
cHJvY2VzcyBjbGVhbiB1cCBpcyBkb25lLgorICAgICAgICAoV2ViS2l0OjpEZWxheWVkUmVhZHlU
b1N1c3BlbmRTY29wZTo6RGVsYXllZFJlYWR5VG9TdXNwZW5kU2NvcGUpOiBIZWxwZXIgY2xhc3Mg
dG8gY2FsbCBub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQgd2hlbiBzZGVkLgorICAgICAgICAo
V2ViS2l0OjpEZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZTo6fkRlbGF5ZWRSZWFkeVRvU3VzcGVu
ZFNjb3BlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVU
b1N1c3BlbmQpOiBEb2luZyB0aGUgY2xlYW4tdXAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0IG5l
ZWRzIGl0LgorICAgICAgICBNYWtpbmcgc3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBjbGVh
bi11cCBiZWluZyBjb21wbGV0ZWQgb25jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6
IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAgICAgVXNl
ZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2NrZXRzIGFu
ZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3Nl
TGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAgICAgIGFu
ZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlzIGNsb3Nl
ZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBuZWVkZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgor
CiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5MjM5LCBhbmQgcjIx
OTI0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwMTgxY2VjYjZlMWZjZGYx
ZDIzYjhkMjFhMTcwZjQwMDE2MGI0ZDQzLi40MThhYjRiZTA4NjMxMmRjYWUwYjczYWI5Y2JiZDY1
NzRlMThmMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xODksNiArMTg5
LDE5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lTb2NrZXRT
dHJlYW0odWludDY0X3QgaWRlbnRpZmllcikKICAgICBtX25ldHdvcmtTb2NrZXRTdHJlYW1zLnJl
bW92ZShpZGVudGlmaWVyKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2xlYW51cEZvclN1c3BlbnNpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisjaWYgVVNFKExJQldFQlJUQykKKyAgICBpZiAoIW1fcnRjUHJvdmlkZXIp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBtX3J0Y1Byb3ZpZGVyLT5jbG9zZUxpc3RlbmluZ1NvY2tldHMoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworI2VuZGlmCit9
CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VM
b2FkKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykK
IHsKICAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGxvYWRQ
YXJhbWV0ZXJzLCAqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5YjNjYjU0
OTUzZjhlNDcwMzUxYWJlYTYzYWM2MjBkODRhNTQ2ZGRlLi5jODc1NzM1NjA2MDE5MWJiNzQzNWQ0
NTg0MWQ5YjBiNDk3ODJiN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY0LDYg
KzY0LDggQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4gZ2V0QmxvYkRhdGFGaWxlUmVmZXJlbmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OwogCisgICAgdm9pZCBjbGVhbnVwRm9yU3VzcGVuc2lvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDMyZDZiMzlhYWQ4YWE5YzAxN2FjYTBhMTA3
OWZjNmI3YjAxNWNhMGMuLjYwNTlmZTBhMDExMmZkZTJmYjY5MzYzODI0MjIxZDQ0NThjZjAxMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTY0MCwxOSArNjQwLDQwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnRlcm1pbmF0ZSgp
CiAgICAgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShib29sJiBoYW5kbGVkKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKK3sKKyAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6Om5vdGlmeVByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNwZW5kIElQQyBtZXNz
YWdlIiwgdGhpcyk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCksIDApOworfQor
CitjbGFzcyBEZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPERl
bGF5ZWRSZWFkeVRvU3VzcGVuZFNjb3BlPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRGVsYXll
ZFJlYWR5VG9TdXNwZW5kU2NvcGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKSA6IG1f
bmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpIHsgfQorICAgIH5EZWxheWVkUmVhZHlUb1N1
c3BlbmRTY29wZSgpIHsgbV9uZXR3b3JrUHJvY2Vzcy5ub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKTsgfQorcHJpdmF0ZToKKyAgICBOZXR3b3JrUHJvY2VzcyYgbV9uZXR3b3JrUHJvY2VzczsK
K307CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxk
QWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlU
b1N1c3BlbmQpCiB7CiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKKworICAg
IFJlZlB0cjxEZWxheWVkUmVhZHlUb1N1c3BlbmRTY29wZT4gZGVsYXllZFJlYWR5VG9TdXNwZW5k
ID0gKHNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kID09IFNob3VsZEFja25vd2xl
ZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpID8gYWRvcHRSZWYobmV3IERlbGF5ZWRSZWFkeVRv
U3VzcGVuZFNjb3BlKCp0aGlzKSkgOiBudWxscHRyOworCisgICAgZm9yIChhdXRvJiBjb25uZWN0
aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPmNsZWFu
dXBGb3JTdXNwZW5zaW9uKFt0aGlzLCBkZWxheWVkUmVhZHlUb1N1c3BlbmQsIGNvbm5lY3Rpb24g
PSBjb25uZWN0aW9uLmdldCgpXSB7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCit7CisgICAgYWN0dWFsUHJl
cGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwog
ICAgIGhhbmRsZWQgPSB0cnVlOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9T
dXNwZW5kKCkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0
d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOwotICAgIGxvd01lbW9yeUhh
bmRsZXIoQ3JpdGljYWw6Olllcyk7Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nl
c3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOwotICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpLCAwKTsKKyAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFj
a25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY3MWZhMjcxMWExMDg4YTg0ZjUyMjBiN2Qy
ZTM2OWVkYzU1MWI2NDcuLjA2MDNmYmMyODFkZDRmYThiNDgyNWNhOTQzZDkyN2UwMmI3MThjMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMTM0LDYgKzEzNCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsb3dNZW1vcnlIYW5kbGVy
KENyaXRpY2FsKTsKIAorICAgIGVudW0gY2xhc3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlU
b1N1c3BlbmQgeyBObywgWWVzIH07CisgICAgdm9pZCBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kKTsKKyAgICB2b2lkIG5vdGlmeVByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOworICAgIGZyaWVuZCBjbGFzcyBEZWxheWVkUmVhZHlUb1N1c3Bl
bmRTY29wZTsKKwogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3Bw
CmluZGV4IDM2MThmZDY3YThlYzNiZGEyZGMwNzk3ODBhNWMzYjYxNWZiNGRhOWMuLjczYjAxOTY3
NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2YwMGJhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGll
bnQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBMaWJXZWJSVENT
b2NrZXRDbGllbnQ6OkxpYldlYlJUQ1NvY2tldENsaWVudCh1aW50NjRfdCBpZGVudGlmaWVyLCBO
ZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4mJiBzb2NrZXQsIFR5cGUgdHlwZSkKICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3J0Y1Byb3ZpZGVyKHJ0Y1By
b3ZpZGVyKQogICAgICwgbV9zb2NrZXQoV1RGTW92ZShzb2NrZXQpKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5oCmluZGV4IGU0YWNiNjI3MTE1OWNiOTZjMTc4NzAwMWE5ZWVhOWU4ZDY2ODAyN2Yu
LmJmODdlZmFmMzhjYTFlYjM0M2U2MzJmOGVkZjM0NWEwOWUzNWE3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmgKQEAgLTU0LDExICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgTGliV2ViUlRDU29j
a2V0Q2xpZW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIE5ldHdvcmtSVENQcm92aWRlciYsIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmLCBUeXBlKTsKIAogICAgIHVpbnQ2
NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIGNsb3NlKCk7CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtSVENTb2NrZXQ7CiAKLSAgICB2b2lkIGNs
b3NlKCk7CiAgICAgdm9pZCBzZXRPcHRpb24oaW50IG9wdGlvbiwgaW50IHZhbHVlKTsKICAgICB2
b2lkIHNlbmRUbyhjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmLCBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmKTsKIApAQCAtNzIsNiArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2lnbmFsQWRkcmVzc1JlYWR5KCk7CiAKICAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBtX3R5cGU7CiAgICAgTmV0d29ya1JUQ1Byb3ZpZGVy
JiBtX3J0Y1Byb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29j
a2V0PiBtX3NvY2tldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGNlYzAyMmNhZDM3
ZmM5Y2ZjNmViZDgyNzFiZTlmYjVjYTZkYzBiZjAuLjU3ZTg2YTk3MTlkZmM5M2U1NDYwOTVmODM4
ZGRhZDkyYzVhZjJhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0yMTUsNiArMjE1LDI3
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpyZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RS
ZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvCiAgICAgcmVzb2x2ZXItPnJ0Y1Byb3ZpZGVyLm1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgcmVzb2x2ZXItPmlkZW50aWZpZXIpOwogfQog
Cit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xvc2VMaXN0ZW5pbmdTb2NrZXRzKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhbGxPblJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbGlzdGVuaW5nU29j
a2V0SWRlbnRpZmllcnM7CisgICAgICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBtX3NvY2tldHMp
IHsKKyAgICAgICAgICAgIGlmIChrZXlWYWx1ZS52YWx1ZS0+dHlwZSgpID09IExpYldlYlJUQ1Nv
Y2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKQorICAgICAgICAgICAgICAgIGxpc3RlbmluZ1Nv
Y2tldElkZW50aWZpZXJzLmFwcGVuZChrZXlWYWx1ZS5rZXkpOworICAgICAgICB9CisgICAgICAg
IGZvciAoYXV0byBpZCA6IGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzKQorICAgICAgICAgICAg
bV9zb2NrZXRzLmdldChpZCktPmNsb3NlKCk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdmlkZXIgPSBtYWtlUmVmKCp0aGlzKSwgbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMgPSBX
VEZNb3ZlKGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChw
cm92aWRlci0+bV9jb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIGlkZW50
aWZpZXIgOiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAg
cHJvdmlkZXItPm1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJU
Q1NvY2tldDo6U2lnbmFsQ2xvc2UoRUNPTk5BQk9SVEVEKSwgaWRlbnRpZmllcik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwogc3RydWN0IE5ldHdvcmtNZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6Ok1lc3Nh
Z2VEYXRhIHsKICAgICBOZXR3b3JrTWVzc2FnZURhdGEoUmVmPE5ldHdvcmtSVENQcm92aWRlcj4m
JiBydGNQcm92aWRlciwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgICAgICA6IHJ0
Y1Byb3ZpZGVyKFdURk1vdmUocnRjUHJvdmlkZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IDJh
YjJiZjU5OTI5ZTA1ZDc0ZjhkZTg2ZDU5ODhjZTA1NDhlNmY3NWIuLjUwODM0N2UxMThjYzcwNzRl
M2I3YWNiYzdhY2U2MTYzOWU1YmQ2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTY4LDYgKzY4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZEZyb21NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
SVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdm9pZCBuZXdDb25uZWN0aW9uKExpYldlYlJU
Q1NvY2tldENsaWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYm
KTsKKyAgICB2b2lkIGNsb3NlTGlzdGVuaW5nU29ja2V0cyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1JU
Q1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314921</attachid>
            <date>2017-07-08 10:25:41 -0700</date>
            <delta_ts>2017-07-08 17:55:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170708102540.patch</filename>
            <type>text/plain</type>
            <size>16866</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwYWZlOWY4YzU1Njc4
MTk0M2FhYzkwMDhkMWU5ZDdlZjU0YTc3Mi4uNGEzMmQzYjI3MDJmNmZjYzQwYzNhY2Q5N2IxZmIz
ZTRlYmQyN2U1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgV2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIGJlaW5nIHN1c3BlbmRlZCwg
aXQgd2lsbCBzdG9wIGNyZWF0aW5nIGxpc3RlbmluZyBzb2NrZXRzLCB1bnRpbCBpdCByZXN1bWVz
LgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0IGJlIHRvIGltcHJvdmUg
c2VsZWN0L2NhbmNlbCBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRoZSBzdGFjayB1c2luZyBD
RlN0cmVhbS4KKworICAgICAgICBUZXN0ZWQgdGhyb3VnaCBtYW51YWwgdGVzdGluZyBieSBnb2lu
ZyB0byBhIHdlYnNpdGUgZG9pbmcgV2ViUlRDLCBob21pbmcgb3V0IHNvIHRoYXQgdGhlIG5ldHdv
cmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQgYW5kIHJlb3BlbmluZyBTYWZhcmkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhbnVwRm9yU3Vz
cGVuc2lvbik6CisgICAgICAgIFByb3h5aW5nIGNhbGwgdG8gY2xlYW4gZm9yIHN1c3BlbnNpb24g
dG8gcnRjIHByb3ZpZGVyIHNvIHRoYXQgaXQgd2lsbAorICAgICAgICBjbG9zZSBsaXN0ZW5pbmcg
c29ja2V0cy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlc3VtZUZyb21TdXNwZW5zaW9uKTogQXV0aG9yaXppbmcgYmFjayBsaXN0ZW5pbmcgc29ja2V0
cy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YW51cEZvclN1c3BlbnNpb24pOgorICAgICAgICBDbGVhbi11cCBpcyBkb25lIGFzeW5jaHJvbm91
c2x5IGFzIGl0IGNhbiBoYXBwZW4gaW4gYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAgICBIZW5j
ZSB3aHkgcGFzc2luZyBhIGNhbGxiYWNrIGFzIHBhcmFtZXRlci4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQpOiBIZWxwZXIgcm91dGluZQorICAgICAg
ICB0byBub3RpZnkgVUkgcHJvY2VzcyB0aGF0IG5ldHdvcmsgcHJvY2VzcyBjbGVhbiB1cCBpcyBk
b25lLgorICAgICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6VGFza0NvdW50ZXIpOiBIZWxwZXIg
Y2xhc3MgdG8gY2FsbCBub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQgd2hlbiBzZGVkLgorICAg
ICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6flRhc2tDb3VudGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQpOiBEb2luZyB0aGUgY2xl
YW4tdXAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0IG5lZWRzIGl0LgorICAgICAgICBNYWtpbmcg
c3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBjbGVhbi11cCBiZWluZyBjb21wbGV0ZWQgb25j
ZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSk6IFJlZW5hYmxlIGxpc3RlbmluZyBzb2NrZXRz
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6
IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAgICAgVXNl
ZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2NrZXRzIGFu
ZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3Nl
TGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAgICAgIGFu
ZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlzIGNsb3Nl
ZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBuZWVkZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2luZ0xpc3Rl
bmluZ1NvY2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjphdXRob3Jp
emVMaXN0ZW5pbmdTb2NrZXRzKTogQXV0aG9yaXplIGNyZWF0aW9uIG9mIGxpc3RlbmluZyBzb2Nr
ZXRzLgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5MjM5LCBh
bmQgcjIxOTI0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwMTgxY2VjYjZl
MWZjZGYxZDIzYjhkMjFhMTcwZjQwMDE2MGI0ZDQzLi4zZDgwOGJiMjQ0NzRhMjI5OGI4YmM4ODNh
OWVmYmU5M2FjMGM2MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xODks
NiArMTg5LDIzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lT
b2NrZXRTdHJlYW0odWludDY0X3QgaWRlbnRpZmllcikKICAgICBtX25ldHdvcmtTb2NrZXRTdHJl
YW1zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorc3RkOjpvcHRpb25hbDxTdXNwZW5zaW9uUmVz
dWx0PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYW51cEZvclN1c3BlbnNpb24o
KQoreworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgaWYgKG1fcnRjUHJvdmlkZXIpCisgICAgICAg
IHJldHVybiBtX3J0Y1Byb3ZpZGVyLT5jbG9zZUxpc3RlbmluZ1NvY2tldHMoKTsKKyNlbmRpZgor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVuZFN1c3BlbnNpb24oKQoreworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgaWYg
KG1fcnRjUHJvdmlkZXIpCisgICAgICAgIG1fcnRjUHJvdmlkZXItPmF1dGhvcml6ZUxpc3Rlbmlu
Z1NvY2tldHMoKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggOWIzY2I1NDk1M2Y4ZTQ3MDM1MWFiZWE2M2FjNjIwZDg0YTU0NmRkZS4u
ZjRkNzlhNTRkMDQwYTJmNjhhZjZmNWE1ZWI4MjVkOTI5YjQ2YzI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC01MSw2ICs1MSwxMiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IHN0cnVjdCBEYXRhS2V5OwogfQogCitjbGFzcyBTdXNwZW5zaW9uUmVzdWx0IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5TdXNwZW5zaW9uUmVzdWx0KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwg
dm9pZCB0aGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCk7
IH0KK307CisKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGljIFJl
ZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+LCBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC02NCw2ICs3
MCw5IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+IGdldEJsb2JEYXRhRmlsZVJlZmVyZW5jZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsK
IAorICAgIHN0ZDo6b3B0aW9uYWw8U3VzcGVuc2lvblJlc3VsdD4gY2xlYW51cEZvclN1c3BlbnNp
b24oKTsKKyAgICB2b2lkIGVuZFN1c3BlbnNpb24oKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggMzJkNmIzOWFhZDhhYTljMDE3YWNhMGExMDc5ZmM2YjdiMDE1Y2EwYy4uNmY5YTkwZDRlMzI2
ZTczNjhmOGU3OGE2MzE2ZDhiZjFlYWE4ZjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjQwLDE5ICs2NDAsNDggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6dGVybWluYXRlKCkKICAgICBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0
ZSgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5KGJvb2wmIGhhbmRsZWQpCitjbGFzcyBUYXNrQ291bnRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFRhc2tDb3VudGVyPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVGFza0NvdW50ZXIoRnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKSA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpIHsg
fQorICAgIH5UYXNrQ291bnRlcigpIHsgbV9jYWxsYmFjaygpOyB9OworCitwcml2YXRlOgorICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3Bl
bmQgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpCiB7CiAgICAgbG93TWVtb3J5
SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKKworICAgIFJlZlB0cjxUYXNrQ291bnRlcj4gZGVsYXll
ZFRhc2tDb3VudGVyOworICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZCA9PSBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKSB7CisgICAgICAg
IGRlbGF5ZWRUYXNrQ291bnRlciA9IGFkb3B0UmVmKG5ldyBUYXNrQ291bnRlcihbdGhpc10gewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQ
cm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nlc3NSZWFk
eVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOworICAgICAgICAgICAgaWYgKHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vzc1JlYWR5VG9T
dXNwZW5kKCksIDApOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBjb25u
ZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVz
dWx0ID0gY29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjphY3R1
YWxQcmVwYXJlVG9TdXNwZW5kKCkgc3RhcnRlZCBzdXNwZW5zaW9uIGNsZWFudXAgZm9yICVwIiwg
dGhpcywgY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQtPnRoZW4oW3RoaXMs
IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLmdldCgpLCBkZWxheWVkVGFza0NvdW50ZXJdIHsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29y
a1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoKSBzdGFydGVkIHN1c3BlbnNpb24gY2xl
YW51cCBmb3IgJXAiLCB0aGlzLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCit7CisgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChT
aG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAgIGhhbmRsZWQgPSB0
cnVlOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKIHsKICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnBy
ZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOwotICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6
Olllcyk7Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nlc3NSZWFkeVRvU3VzcGVu
ZCBJUEMgbWVzc2FnZSIsIHRoaXMpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgp
LCAwKTsKKyAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQcmVw
YXJlVG9TdXNwZW5kKCkKQEAgLTY2MiwxMSArNjkxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIC8vIG1lc3NhZ2UuIEFuZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgYSBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQtCiAgICAgLy8gb3IgTmV0d29ya1Byb2Nlc3NQcm94eTo6
RGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24tIG1lc3NhZ2UsIGJ1dCBub3QgYm90aC4KICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmNhbmNl
bFByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5z
aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogewog
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc0RpZFJlc3VtZSgpIiwgdGhpcyk7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNp
b24oKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IGY3MWZhMjcxMWExMDg4YTg0ZjUyMjBiN2QyZTM2OWVkYzU1MWI2NDcuLmJk
MjE4OGJiNGVjMGI3YWE4NTFlM2RiZjliYTgwZWQyNzg1YzkyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0LDYgKzEzNCw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwpOwogCisgICAg
ZW51bSBjbGFzcyBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCB7IE5vLCBZZXMg
fTsKKyAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQpOworCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdm9pZCBpbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBv
dmVycmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5jcHAKaW5kZXggMzYxOGZkNjdhOGVjM2JkYTJkYzA3OTc4MGE1YzNiNjE1ZmI0ZGE5Yy4u
NzNiMDE5Njc1OTRlMGFlNGQ2MmNiZmU1ZGY2NmM3MWQ3ZjAwYmE1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIExp
YldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50KHVpbnQ2NF90IGlkZW50
aWZpZXIsIE5ldHdvcmtSVENQcm92aWRlciYgcnRjUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OkFzeW5jUGFja2V0U29ja2V0PiYmIHNvY2tldCwgVHlwZSB0eXBlKQogICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fcnRjUHJvdmlk
ZXIocnRjUHJvdmlkZXIpCiAgICAgLCBtX3NvY2tldChXVEZNb3ZlKHNvY2tldCkpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDU29ja2V0Q2xpZW50LmgKaW5kZXggZTRhY2I2MjcxMTU5Y2I5NmMxNzg3MDAxYTllZWE5ZThk
NjY4MDI3Zi4uYmY4N2VmYWYzOGNhMWViMzQzZTYzMmY4ZWRmMzQ1YTA5ZTM1YTdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNTQsMTEgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBMaWJX
ZWJSVENTb2NrZXRDbGllbnQodWludDY0X3QgaWRlbnRpZmllciwgTmV0d29ya1JUQ1Byb3ZpZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+JiYsIFR5cGUpOwogCiAg
ICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgY2xvc2Uo
KTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1JUQ1NvY2tldDsKIAotICAg
IHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHNldE9wdGlvbihpbnQgb3B0aW9uLCBpbnQgdmFsdWUp
OwogICAgIHZvaWQgc2VuZFRvKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYsIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYpOwogCkBAIC03Miw2
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaWduYWxBZGRyZXNzUmVhZHkoKTsKIAogICAg
IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBOZXR3b3JrUlRD
UHJvdmlkZXImIG1fcnRjUHJvdmlkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQ+IG1fc29ja2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggY2Vj
MDIyY2FkMzdmYzljZmM2ZWJkODI3MWJlOWZiNWNhNmRjMGJmMC4uMTI4NWVkNGZlZDZmZTk2MDI4
MDI1NThiMjFjODY1NzFhZWQxZWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTEwOSw2
ICsxMDksMTEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldCh1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3JrOjoKIAogdm9pZCBOZXR3b3JrUlRDUHJv
dmlkZXI6OmNyZWF0ZVNlcnZlclRDUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBS
VENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50
MTZfdCBtYXhQb3J0LCBpbnQgb3B0aW9ucykKIHsKKyAgICBpZiAoIW1faXNMaXN0ZW5pbmdTb2Nr
ZXRBdXRob3JpemVkKSB7CisgICAgICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6OlNp
Z25hbENsb3NlKDEpLCBpZGVudGlmaWVyKTsKKyAgICB9CisKICAgICBjYWxsT25SVENOZXR3b3Jr
VGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBhZGRyZXNzID0gUlRDTmV0d29yazo6aXNvbGF0ZWRD
b3B5KGFkZHJlc3MudmFsdWUpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldChtX3BhY2tl
dFNvY2tldEZhY3RvcnktPkNyZWF0ZVNlcnZlclRjcFNvY2tldChhZGRyZXNzLCBtaW5Qb3J0LCBt
YXhQb3J0LCBvcHRpb25zKSk7CiAgICAgICAgIGNyZWF0ZVNvY2tldChpZGVudGlmaWVyLCBXVEZN
b3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKTsKQEAg
LTIxNSw2ICsyMjAsNTggQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnJlc29sdmVkTmFtZShD
Rkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8KICAgICByZXNvbHZlci0+
cnRjUHJvdmlkZXIubV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
UlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCByZXNvbHZlci0+aWRl
bnRpZmllcik7CiB9CiAKK2NsYXNzIERlZmVycmVkQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHNSZXN1
bHQgZmluYWwgOiBwdWJsaWMgU3VzcGVuc2lvblJlc3VsdCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgRGVmZXJyZWRDbG9zaW5nTGlzdGVuaW5nU29ja2V0c1Jlc3VsdChSZWY8TmV0d29ya1JUQ1By
b3ZpZGVyPiYmIHByb3ZpZGVyKSA6IG1fcHJvdmlkZXIoV1RGTW92ZShwcm92aWRlcikpIHsgfQor
Citwcml2YXRlOgorICAgIHZvaWQgdGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFj
aykgZmluYWwgeworICAgICAgICBpZiAobV9wcm92aWRlci0+bV9pc0Nsb3NpbmdMaXN0ZW5pbmdT
b2NrZXRzKSB7CisgICAgICAgICAgICBtX3Byb3ZpZGVyLT5tX2Nsb3NpbmdMaXN0ZW5pbmdTb2Nr
ZXRDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY2FsbGJhY2spOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorCisgICAgUmVmPE5l
dHdvcmtSVENQcm92aWRlcj4gbV9wcm92aWRlcjsKK307CisKK3N0ZDo6b3B0aW9uYWw8U3VzcGVu
c2lvblJlc3VsdD4gTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1NvY2tldHMoKQor
eworICAgIGlmICghbV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXplZCA9IGZh
bHNlOworICAgIG1faXNDbG9zaW5nTGlzdGVuaW5nU29ja2V0cyA9IHRydWU7CisgICAgY2FsbE9u
UlRDTmV0d29ya1RocmVhZChbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ2
NF90PiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVyczsKKyAgICAgICAgZm9yIChhdXRvJiBrZXlW
YWx1ZSA6IG1fc29ja2V0cykgeworICAgICAgICAgICAgaWYgKGtleVZhbHVlLnZhbHVlLT50eXBl
KCkgPT0gTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJUQ1ApCisgICAgICAgICAg
ICAgICAgbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMuYXBwZW5kKGtleVZhbHVlLmtleSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvIGlkIDogbGlzdGVuaW5nU29ja2V0SWRlbnRpZmll
cnMpCisgICAgICAgICAgICBtX3NvY2tldHMuZ2V0KGlkKS0+Y2xvc2UoKTsKKworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm92aWRlciA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5pbmdTb2Nr
ZXRJZGVudGlmaWVycyA9IFdURk1vdmUobGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMpXSB7Cisg
ICAgICAgICAgICBwcm92aWRlci0+ZmluaXNoQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMobGlzdGVu
aW5nU29ja2V0SWRlbnRpZmllcnMpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICByZXR1cm4g
RGVmZXJyZWRDbG9zaW5nTGlzdGVuaW5nU29ja2V0c1Jlc3VsdCgqdGhpcyk7Cit9CisKK3ZvaWQg
TmV0d29ya1JUQ1Byb3ZpZGVyOjpmaW5pc2hDbG9zaW5nTGlzdGVuaW5nU29ja2V0cyhjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycykKK3sKKyAgICBpZiAo
bV9jb25uZWN0aW9uKSB7CisgICAgICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbGlzdGVuaW5n
U29ja2V0SWRlbnRpZmllcnMpCisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENTb2NrZXQ6OlNpZ25hbENsb3NlKEVDT05OQUJPUlRFRCks
IGlkZW50aWZpZXIpOworICAgIH0KKworICAgIGlmIChtX2Nsb3NpbmdMaXN0ZW5pbmdTb2NrZXRD
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9jbG9zaW5nTGlzdGVuaW5nU29ja2V0Q29tcGxl
dGlvbkhhbmRsZXIudmFsdWUoKTsKKyAgICBtX2Nsb3NpbmdMaXN0ZW5pbmdTb2NrZXRDb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2lzQ2xvc2luZ0xpc3RlbmluZ1NvY2tl
dHMgPSBmYWxzZTsKK30KKwogc3RydWN0IE5ldHdvcmtNZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6
Ok1lc3NhZ2VEYXRhIHsKICAgICBOZXR3b3JrTWVzc2FnZURhdGEoUmVmPE5ldHdvcmtSVENQcm92
aWRlcj4mJiBydGNQcm92aWRlciwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgICAg
ICA6IHJ0Y1Byb3ZpZGVyKFdURk1vdmUocnRjUHJvdmlkZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmlu
ZGV4IDJhYjJiZjU5OTI5ZTA1ZDc0ZjhkZTg2ZDU5ODhjZTA1NDhlNmY3NWIuLmM1YzhiMTMxODgy
NjdiNmQ1YTZmZGQ1NzkzOTk1Mjk5ZTE1NjAwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTQ4
LDcgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya1JUQ1NvY2tldDsKLSAgICAKK2NsYXNzIFN1c3Bl
bnNpb25SZXN1bHQ7CisKIGNsYXNzIE5ldHdvcmtSVENQcm92aWRlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxOZXR3b3JrUlRDUHJvdmlkZXI+LCBwdWJsaWMgcnRjOjpNZXNzYWdlSGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrUlRDUHJvdmlkZXI+IGNyZWF0
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrUlRDUHJvdmlkZXIoY29ubmVjdGlvbikpOyB9CkBAIC02OSw2ICs3
MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5ld0Nvbm5lY3Rpb24oTGliV2ViUlRDU29ja2V0
Q2xpZW50Jiwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+JiYpOwogCisg
ICAgc3RkOjpvcHRpb25hbDxTdXNwZW5zaW9uUmVzdWx0PiBjbG9zZUxpc3RlbmluZ1NvY2tldHMo
KTsKKyAgICBmcmllbmQgY2xhc3MgRGVmZXJyZWRDbG9zaW5nTGlzdGVuaW5nU29ja2V0c1Jlc3Vs
dDsKKyAgICB2b2lkIGF1dGhvcml6ZUxpc3RlbmluZ1NvY2tldHMoKSB7IG1faXNMaXN0ZW5pbmdT
b2NrZXRBdXRob3JpemVkID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5ldHdv
cmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogCkBAIC04Niw2
ICs5MSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIE9uTWVzc2FnZShydGM6Ok1lc3NhZ2UqKTsK
IAorICAgIHZvaWQgZmluaXNoQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMoY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYpOworCiAgICAgc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiwgQ0ZI
b3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKik7CiAKICAgICBzdHJ1Y3Qg
UmVzb2x2ZXIgewpAQCAtMTEyLDYgKzExOSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4+IG1fcGVuZGlu
Z0luY29taW5nU29ja2V0czsKICAgICB1aW50NjRfdCBtX2luY29taW5nU29ja2V0SWRlbnRpZmll
ciB7IDAgfTsKKyAgICBib29sIG1faXNDbG9zaW5nTGlzdGVuaW5nU29ja2V0cyB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXplZCB7IHRydWUgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9jbG9zaW5nTGlzdGVuaW5nU29j
a2V0Q29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314932</attachid>
            <date>2017-07-08 17:55:08 -0700</date>
            <delta_ts>2017-07-10 15:11:26 -0700</delta_ts>
            <desc>Fixing release logging</desc>
            <filename>bug-174270-20170708175507.patch</filename>
            <type>text/plain</type>
            <size>16927</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAwYWZlOWY4YzU1Njc4
MTk0M2FhYzkwMDhkMWU5ZDdlZjU0YTc3Mi4uOTExNmQyMGViZGZmYzFmMGUxYzVhNjdlZjNmMGMw
ZTFkYjYxMDJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA3LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgV2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIGJlaW5nIHN1c3BlbmRlZCwg
aXQgd2lsbCBzdG9wIGNyZWF0aW5nIGxpc3RlbmluZyBzb2NrZXRzLCB1bnRpbCBpdCByZXN1bWVz
LgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0IGJlIHRvIGltcHJvdmUg
c2VsZWN0L2NhbmNlbCBzbyB0aGF0IHdlIGNhbiBzdG9wIGxpc3RlbmluZyBzb2NrZXRzIGF0IHJl
c3VtZSB0aW1lLAorICAgICAgICBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRoZSBzdGFjayB1
c2luZyBDRlN0cmVhbS4KKworICAgICAgICBUZXN0ZWQgdGhyb3VnaCBtYW51YWwgdGVzdGluZyBi
eSBnb2luZyB0byBhIHdlYnNpdGUgZG9pbmcgV2ViUlRDLCBob21pbmcgb3V0IHNvIHRoYXQgdGhl
IG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQgYW5kIHJlb3BlbmluZyBTYWZhcmkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhbnVw
Rm9yU3VzcGVuc2lvbik6CisgICAgICAgIFByb3h5aW5nIGNhbGwgdG8gY2xlYW4gZm9yIHN1c3Bl
bnNpb24gdG8gcnRjIHByb3ZpZGVyIHNvIHRoYXQgaXQgd2lsbAorICAgICAgICBjbG9zZSBsaXN0
ZW5pbmcgc29ja2V0cy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc3VtZUZyb21TdXNwZW5zaW9uKTogQXV0aG9yaXppbmcgYmFjayBsaXN0ZW5pbmcg
c29ja2V0cy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2xlYW51cEZvclN1c3BlbnNpb24pOgorICAgICAgICBDbGVhbi11cCBpcyBkb25lIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGNhbiBoYXBwZW4gaW4gYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAg
ICBIZW5jZSB3aHkgcGFzc2luZyBhIGNhbGxiYWNrIGFzIHBhcmFtZXRlci4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQpOiBIZWxwZXIgcm91dGluZQor
ICAgICAgICB0byBub3RpZnkgVUkgcHJvY2VzcyB0aGF0IG5ldHdvcmsgcHJvY2VzcyBjbGVhbiB1
cCBpcyBkb25lLgorICAgICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6VGFza0NvdW50ZXIpOiBI
ZWxwZXIgY2xhc3MgdG8gY2FsbCBub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQgd2hlbiBzZGVk
LgorICAgICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6flRhc2tDb3VudGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQpOiBEb2luZyB0
aGUgY2xlYW4tdXAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0IG5lZWRzIGl0LgorICAgICAgICBN
YWtpbmcgc3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBjbGVhbi11cCBiZWluZyBjb21wbGV0
ZWQgb25jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSk6IFJlZW5hYmxlIGxpc3RlbmluZyBz
b2NrZXRzLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xp
ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xp
ZW50Lmg6IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAg
ICAgVXNlZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2Nr
ZXRzIGFuZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6
OmNsb3NlTGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAg
ICAgIGFuZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlz
IGNsb3NlZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBu
ZWVkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2lu
Z0xpc3RlbmluZ1NvY2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjph
dXRob3JpemVMaXN0ZW5pbmdTb2NrZXRzKTogQXV0aG9yaXplIGNyZWF0aW9uIG9mIGxpc3Rlbmlu
ZyBzb2NrZXRzLgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5
MjM5LCBhbmQgcjIxOTI0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwMTgx
Y2VjYjZlMWZjZGYxZDIzYjhkMjFhMTcwZjQwMDE2MGI0ZDQzLi4zZDgwOGJiMjQ0NzRhMjI5OGI4
YmM4ODNhOWVmYmU5M2FjMGM2MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC0xODksNiArMTg5LDIzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRl
c3Ryb3lTb2NrZXRTdHJlYW0odWludDY0X3QgaWRlbnRpZmllcikKICAgICBtX25ldHdvcmtTb2Nr
ZXRTdHJlYW1zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorc3RkOjpvcHRpb25hbDxTdXNwZW5z
aW9uUmVzdWx0PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYW51cEZvclN1c3Bl
bnNpb24oKQoreworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgaWYgKG1fcnRjUHJvdmlkZXIpCisg
ICAgICAgIHJldHVybiBtX3J0Y1Byb3ZpZGVyLT5jbG9zZUxpc3RlbmluZ1NvY2tldHMoKTsKKyNl
bmRpZgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVuZFN1c3BlbnNpb24oKQoreworI2lmIFVTRShMSUJXRUJSVEMpCisg
ICAgaWYgKG1fcnRjUHJvdmlkZXIpCisgICAgICAgIG1fcnRjUHJvdmlkZXItPmF1dGhvcml6ZUxp
c3RlbmluZ1NvY2tldHMoKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBsb2FkZXIgPSBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggOWIzY2I1NDk1M2Y4ZTQ3MDM1MWFiZWE2M2FjNjIwZDg0YTU0
NmRkZS4uZjRkNzlhNTRkMDQwYTJmNjhhZjZmNWE1ZWI4MjVkOTI5YjQ2YzI4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01MSw2ICs1MSwxMiBAQCBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKIHN0cnVjdCBEYXRhS2V5OwogfQogCitjbGFzcyBTdXNwZW5zaW9uUmVzdWx0IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5TdXNwZW5zaW9uUmVzdWx0KCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgdm9pZCB0aGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxi
YWNrKCk7IH0KK307CisKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVi
bGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+LCBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC02
NCw2ICs3MCw5IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+IGdldEJsb2JEYXRhRmlsZVJlZmVyZW5jZUZvclBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U3VzcGVuc2lvblJlc3VsdD4gY2xlYW51cEZvclN1
c3BlbnNpb24oKTsKKyAgICB2b2lkIGVuZFN1c3BlbnNpb24oKTsKKwogcHJpdmF0ZToKICAgICBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggMzJkNmIzOWFhZDhhYTljMDE3YWNhMGExMDc5ZmM2YjdiMDE1Y2EwYy4uYjEwYzgw
M2Y5MzE4YTU5YmMwOTU2M2ExZGQ3YjA2ZDZkNTVjMjczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjQwLDE5ICs2NDAsNDgg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dGVybWluYXRlKCkKICAgICBDaGlsZFByb2Nlc3M6OnRl
cm1pbmF0ZSgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCitjbGFzcyBUYXNrQ291bnRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFRhc2tDb3VudGVyPiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVGFza0NvdW50ZXIo
RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKSA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
aykpIHsgfQorICAgIH5UYXNrQ291bnRlcigpIHsgbV9jYWxsYmFjaygpOyB9OworCitwcml2YXRl
OgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlU
b1N1c3BlbmQgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpCiB7CiAgICAgbG93
TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVzKTsKKworICAgIFJlZlB0cjxUYXNrQ291bnRlcj4g
ZGVsYXllZFRhc2tDb3VudGVyOworICAgIGlmIChzaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZCA9PSBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKSB7Cisg
ICAgICAgIGRlbGF5ZWRUYXNrQ291bnRlciA9IGFkb3B0UmVmKG5ldyBUYXNrQ291bnRlcihbdGhp
c10geworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5l
dHdvcmtQcm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nl
c3NSZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOworICAgICAgICAgICAgaWYgKHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCksIDApOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgZm9yIChhdXRv
JiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gY29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oKSkgeworICAgICAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNz
OjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKCkgc3RhcnRlZCBzdXNwZW5zaW9uIGNsZWFudXAgZm9y
ICVwIiwgdGhpcywgY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQtPnRoZW4o
W3RoaXMsIGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLmdldCgpLCBkZWxheWVkVGFza0NvdW50ZXJd
IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoKSBlbmRlZCBzdXNwZW5zaW9u
IGNsZWFudXAgZm9yICVwIiwgdGhpcywgY29ubmVjdGlvbik7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseShib29sJiBoYW5kbGVkKQoreworICAgIGFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsKICAgICBoYW5kbGVk
ID0gdHJ1ZTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCiB7
CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNz
OjpwcmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKLSAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsOjpZZXMpOwotCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1
c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3Bl
bmQoKSwgMCk7CisgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdo
ZW5SZWFkeVRvU3VzcGVuZDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2Vs
UHJlcGFyZVRvU3VzcGVuZCgpCkBAIC02NjIsMTEgKzY5MSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICAvLyBtZXNzYWdlLiBBbmQgTmV0d29y
a1Byb2Nlc3NQcm94eSBleHBlY3RzIHRvIHJlY2VpdmUgZWl0aGVyIGEgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6UHJvY2Vzc1JlYWR5VG9TdXNwZW5kLQogICAgIC8vIG9yIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OkRpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uLSBtZXNzYWdlLCBidXQgbm90IGJvdGguCiAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpj
YW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rp
b24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3Vz
cGVuc2lvbigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzRGlkUmVzdW1lKCkK
IHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NEaWRSZXN1bWUoKSIsIHRoaXMpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlv
biA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNw
ZW5zaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCBmNzFmYTI3MTFhMTA4OGE4NGY1MjIwYjdkMmUzNjllZGM1NTFiNjQ3
Li5iZDIxODhiYjRlYzBiN2FhODUxZTNkYmY5YmE4MGVkMjc4NWM5Mjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEzNCw2ICsxMzQs
OSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsKTsKIAor
ICAgIGVudW0gY2xhc3MgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgeyBObywg
WWVzIH07CisgICAgdm9pZCBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdl
V2hlblJlYWR5VG9TdXNwZW5kKTsKKwogICAgIC8vIENoaWxkUHJvY2VzcwogICAgIHZvaWQgaW5p
dGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuY3BwCmluZGV4IDM2MThmZDY3YThlYzNiZGEyZGMwNzk3ODBhNWMzYjYxNWZiNGRh
OWMuLjczYjAxOTY3NTk0ZTBhZTRkNjJjYmZlNWRmNjZjNzFkN2YwMGJhNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OkxpYldlYlJUQ1NvY2tldENsaWVudCh1aW50NjRfdCBp
ZGVudGlmaWVyLCBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4mJiBzb2NrZXQsIFR5cGUgdHlwZSkKICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3J0Y1By
b3ZpZGVyKHJ0Y1Byb3ZpZGVyKQogICAgICwgbV9zb2NrZXQoV1RGTW92ZShzb2NrZXQpKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IGU0YWNiNjI3MTE1OWNiOTZjMTc4NzAwMWE5ZWVh
OWU4ZDY2ODAyN2YuLmJmODdlZmFmMzhjYTFlYjM0M2U2MzJmOGVkZjM0NWEwOWUzNWE3YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDU29ja2V0Q2xpZW50LmgKQEAgLTU0LDExICs1NCwxMiBAQCBwdWJsaWM6CiAgICAg
TGliV2ViUlRDU29ja2V0Q2xpZW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIE5ldHdvcmtSVENQcm92
aWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmLCBUeXBlKTsK
IAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIGNs
b3NlKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtSVENTb2NrZXQ7CiAK
LSAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBzZXRPcHRpb24oaW50IG9wdGlvbiwgaW50IHZh
bHVlKTsKICAgICB2b2lkIHNlbmRUbyhjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmLCBjb25zdCBydGM6OlBhY2tldE9wdGlvbnMmKTsKIApAQCAt
NzIsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2lnbmFsQWRkcmVzc1JlYWR5KCk7CiAK
ICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBtX3R5cGU7CiAgICAgTmV0d29y
a1JUQ1Byb3ZpZGVyJiBtX3J0Y1Byb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiBtX3NvY2tldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4
IGNlYzAyMmNhZDM3ZmM5Y2ZjNmViZDgyNzFiZTlmYjVjYTZkYzBiZjAuLjEyODVlZDRmZWQ2ZmU5
NjAyODAyNTU4YjIxYzg2NTcxYWVkMWVhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC0x
MDksNiArMTA5LDExIEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQo
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6CiAKIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTZXJ2ZXJUQ1BTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29u
c3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwg
dWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7CisgICAgaWYgKCFtX2lzTGlzdGVuaW5n
U29ja2V0QXV0aG9yaXplZCkgeworICAgICAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDU29ja2V0
OjpTaWduYWxDbG9zZSgxKSwgaWRlbnRpZmllcik7CisgICAgfQorCiAgICAgY2FsbE9uUlRDTmV0
d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgYWRkcmVzcyA9IFJUQ05ldHdvcms6Omlzb2xh
dGVkQ29weShhZGRyZXNzLnZhbHVlKSwgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQobV9w
YWNrZXRTb2NrZXRGYWN0b3J5LT5DcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoYWRkcmVzcywgbWluUG9y
dCwgbWF4UG9ydCwgb3B0aW9ucykpOwogICAgICAgICBjcmVhdGVTb2NrZXQoaWRlbnRpZmllciwg
V1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCk7
CkBAIC0yMTUsNiArMjIwLDU4IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpyZXNvbHZlZE5h
bWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvCiAgICAgcmVzb2x2
ZXItPnJ0Y1Byb3ZpZGVyLm1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgcmVzb2x2ZXIt
PmlkZW50aWZpZXIpOwogfQogCitjbGFzcyBEZWZlcnJlZENsb3NpbmdMaXN0ZW5pbmdTb2NrZXRz
UmVzdWx0IGZpbmFsIDogcHVibGljIFN1c3BlbnNpb25SZXN1bHQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IERlZmVycmVkQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHNSZXN1bHQoUmVmPE5ldHdvcmtS
VENQcm92aWRlcj4mJiBwcm92aWRlcikgOiBtX3Byb3ZpZGVyKFdURk1vdmUocHJvdmlkZXIpKSB7
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spIGZpbmFsIHsKKyAgICAgICAgaWYgKG1fcHJvdmlkZXItPm1faXNDbG9zaW5nTGlzdGVu
aW5nU29ja2V0cykgeworICAgICAgICAgICAgbV9wcm92aWRlci0+bV9jbG9zaW5nTGlzdGVuaW5n
U29ja2V0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjaygpOworICAgIH0KKworICAgIFJl
ZjxOZXR3b3JrUlRDUHJvdmlkZXI+IG1fcHJvdmlkZXI7Cit9OworCitzdGQ6Om9wdGlvbmFsPFN1
c3BlbnNpb25SZXN1bHQ+IE5ldHdvcmtSVENQcm92aWRlcjo6Y2xvc2VMaXN0ZW5pbmdTb2NrZXRz
KCkKK3sKKyAgICBpZiAoIW1faXNMaXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgbV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQg
PSBmYWxzZTsKKyAgICBtX2lzQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMgPSB0cnVlOworICAgIGNh
bGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rvcjx1
aW50NjRfdD4gbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnM7CisgICAgICAgIGZvciAoYXV0byYg
a2V5VmFsdWUgOiBtX3NvY2tldHMpIHsKKyAgICAgICAgICAgIGlmIChrZXlWYWx1ZS52YWx1ZS0+
dHlwZSgpID09IExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyVENQKQorICAgICAg
ICAgICAgICAgIGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzLmFwcGVuZChrZXlWYWx1ZS5rZXkp
OworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byBpZCA6IGxpc3RlbmluZ1NvY2tldElkZW50
aWZpZXJzKQorICAgICAgICAgICAgbV9zb2NrZXRzLmdldChpZCktPmNsb3NlKCk7CisKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdmlkZXIgPSBtYWtlUmVmKCp0aGlzKSwgbGlzdGVuaW5n
U29ja2V0SWRlbnRpZmllcnMgPSBXVEZNb3ZlKGxpc3RlbmluZ1NvY2tldElkZW50aWZpZXJzKV0g
eworICAgICAgICAgICAgcHJvdmlkZXItPmZpbmlzaENsb3NpbmdMaXN0ZW5pbmdTb2NrZXRzKGxp
c3RlbmluZ1NvY2tldElkZW50aWZpZXJzKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0
dXJuIERlZmVycmVkQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHNSZXN1bHQoKnRoaXMpOworfQorCit2
b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMoY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgbGlzdGVuaW5nU29ja2V0SWRlbnRpZmllcnMpCit7CisgICAg
aWYgKG1fY29ubmVjdGlvbikgeworICAgICAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGxpc3Rl
bmluZ1NvY2tldElkZW50aWZpZXJzKQorICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDU29ja2V0OjpTaWduYWxDbG9zZShFQ09OTkFCT1JU
RUQpLCBpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBpZiAobV9jbG9zaW5nTGlzdGVuaW5nU29j
a2V0Q29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fY2xvc2luZ0xpc3RlbmluZ1NvY2tldENv
bXBsZXRpb25IYW5kbGVyLnZhbHVlKCk7CisgICAgbV9jbG9zaW5nTGlzdGVuaW5nU29ja2V0Q29t
cGxldGlvbkhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9pc0Nsb3NpbmdMaXN0ZW5pbmdT
b2NrZXRzID0gZmFsc2U7Cit9CisKIHN0cnVjdCBOZXR3b3JrTWVzc2FnZURhdGEgOiBwdWJsaWMg
cnRjOjpNZXNzYWdlRGF0YSB7CiAgICAgTmV0d29ya01lc3NhZ2VEYXRhKFJlZjxOZXR3b3JrUlRD
UHJvdmlkZXI+JiYgcnRjUHJvdmlkZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKICAg
ICAgICAgOiBydGNQcm92aWRlcihXVEZNb3ZlKHJ0Y1Byb3ZpZGVyKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
aAppbmRleCAyYWIyYmY1OTkyOWUwNWQ3NGY4ZGU4NmQ1OTg4Y2UwNTQ4ZTZmNzViLi5jNWM4YjEz
MTg4MjY3YjZkNWE2ZmRkNTc5Mzk5NTI5OWUxNTYwMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBA
IC00OCw3ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSVENTb2NrZXQ7Ci0gICAgCitjbGFzcyBT
dXNwZW5zaW9uUmVzdWx0OworCiBjbGFzcyBOZXR3b3JrUlRDUHJvdmlkZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29ya1JUQ1Byb3ZpZGVyPiwgcHVibGljIHJ0Yzo6TWVzc2Fn
ZUhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1JUQ1Byb3ZpZGVyPiBj
cmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya1JUQ1Byb3ZpZGVyKGNvbm5lY3Rpb24pKTsgfQpAQCAtNjks
NiArNzAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBuZXdDb25uZWN0aW9uKExpYldlYlJUQ1Nv
Y2tldENsaWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmKTsK
IAorICAgIHN0ZDo6b3B0aW9uYWw8U3VzcGVuc2lvblJlc3VsdD4gY2xvc2VMaXN0ZW5pbmdTb2Nr
ZXRzKCk7CisgICAgZnJpZW5kIGNsYXNzIERlZmVycmVkQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHNS
ZXN1bHQ7CisgICAgdm9pZCBhdXRob3JpemVMaXN0ZW5pbmdTb2NrZXRzKCkgeyBtX2lzTGlzdGVu
aW5nU29ja2V0QXV0aG9yaXplZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBO
ZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIApAQCAt
ODYsNiArOTEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBPbk1lc3NhZ2UocnRjOjpNZXNzYWdl
Kik7CiAKKyAgICB2b2lkIGZpbmlzaENsb3NpbmdMaXN0ZW5pbmdTb2NrZXRzKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKTsKKwogICAgIHN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYs
IENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopOwogCiAgICAgc3Ry
dWN0IFJlc29sdmVyIHsKQEAgLTExMiw2ICsxMTksOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+PiBtX3Bl
bmRpbmdJbmNvbWluZ1NvY2tldHM7CiAgICAgdWludDY0X3QgbV9pbmNvbWluZ1NvY2tldElkZW50
aWZpZXIgeyAwIH07CisgICAgYm9vbCBtX2lzQ2xvc2luZ0xpc3RlbmluZ1NvY2tldHMgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQgeyB0cnVlIH07Cisg
ICAgc3RkOjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IG1fY2xvc2luZ0xpc3Rlbmlu
Z1NvY2tldENvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315034</attachid>
            <date>2017-07-10 15:11:28 -0700</date>
            <delta_ts>2017-07-11 07:53:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174270-20170710151127.patch</filename>
            <type>text/plain</type>
            <size>14905</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzhhYmQyYmE1NDZkMjZi
Y2ZiZjNiOWQ1OTNmODNlMDVhNjBiNDVkMC4uN2Q2MWJmYzQ5M2FiNTVjNjBmNzQ1OTA0ZDYxM2M5
MDZmM2FjNTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA3LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgY2xvc2UgbGlzdGVuaW5nIFdlYlJUQyBzb2NrZXRzIHdoZW4gYmVpbmcgc3VzcGVuZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNzAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzMxMzk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IHBvdGVudGlhbCBzcGlubmluZyBv
ZiB0aGUgTmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNzIHdpbGwgbm93IGNsb3NlIGxpc3Rl
bmluZyBzb2NrZXRzIHdoZW4gYmVpbmcgbm90aWZpZWQgdGhhdCBpdCB3aWxsIGJlIHN1c3BlbmRl
ZC4KKyAgICAgICAgV2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIGJlaW5nIHN1c3BlbmRlZCwg
aXQgd2lsbCBzdG9wIGNyZWF0aW5nIGxpc3RlbmluZyBzb2NrZXRzLCB1bnRpbCBpdCByZXN1bWVz
LgorICAgICAgICBGdXR1cmUgYWRkaXRpb25hbCBlZmZvcnRzIG1pZ2h0IGJlIHRvIGltcHJvdmUg
c2VsZWN0L2NhbmNlbCBzbyB0aGF0IHdlIGNhbiBzdG9wIGxpc3RlbmluZyBzb2NrZXRzIGF0IHJl
c3VtZSB0aW1lLAorICAgICAgICBvciB0byByZWltcGxlbWVudCBwYXJ0IG9mIHRoZSBzdGFjayB1
c2luZyBDRlN0cmVhbS4KKworICAgICAgICBUZXN0ZWQgdGhyb3VnaCBtYW51YWwgdGVzdGluZyBi
eSBnb2luZyB0byBhIHdlYnNpdGUgZG9pbmcgV2ViUlRDLCBob21pbmcgb3V0IHNvIHRoYXQgdGhl
IG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQgYW5kIHJlb3BlbmluZyBTYWZhcmkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhbnVw
Rm9yU3VzcGVuc2lvbik6CisgICAgICAgIFByb3h5aW5nIGNhbGwgdG8gY2xlYW4gZm9yIHN1c3Bl
bnNpb24gdG8gcnRjIHByb3ZpZGVyIHNvIHRoYXQgaXQgd2lsbAorICAgICAgICBjbG9zZSBsaXN0
ZW5pbmcgc29ja2V0cy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc3VtZUZyb21TdXNwZW5zaW9uKTogQXV0aG9yaXppbmcgYmFjayBsaXN0ZW5pbmcg
c29ja2V0cy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2xlYW51cEZvclN1c3BlbnNpb24pOgorICAgICAgICBDbGVhbi11cCBpcyBkb25lIGFzeW5j
aHJvbm91c2x5IGFzIGl0IGNhbiBoYXBwZW4gaW4gYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAg
ICBIZW5jZSB3aHkgcGFzc2luZyBhIGNhbGxiYWNrIGFzIHBhcmFtZXRlci4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQpOiBIZWxwZXIgcm91dGluZQor
ICAgICAgICB0byBub3RpZnkgVUkgcHJvY2VzcyB0aGF0IG5ldHdvcmsgcHJvY2VzcyBjbGVhbiB1
cCBpcyBkb25lLgorICAgICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6VGFza0NvdW50ZXIpOiBI
ZWxwZXIgY2xhc3MgdG8gY2FsbCBub3RpZnlQcm9jZXNzUmVhZHlUb1N1c3BlbmQgd2hlbiBzZGVk
LgorICAgICAgICAoV2ViS2l0OjpUYXNrQ291bnRlcjo6flRhc2tDb3VudGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQpOiBEb2luZyB0
aGUgY2xlYW4tdXAgZm9yIGVhY2ggY29ubmVjdGlvbiB0aGF0IG5lZWRzIGl0LgorICAgICAgICBN
YWtpbmcgc3VyZSB0byBub3RpZnkgVUkgcHJvY2VzcyBvZiBjbGVhbi11cCBiZWluZyBjb21wbGV0
ZWQgb25jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGNsZWFuZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSk6IFJlZW5hYmxlIGxpc3RlbmluZyBz
b2NrZXRzLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xp
ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xp
ZW50Lmg6IEFkZGluZyB0eXBlIGdldHRlciBhbmQgbWFraW5nIGNsb3NlIHB1YmxpYy4KKyAgICAg
ICAgVXNlZCBieSBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gaWRlbnRpZml5IGxpc3RlbmluZyBzb2Nr
ZXRzIGFuZCBjbG9zZSB0aGVtLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6
OmNsb3NlTGlzdGVuaW5nU29ja2V0cyk6IFdlIGNsb3NlIHRoZSB3ZWJydGMgc29ja2V0CisgICAg
ICAgIGFuZCB3ZSBhbHNvIG5vdGlmeSB0aGUgV2ViIFByb2Nlc3MgdGhhdCB0aGUgc29ja2V0IGlz
IGNsb3NlZCBzbyB0aGF0IGl0IGNhbiB0YWtlIGFjdGlvbnMgdG8gcmVjcmVhdGUgc29tZSBpZiBu
ZWVkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6ZmluaXNoQ2xvc2lu
Z0xpc3RlbmluZ1NvY2tldHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjph
dXRob3JpemVMaXN0ZW5pbmdTb2NrZXRzKTogQXV0aG9yaXplIGNyZWF0aW9uIG9mIGxpc3Rlbmlu
ZyBzb2NrZXRzLgorCiAyMDE3LTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRnVydGhlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgLyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4gdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCAwMTgxY2VjYjZlMWZjZGYxZDIzYjhkMjFhMTcwZjQwMDE2MGI0ZDQzLi4zNDli
YzQ3ZWZhMjM2ZGVlNTNjOGM3MWVhMjNiZTc0M2MxYTU1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0xODksNiArMTg5LDI1IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRlc3Ryb3lTb2NrZXRTdHJlYW0odWludDY0X3QgaWRlbnRpZmllcikKICAg
ICBtX25ldHdvcmtTb2NrZXRTdHJlYW1zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYW51cEZvclN1c3BlbnNpb24oRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIFVTRShMSUJXRUJSVEMpCisg
ICAgaWYgKG1fcnRjUHJvdmlkZXIpIHsKKyAgICAgICAgbV9ydGNQcm92aWRlci0+Y2xvc2VMaXN0
ZW5pbmdTb2NrZXRzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuZFN1c3BlbnNpb24oKQoreworI2lmIFVTRShM
SUJXRUJSVEMpCisgICAgaWYgKG1fcnRjUHJvdmlkZXIpCisgICAgICAgIG1fcnRjUHJvdmlkZXIt
PmF1dGhvcml6ZUxpc3RlbmluZ1NvY2tldHMoKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBsb2Fk
ZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycywgKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOWIzY2I1NDk1M2Y4ZTQ3MDM1MWFiZWE2
M2FjNjIwZDg0YTU0NmRkZS4uZjUyNzRjZWY3OGViNTg1Y2U2NTA4YWQ2NzUwMjBkNzlkMzdlNTg1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02NCw2ICs2NCw5IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGdldEJsb2JEYXRh
RmlsZVJlZmVyZW5jZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAorICAgIHZvaWQgY2xl
YW51cEZvclN1c3BlbnNpb24oRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVuZFN1c3Bl
bnNpb24oKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMzJkNmIzOWFhZDhhYTljMDE3YWNh
MGExMDc5ZmM2YjdiMDE1Y2EwYy4uODBhNGU1MTQxNWEzMWI3ZDQ3OTgyMTUzMGNiM2VlNmMzOThh
YmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtNjQwLDE5ICs2NDAsNDMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dGVybWlu
YXRlKCkKICAgICBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0ZSgpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCisvLyBG
SVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIG9uZSBieSBhZGFwdGluZyBSZWZDb3VudGVyLgorY2xh
c3MgVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxUYXNrQ291bnRlcj4geworcHVibGlj
OgorICAgIGV4cGxpY2l0IFRhc2tDb3VudGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykg
OiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSB7IH0KKyAgICB+VGFza0NvdW50ZXIoKSB7
IG1fY2FsbGJhY2soKTsgfTsKKworcHJpdmF0ZToKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY2Fs
bGJhY2s7Cit9OworCit2b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5k
KFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIHNob3VsZEFja25vd2xlZGdlV2hl
blJlYWR5VG9TdXNwZW5kKQogewogICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7
CisKKyAgICBSZWZQdHI8VGFza0NvdW50ZXI+IGRlbGF5ZWRUYXNrQ291bnRlcjsKKyAgICBpZiAo
c2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgPT0gU2hvdWxkQWNrbm93bGVkZ2VX
aGVuUmVhZHlUb1N1c3BlbmQ6OlllcykgeworICAgICAgICBkZWxheWVkVGFza0NvdW50ZXIgPSBh
ZG9wdFJlZihuZXcgVGFza0NvdW50ZXIoW3RoaXNdIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6bm90aWZ5UHJvY2Vzc1Jl
YWR5VG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlUb1N1c3BlbmQgSVBDIG1lc3NhZ2Ui
LCB0aGlzKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAg
ICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKKyAgICAgICAg
fSkpOworICAgIH0KKworICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihbZGVs
YXllZFRhc2tDb3VudGVyXSB7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCit7CisgICAgYWN0dWFsUHJlcGFy
ZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAg
IGhhbmRsZWQgPSB0cnVlOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNw
ZW5kKCkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29y
a1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOwotICAgIGxvd01lbW9yeUhhbmRs
ZXIoQ3JpdGljYWw6Olllcyk7Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSBTZW5kaW5nIFByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCBJUEMgbWVzc2FnZSIsIHRoaXMpOwotICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFk
eVRvU3VzcGVuZCgpLCAwKTsKKyAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25v
d2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKQEAgLTY2MiwxMSArNjg2LDE1IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIC8vIG1lc3NhZ2UuIEFu
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5IGV4cGVjdHMgdG8gcmVjZWl2ZSBlaXRoZXIgYSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpQcm9jZXNzUmVhZHlUb1N1c3BlbmQtCiAgICAgLy8gb3IgTmV0d29ya1By
b2Nlc3NQcm94eTo6RGlkQ2FuY2VsUHJvY2Vzc1N1c3BlbnNpb24tIG1lc3NhZ2UsIGJ1dCBub3Qg
Ym90aC4KICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1By
b2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKSIsIHRoaXMpOworICAgIGZvciAoYXV0byYg
Y29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9u
LT5lbmRTdXNwZW5zaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NEaWRS
ZXN1bWUoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSgpIiwgdGhpcyk7CisgICAgZm9yIChhdXRvJiBj
b25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY3MWZhMjcxMWExMDg4YTg0ZjUyMjBiN2QyZTM2OWVk
YzU1MWI2NDcuLmJkMjE4OGJiNGVjMGI3YWE4NTFlM2RiZjliYTgwZWQyNzg1YzkyNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTM0
LDYgKzEzNCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGlj
YWwpOwogCisgICAgZW51bSBjbGFzcyBTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVu
ZCB7IE5vLCBZZXMgfTsKKyAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNr
bm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOworCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAg
dm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ1NvY2tldENsaWVudC5jcHAKaW5kZXggMzYxOGZkNjdhOGVjM2JkYTJkYzA3OTc4MGE1YzNi
NjE1ZmI0ZGE5Yy4uNzNiMDE5Njc1OTRlMGFlNGQ2MmNiZmU1ZGY2NmM3MWQ3ZjAwYmE1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIExpYldlYlJUQ1NvY2tldENsaWVudDo6TGliV2ViUlRDU29ja2V0Q2xpZW50KHVp
bnQ2NF90IGlkZW50aWZpZXIsIE5ldHdvcmtSVENQcm92aWRlciYgcnRjUHJvdmlkZXIsIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiYmIHNvY2tldCwgVHlwZSB0eXBlKQog
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3R5cGUodHlwZSkKICAgICAs
IG1fcnRjUHJvdmlkZXIocnRjUHJvdmlkZXIpCiAgICAgLCBtX3NvY2tldChXVEZNb3ZlKHNvY2tl
dCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKaW5kZXggZTRhY2I2MjcxMTU5Y2I5NmMxNzg3
MDAxYTllZWE5ZThkNjY4MDI3Zi4uYmY4N2VmYWYzOGNhMWViMzQzZTYzMmY4ZWRmMzQ1YTA5ZTM1
YTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNTQsMTEgKzU0LDEyIEBAIHB1Ymxp
YzoKICAgICBMaWJXZWJSVENTb2NrZXRDbGllbnQodWludDY0X3QgaWRlbnRpZmllciwgTmV0d29y
a1JUQ1Byb3ZpZGVyJiwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+JiYs
IFR5cGUpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAg
IHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1JUQ1Nv
Y2tldDsKIAotICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHNldE9wdGlvbihpbnQgb3B0aW9u
LCBpbnQgdmFsdWUpOwogICAgIHZvaWQgc2VuZFRvKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYsIGNvbnN0IHJ0Yzo6UGFja2V0T3B0aW9ucyYp
OwogCkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaWduYWxBZGRyZXNzUmVh
ZHkoKTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBUeXBlIG1fdHlwZTsKICAg
ICBOZXR3b3JrUlRDUHJvdmlkZXImIG1fcnRjUHJvdmlkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IG1fc29ja2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHAKaW5kZXggY2VjMDIyY2FkMzdmYzljZmM2ZWJkODI3MWJlOWZiNWNhNmRjMGJmMC4uMGYzZmJl
ZmRhNjE1OTllNzAxMDgxOGMxNTFlNGU5YjIwYWVjOGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHAKQEAgLTEwOSw2ICsxMDksMTIgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVE
UFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3JrOjoKIAogdm9pZCBO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNlcnZlclRDUFNvY2tldCh1aW50NjRfdCBpZGVudGlm
aWVyLCBjb25zdCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBt
aW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBpbnQgb3B0aW9ucykKIHsKKyAgICBpZiAoIW1faXNM
aXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkKSB7CisgICAgICAgIGlmIChtX2Nvbm5lY3Rpb24pCisg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJS
VENTb2NrZXQ6OlNpZ25hbENsb3NlKDEpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIGFk
ZHJlc3MgPSBSVENOZXR3b3JrOjppc29sYXRlZENvcHkoYWRkcmVzcy52YWx1ZSksIG1pblBvcnQs
IG1heFBvcnQsIG9wdGlvbnNdKCkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3lu
Y1BhY2tldFNvY2tldD4gc29ja2V0KG1fcGFja2V0U29ja2V0RmFjdG9yeS0+Q3JlYXRlU2VydmVy
VGNwU29ja2V0KGFkZHJlc3MsIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnMpKTsKICAgICAgICAg
Y3JlYXRlU29ja2V0KGlkZW50aWZpZXIsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0
Q2xpZW50OjpUeXBlOjpTZXJ2ZXJUQ1ApOwpAQCAtMjE1LDYgKzIyMSwzMyBAQCB2b2lkIE5ldHdv
cmtSVENQcm92aWRlcjo6cmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZv
VHlwZSB0eXBlSW5mbwogICAgIHJlc29sdmVyLT5ydGNQcm92aWRlci5tX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRy
ZXNzKGFkZHJlc3NlcyksIHJlc29sdmVyLT5pZGVudGlmaWVyKTsKIH0KIAordm9pZCBOZXR3b3Jr
UlRDUHJvdmlkZXI6OmNsb3NlTGlzdGVuaW5nU29ja2V0cyhGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXpl
ZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICBjYWxs
T25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBWZWN0b3I8dWludDY0X3Q+IGxp
c3RlbmluZ1NvY2tldElkZW50aWZpZXJzOworICAgICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDog
bV9zb2NrZXRzKSB7CisgICAgICAgICAgICBpZiAoa2V5VmFsdWUudmFsdWUtPnR5cGUoKSA9PSBM
aWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlclRDUCkKKyAgICAgICAgICAgICAgICBs
aXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycy5hcHBlbmQoa2V5VmFsdWUua2V5KTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKGF1dG8gaWQgOiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycykKKyAg
ICAgICAgICAgIG1fc29ja2V0cy5nZXQoaWQpLT5jbG9zZSgpOworCisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3ZpZGVyID0gbWFrZVJlZigqdGhpcyksIGxpc3RlbmluZ1NvY2tldElkZW50
aWZpZXJzID0gV1RGTW92ZShsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGlmIChw
cm92aWRlci0+bV9jb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIGlkZW50
aWZpZXIgOiBsaXN0ZW5pbmdTb2NrZXRJZGVudGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAg
cHJvdmlkZXItPm1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJU
Q1NvY2tldDo6U2lnbmFsQ2xvc2UoRUNPTk5BQk9SVEVEKSwgaWRlbnRpZmllcik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwogc3RydWN0IE5ldHdvcmtNZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6Ok1lc3Nh
Z2VEYXRhIHsKICAgICBOZXR3b3JrTWVzc2FnZURhdGEoUmVmPE5ldHdvcmtSVENQcm92aWRlcj4m
JiBydGNQcm92aWRlciwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgICAgICA6IHJ0
Y1Byb3ZpZGVyKFdURk1vdmUocnRjUHJvdmlkZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IDJh
YjJiZjU5OTI5ZTA1ZDc0ZjhkZTg2ZDU5ODhjZTA1NDhlNmY3NWIuLjhiN2VkNWVkNjE0NmZlMzQ3
MGViMTUyN2M1YTRkNzUwYjliMjIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwogY2xhc3MgTmV0d29ya1JUQ1NvY2tldDsKLSAgICAKKwogY2xhc3MgTmV0d29ya1JU
Q1Byb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtSVENQcm92aWRl
cj4sIHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE5ldHdvcmtSVENQcm92aWRlcj4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtSVENQcm92aWRlcihj
b25uZWN0aW9uKSk7IH0KQEAgLTY5LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBuZXdD
b25uZWN0aW9uKExpYldlYlJUQ1NvY2tldENsaWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiYmKTsKIAorICAgIHZvaWQgY2xvc2VMaXN0ZW5pbmdTb2NrZXRzKEZ1
bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBhdXRob3JpemVMaXN0ZW5pbmdTb2NrZXRzKCkg
eyBtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXplZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBOZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmKTsKIApAQCAtMTEyLDYgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4+IG1fcGVuZGluZ0lu
Y29taW5nU29ja2V0czsKICAgICB1aW50NjRfdCBtX2luY29taW5nU29ja2V0SWRlbnRpZmllciB7
IDAgfTsKKyAgICBib29sIG1faXNMaXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkIHsgdHJ1ZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>