<?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>174235</bug_id>
          
          <creation_ts>2017-07-06 20:43:38 -0700</creation_ts>
          <short_desc>[WK2] Use a rolling 30-day uptime for processing statistics</short_desc>
          <delta_ts>2017-07-07 22:10:02 -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>WebKit2</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>
          
          <blocked>174203</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326346</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 20:43:38 -0700</bug_when>
    <thetext>Switch from using a 30-day calendar date to a rolling set of 30 uptime events before processing load statistics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326348</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 20:44:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/33164381&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326356</commentid>
    <comment_count>2</comment_count>
      <attachid>314810</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 20:52:31 -0700</bug_when>
    <thetext>Created attachment 314810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326357</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 20:53:21 -0700</bug_when>
    <thetext>Using EWS as my build machine right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326547</commentid>
    <comment_count>4</comment_count>
      <attachid>314860</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 12:32:48 -0700</bug_when>
    <thetext>Created attachment 314860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326567</commentid>
    <comment_count>5</comment_count>
      <attachid>314860</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 13:06:56 -0700</bug_when>
    <thetext>Comment on attachment 314860
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:532
&gt; +void WebResourceLoadStatisticsStore::handleDailyTasks()

performDailyTasks?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:541
&gt;  void WebResourceLoadStatisticsStore::telemetryTimerFired()

Can we rename to submitTelemetryIfNecessary() for clarity?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:93
&gt; +    // Running history

Missing period at the end.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:138
&gt; +    // Running history

Missing period at the end.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:315
&gt; +    if (doesExceedActiveWindow(resourceStatistic.mostRecentUserInteractionTime)) {

Would exceedsActiveWindow() work? or hasStatisticsExpired(resourceStatistic) ?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:426
&gt; +bool ResourceLoadStatisticsStore::isSameDayAsCurrentOperatingDate(const WTF::WallTime&amp; date) const

This is always called with WallTime::now() parameter. Does it really need a parameter?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:437
&gt; +    m_operatingDates.append(WallTime::now());

How about:
while (m_operatingDates.size() &gt;= operatingDatesWindow)
    m_operatingDates.removeFirst();
m_operatingDates.append(WallTime::now());

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:447
&gt; +bool ResourceLoadStatisticsStore::doesExceedActiveWindow(const WTF::WallTime&amp; date) const

We do not need WTF:: prefix in the cpp. The only reason you need it in the header is because you forward declared.
WallTime is a double, no need to pass by const reference, we should pass it by value everywhere.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:454
&gt; +    // For testing

Missing period at the end. What does this do? Why is this needed for testing?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:104
&gt; +    bool doesExceedActiveWindow(const WTF::WallTime&amp;) const;

Can be private.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:105
&gt; +    bool isSameDayAsCurrentOperatingDate(const WTF::WallTime&amp;) const;

Could we move this into includeTodayAsOperatingDate(), which we would rename to includeTodayAsOperatingDateIfNecesary() ?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:114
&gt; +    Vector&lt;WTF::WallTime&gt; m_operatingDates;

This should be a Deque, not a Vector, since you remove from the front.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:115
&gt; +    WTF::WallTime m_earliestRetainedDate;

Why do we need this data member? It seems it is always m_operatingDates.first() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326602</commentid>
    <comment_count>6</comment_count>
      <attachid>314860</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 13:53:25 -0700</bug_when>
    <thetext>Comment on attachment 314860
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:541
&gt;&gt;  void WebResourceLoadStatisticsStore::telemetryTimerFired()
&gt; 
&gt; Can we rename to submitTelemetryIfNecessary() for clarity?

Done.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:93
&gt;&gt; +    // Running history
&gt; 
&gt; Missing period at the end.

This comment doesn&apos;t really add anything, so I&apos;ll remove it.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:138
&gt;&gt; +    // Running history
&gt; 
&gt; Missing period at the end.

I&apos;ll remove this comment, too.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:315
&gt;&gt; +    if (doesExceedActiveWindow(resourceStatistic.mostRecentUserInteractionTime)) {
&gt; 
&gt; Would exceedsActiveWindow() work? or hasStatisticsExpired(resourceStatistic) ?

I like &quot;hasStatisticsExpired&quot;

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:426
&gt;&gt; +bool ResourceLoadStatisticsStore::isSameDayAsCurrentOperatingDate(const WTF::WallTime&amp; date) const
&gt; 
&gt; This is always called with WallTime::now() parameter. Does it really need a parameter?

I guess not!

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:437
&gt;&gt; +    m_operatingDates.append(WallTime::now());
&gt; 
&gt; How about:
&gt; while (m_operatingDates.size() &gt;= operatingDatesWindow)
&gt;     m_operatingDates.removeFirst();
&gt; m_operatingDates.append(WallTime::now());

Yes -- that&apos;s better.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:447
&gt;&gt; +bool ResourceLoadStatisticsStore::doesExceedActiveWindow(const WTF::WallTime&amp; date) const
&gt; 
&gt; We do not need WTF:: prefix in the cpp. The only reason you need it in the header is because you forward declared.
&gt; WallTime is a double, no need to pass by const reference, we should pass it by value everywhere.

Will do.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:454
&gt;&gt; +    // For testing
&gt; 
&gt; Missing period at the end. What does this do? Why is this needed for testing?

We can set m_timeToLiveUserInteraction to a tighter window than the default, which is helpful for triggering this during testing.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:104
&gt;&gt; +    bool doesExceedActiveWindow(const WTF::WallTime&amp;) const;
&gt; 
&gt; Can be private.

Will do.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:105
&gt;&gt; +    bool isSameDayAsCurrentOperatingDate(const WTF::WallTime&amp;) const;
&gt; 
&gt; Could we move this into includeTodayAsOperatingDate(), which we would rename to includeTodayAsOperatingDateIfNecesary() ?

Yes, I think that works properly. I&apos;ll make that change.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:114
&gt;&gt; +    Vector&lt;WTF::WallTime&gt; m_operatingDates;
&gt; 
&gt; This should be a Deque, not a Vector, since you remove from the front.

Yeah, that makes sense. I was a little lazy here and just used Vector, since it encodes/decodes without additional steps.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:115
&gt;&gt; +    WTF::WallTime m_earliestRetainedDate;
&gt; 
&gt; Why do we need this data member? It seems it is always m_operatingDates.first() ?

I thought it would be more efficient to cache this value the one time a day we change it, so that checks against it would be faster. Maybe there is no meaningful per difference with a dequeue first() dereference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326605</commentid>
    <comment_count>7</comment_count>
      <attachid>314860</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 13:55:42 -0700</bug_when>
    <thetext>Comment on attachment 314860
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:454
&gt;&gt;&gt; +    // For testing
&gt;&gt; 
&gt;&gt; Missing period at the end. What does this do? Why is this needed for testing?
&gt; 
&gt; We can set m_timeToLiveUserInteraction to a tighter window than the default, which is helpful for triggering this during testing.

Yes, I would just include this in the comment.

&gt;&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:115
&gt;&gt;&gt; +    WTF::WallTime m_earliestRetainedDate;
&gt;&gt; 
&gt;&gt; Why do we need this data member? It seems it is always m_operatingDates.first() ?
&gt; 
&gt; I thought it would be more efficient to cache this value the one time a day we change it, so that checks against it would be faster. Maybe there is no meaningful per difference with a dequeue first() dereference?

I wouldn&apos;t think it is worth it to optimize a Deque::first() access, although you&apos;ll need a branch to check if the Deque is empty too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326611</commentid>
    <comment_count>8</comment_count>
      <attachid>314875</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:04:05 -0700</bug_when>
    <thetext>Created attachment 314875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326615</commentid>
    <comment_count>9</comment_count>
      <attachid>314875</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:07:55 -0700</bug_when>
    <thetext>Comment on attachment 314875
Patch

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

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:44
&gt; +const Seconds lengthOfDay { 30_s };

Whoops! This shouldn&apos;t stay like this.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:152
&gt; +        m_operatingDates.append(WTFMove(date));

Chris: Is there a more efficient way to populate a Deque from a Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326619</commentid>
    <comment_count>10</comment_count>
      <attachid>314860</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:10:36 -0700</bug_when>
    <thetext>Comment on attachment 314860
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:115
&gt;&gt;&gt;&gt; +    WTF::WallTime m_earliestRetainedDate;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why do we need this data member? It seems it is always m_operatingDates.first() ?
&gt;&gt; 
&gt;&gt; I thought it would be more efficient to cache this value the one time a day we change it, so that checks against it would be faster. Maybe there is no meaningful per difference with a dequeue first() dereference?
&gt; 
&gt; I wouldn&apos;t think it is worth it to optimize a Deque::first() access, although you&apos;ll need a branch to check if the Deque is empty too.

Actually, the only place I am using this is right after a size check, so it&apos;s pretty silly to bother trying to cache this value. I&apos;ll switch to m_earliestRetainedDate.first() instead and get rid of this member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326620</commentid>
    <comment_count>11</comment_count>
      <attachid>314875</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:11:20 -0700</bug_when>
    <thetext>Comment on attachment 314875
Patch

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

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:445
&gt; +        if (date &lt; m_earliestRetainedDate)

I&apos;ll change this to m_earliestRetainedDate.first()

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:115
&gt; +    WTF::WallTime m_earliestRetainedDate;

I&apos;ll get rid of the m_earliestRetainedDate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326621</commentid>
    <comment_count>12</comment_count>
      <attachid>314875</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 14:12:38 -0700</bug_when>
    <thetext>Comment on attachment 314875
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:443
&gt; +    store-&gt;setTimeToLiveUserInteraction(0_s);

Is this intentional? Why are we doing this?
Also, this needs to match the default value of the m_timeToLiveUserInteraction member in ResourceLoadStatistics.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:44
&gt; +const Seconds lengthOfDay { 30_s };

lengthOfDay is 30 seconds?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:139
&gt; +    succeeded = decoder.decodeObjects(&quot;operatingDates&quot;, dates, [](KeyedDecoder&amp; decoder, WallTime&amp; wallTime) {

Could we update decodeObjects() so that the second parameter is a template parameter? Its code should build for either Vector and Deque since both support append().

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:318
&gt; +    if (hasStatisticsExpired(resourceStatistic.mostRecentUserInteractionTime)) {

Given the name I suggested, my suggestion was to take resourceStatistic in parameter, not resourceStatistic.mostRecentUserInteractionTime.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:434
&gt; +    if (!m_operatingDates.isEmpty() &amp;&amp; (WallTime::now() - m_operatingDates.last() &lt; lengthOfDay))

Should this be *before* the removal? Also, I do not know what this check is about yet.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:439
&gt; +    m_earliestRetainedDate = m_operatingDates.first();

Why is this still here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326632</commentid>
    <comment_count>13</comment_count>
      <attachid>314880</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:30:16 -0700</bug_when>
    <thetext>Created attachment 314880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326636</commentid>
    <comment_count>14</comment_count>
      <attachid>314880</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:31:25 -0700</bug_when>
    <thetext>Comment on attachment 314880
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:443
&gt; +    store-&gt;setTimeToLiveUserInteraction(0_s);

It seems weird to have these, if they just set the store to its defaults. Couldn&apos;t that be a method on the store, that just sets them back to defaults, rather than requiring the knowledge in two places?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326641</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 14:41:25 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #14)
&gt; Comment on attachment 314880 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314880&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:443
&gt; &gt; +    store-&gt;setTimeToLiveUserInteraction(0_s);
&gt; 
&gt; It seems weird to have these, if they just set the store to its defaults.
&gt; Couldn&apos;t that be a method on the store, that just sets them back to
&gt; defaults, rather than requiring the knowledge in two places?

I totally agree. I just have got around to refactor this part yet. It is on my TODO list though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326647</commentid>
    <comment_count>16</comment_count>
      <attachid>314882</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 14:46:42 -0700</bug_when>
    <thetext>Created attachment 314882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326651</commentid>
    <comment_count>17</comment_count>
      <attachid>314882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 15:01:00 -0700</bug_when>
    <thetext>Comment on attachment 314882
Patch

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

&gt; Source/WebCore/platform/KeyedCoding.h:130
&gt; +    bool decodeObjects(const String&amp; key, Deque&lt;T&gt;&amp; objects, F&amp;&amp; function)

This seems like an exact copy paste of the method above. Why didn&apos;t you use a template parameter for the objects parameter type as I suggested? I think this would avoid the duplication.

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:430
&gt; +    if (!m_operatingDates.isEmpty() &amp;&amp; (WallTime::now() - m_operatingDates.last() &lt; 24_h))

Shouldn&apos;t this happen before we remove? Otherwise, we&apos;ll possibly end up removing a date but not adding one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326655</commentid>
    <comment_count>18</comment_count>
      <attachid>314883</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 15:17:27 -0700</bug_when>
    <thetext>Created attachment 314883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326656</commentid>
    <comment_count>19</comment_count>
      <attachid>314882</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 15:20:31 -0700</bug_when>
    <thetext>Comment on attachment 314882
Patch

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

&gt;&gt; Source/WebCore/platform/KeyedCoding.h:130
&gt;&gt; +    bool decodeObjects(const String&amp; key, Deque&lt;T&gt;&amp; objects, F&amp;&amp; function)
&gt; 
&gt; This seems like an exact copy paste of the method above. Why didn&apos;t you use a template parameter for the objects parameter type as I suggested? I think this would avoid the duplication.

I&apos;m trying to get the template/template syntax right, and I didn&apos;t want to risk breaking Vector uses. I&apos;m uploading a new patch.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:430
&gt;&gt; +    if (!m_operatingDates.isEmpty() &amp;&amp; (WallTime::now() - m_operatingDates.last() &lt; 24_h))
&gt; 
&gt; Shouldn&apos;t this happen before we remove? Otherwise, we&apos;ll possibly end up removing a date but not adding one.

But we might enter this routine a second time during the same 24-hour period. If the m_operatingDates queue is empty, we add the current date. If it&apos;s not empty, and the dates are for the same day, then we don&apos;t want to add.

I think this is correct as written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326657</commentid>
    <comment_count>20</comment_count>
      <attachid>314882</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 15:25:39 -0700</bug_when>
    <thetext>Comment on attachment 314882
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:430
&gt;&gt;&gt; +    if (!m_operatingDates.isEmpty() &amp;&amp; (WallTime::now() - m_operatingDates.last() &lt; 24_h))
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this happen before we remove? Otherwise, we&apos;ll possibly end up removing a date but not adding one.
&gt; 
&gt; But we might enter this routine a second time during the same 24-hour period. If the m_operatingDates queue is empty, we add the current date. If it&apos;s not empty, and the dates are for the same day, then we don&apos;t want to add.
&gt; 
&gt; I think this is correct as written.

I mean is that it seems okay to remove dates if we are already outside the bounds of our allowed operating window. Even if the current date is the same day as the last time stamp, it&apos;s okay to throw away the dates that are outside the allowed range of &apos;operatingDatesWindow&apos; count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326658</commentid>
    <comment_count>21</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 15:29:28 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #20)
&gt; Comment on attachment 314882 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314882&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:430
&gt; &gt;&gt;&gt; +    if (!m_operatingDates.isEmpty() &amp;&amp; (WallTime::now() - m_operatingDates.last() &lt; 24_h))
&gt; &gt;&gt; 
&gt; &gt;&gt; Shouldn&apos;t this happen before we remove? Otherwise, we&apos;ll possibly end up removing a date but not adding one.
&gt; &gt; 
&gt; &gt; But we might enter this routine a second time during the same 24-hour period. If the m_operatingDates queue is empty, we add the current date. If it&apos;s not empty, and the dates are for the same day, then we don&apos;t want to add.
&gt; &gt; 
&gt; &gt; I think this is correct as written.
&gt; 
&gt; I mean is that it seems okay to remove dates if we are already outside the
&gt; bounds of our allowed operating window. Even if the current date is the same
&gt; day as the last time stamp, it&apos;s okay to throw away the dates that are
&gt; outside the allowed range of &apos;operatingDatesWindow&apos; count.

I spoke to Chris offline, and agree that we might fall below the window if we are right on the edge of a day transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326673</commentid>
    <comment_count>22</comment_count>
      <attachid>314887</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 16:00:55 -0700</bug_when>
    <thetext>Created attachment 314887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326685</commentid>
    <comment_count>23</comment_count>
      <attachid>314887</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 16:15:05 -0700</bug_when>
    <thetext>Comment on attachment 314887
Patch

r=me if the bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326708</commentid>
    <comment_count>24</comment_count>
      <attachid>314887</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 17:07:16 -0700</bug_when>
    <thetext>Comment on attachment 314887
Patch

Clearing flags on attachment: 314887

Committed r219274: &lt;http://trac.webkit.org/changeset/219274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326709</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 17:07:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326747</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 21:10:30 -0700</bug_when>
    <thetext>This caused http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html to time out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326748</commentid>
    <comment_count>27</comment_count>
      <attachid>314887</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 21:11:34 -0700</bug_when>
    <thetext>Comment on attachment 314887
Patch

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

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.cpp:445
&gt; +    if (m_timeToLiveUserInteraction) {

This is bad because the test (http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html) sets it to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326749</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 21:14:14 -0700</bug_when>
    <thetext>Reopening because test failure needs to be addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326750</commentid>
    <comment_count>29</comment_count>
      <attachid>314913</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 21:24:56 -0700</bug_when>
    <thetext>Created attachment 314913
Follow-up fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326751</commentid>
    <comment_count>30</comment_count>
      <attachid>314913</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-07 22:06:29 -0700</bug_when>
    <thetext>Comment on attachment 314913
Follow-up fix

Thank you for fixing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326752</commentid>
    <comment_count>31</comment_count>
      <attachid>314913</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 22:09:59 -0700</bug_when>
    <thetext>Comment on attachment 314913
Follow-up fix

Clearing flags on attachment: 314913

Committed r219275: &lt;http://trac.webkit.org/changeset/219275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326753</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-07 22:10:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314810</attachid>
            <date>2017-07-06 20:52:31 -0700</date>
            <delta_ts>2017-07-07 12:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170706205230.patch</filename>
            <type>text/plain</type>
            <size>7305</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIzNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA3LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
cmVhdGVFbmNvZGVyRnJvbURhdGEpOiBXcml0ZSBvdXQgdmVjdG9yCisgICAgICAgIG9mIG9wZXJh
dGluZyBkYXRlcy4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWFkRGF0YUZyb21EZWNvZGVyKTogUmVhZCBpbiB2ZWN0b3Igb2YKKyAgICAgICAgb3BlcmF0
aW5nIGRhdGVzLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Omhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6IENoZWNrIG5ldworICAgICAgICBjb252ZW5p
ZW5jZSBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bWFya1RvZGF5QXNPcGVyYXRpbmdEYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZG9lc0V4Y2VlZEFjdGl2ZVdpbmRvdyk6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
YWREYXRhRnJvbURpc2tJZk5lZWRlZCk6IFdoZW4gcmVhZGluZworICAgICAgICBhIG5ldyBkYXRh
IGZpbGUsIHVwZGF0ZSB0aGUgY3VycmVudCBvcGVyYXRpbmcgZGF0ZSAoaWYgbmVlZGVkKS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVEYWls
eVRhc2tzKTogUm9sbCB1cHRpbWUgZGF0ZXMgYXMKKyAgICAgICAgbmVlZGVkLCB0aGVuIGhhbmRs
ZSB0ZWxlbWV0cnkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorCiAyMDE3LTA3LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCB1bnVzZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBtZW1iZXJzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3Miw2ICsyNzIsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVhCiAKICAgICBpZiAoY29yZVN0b3JlKCkuaXNFbXB0eSgpKQogICAgICAgICBn
cmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKKyAgICAKKyAgICBjb3JlU3RvcmUoKS5t
YXJrVG9kYXlBc09wZXJhdGluZ0RhdGUoKTsKIH0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZWZyZXNoRnJvbURpc2soKQpAQCAtNTM1LDcgKzUzNywxNiBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsCiAgICAgCiAgICAgc3VibWl0
VGVsZW1ldHJ5KCk7CiB9Ci0KKyAgICAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYW5kbGVEYWlseVRhc2tzKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgIAorICAgIGNvcmVTdG9yZSgpLm1hcmtUb2RheUFzT3BlcmF0aW5nRGF0ZSgpOworICAg
IAorICAgIHRlbGVtZXRyeVRpbWVyRmlyZWQoKTsKK30KKyAgICAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnkoKQogewogICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGVsZW1ldHJ5VGlt
ZXJGaXJlZCgpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgYm9vbCBoYXNTdGF0
aXN0aWNzRmlsZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
dm9pZCBoYW5kbGVEYWlseVRhc2tzKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgYXV0byBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uID0gNTsK
K3N0YXRpYyBjb25zdCBzaXplX3Qgb3BlcmF0aW5nRGF0ZXNXaW5kb3cgPSAzMDsKIHN0YXRpYyBT
ZWNvbmRzIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAyNF9oICogMzAuIH07CiBzdGF0aWMg
U2Vjb25kcyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKIHN0YXRpYyBT
ZWNvbmRzIGdyYW5kZmF0aGVyaW5nVGltZSB7IDFfaCB9OwpAQCAtOTIsNyArOTMsMTIgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gUmVzb3VyY2VMbwogICAgIGVuY29kZXItPmVuY29k
ZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJl
Z2luKCksIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVu
Y29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKICAgICAgICAgb3Jp
Z2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwotCisgICAgCisgICAgLy8g
UnVubmluZyBoaXN0b3J5CisgICAgZW5jb2Rlci5lbmNvZGVPYmplY3RzKCJvcGVyYXRpbmdEYXRl
cyIsIG1fb3BlcmF0aW5nRGF0ZXMuYmVnaW4oKSwgbV9vcGVyYXRpbmdEYXRlcy5lbmQoKSwgW10o
S2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFdURjo6V2FsbFRpbWUmIGRhdGUpIHsK
KyAgICAgICAgZW5jb2RlcklubmVyLmVuY29kZURvdWJsZSgiZGF0ZSIsIGRhdGUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICB9KTsKKyAgICAKICAgICByZXR1cm4gZW5jb2RlcjsK
IH0KIApAQCAtMTMzLDYgKzEzOSwxOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVhZERhCiAgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChzdGF0aXN0aWNz
LmhpZ2hMZXZlbERvbWFpbiwgV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAgICAgfQogICAgIAorICAg
IC8vIFJ1bm5pbmcgaGlzdG9yeQorICAgIHN1Y2NlZWRlZCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0
cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLCBbXShLZXllZERlY29kZXImIGRl
Y29kZXIsIFdURjo6V2FsbFRpbWUmIHdhbGxUaW1lKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgiZGF0ZSIsIHZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHdhbGxUaW1lID0gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7
CisgICAgCisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURv
bWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0cnVlKTsKIH0KIApAQCAtMjk2LDggKzMxNSw4
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWQKIHsKICAgICBpZiAo
IXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IHJlc291cmNlU3RhdGlzdGljLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgewor
ICAgIAorICAgIGlmIChkb2VzRXhjZWVkQWN0aXZlV2luZG93KHJlc291cmNlU3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kg
c2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KICAgICAgICAgLy8g
U2V0IHRpbWVzdGFtcCB0byAwIHNvIHRoYXQgc3RhdGlzdGljcyBtZXJnZSB3aWxsIGtub3cKICAg
ICAgICAgLy8gaXQgaGFzIGJlZW4gcmVzZXQgYXMgb3Bwb3NlZCB0byBpdHMgZGVmYXVsdCAtMS4K
QEAgLTQwOCw0ICs0MjcsMzIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRh
dGFSZQogICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVuZGluZyA9IGZhbHNlOwogfQogICAgIAor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtUb2RheUFzT3BlcmF0aW5nRGF0
ZSgpCit7CisgICAgYXV0byB0b2RheSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICBpZiAodG9kYXkg
LSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSA8IDI0X2gpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZCh0b2RheSk7CisgICAgCisgICAgaWYgKG1fb3Bl
cmF0aW5nRGF0ZXMuc2l6ZSgpIDwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBtX29wZXJhdGluZ0RhdGVzLnJlbW92ZSgwKTsKKyAgICAKKyAgICBtX2Vh
cmxpZXN0UmV0YWluZWREYXRlID0gbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpOworfQorICAgIAor
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRvZXNFeGNlZWRBY3RpdmVXaW5kb3co
V1RGOjpXYWxsVGltZSYgZGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoZGF0YSA8IG1fZWFybGllc3RS
ZXRhaW5lZERhdGUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIC8vIEZvciB0ZXN0
aW5nCisgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IGRhdGUgKyB0aW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5
MjMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCwxNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzaG91bGRSZW1vdmVEYXRhUmVjb3JkcygpIGNvbnN0OwogICAgIHZvaWQgZGF0
YVJlY29yZHNCZWluZ1JlbW92ZWQoKTsKICAgICB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQo
KTsKLQorICAgIAorICAgIHZvaWQgbWFya1RvZGF5QXNPcGVyYXRpbmdEYXRlKCk7CisgICAgYm9v
bCBkb2VzRXhjZWVkQWN0aXZlV2luZG93KFdURjo6V2FsbFRpbWUmKSBjb25zdDsKKyAgICAKIHBy
aXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0OwogCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwOworICAgIAorICAgIFZlY3RvcjxXVEY6OldhbGxUaW1lPiBtX29w
ZXJhdGluZ0RhdGVzOworICAgIFdURjo6V2FsbFRpbWUgbV9lYXJsaWVzdFJldGFpbmVkRGF0ZTsK
IAogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2RhdGFBZGRlZEhhbmRsZXI7CiAgICAgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBib29sIGNsZWFyRmlyc3QpPiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5z
SGFuZGxlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314860</attachid>
            <date>2017-07-07 12:32:48 -0700</date>
            <delta_ts>2017-07-07 14:04:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707123247.patch</filename>
            <type>text/plain</type>
            <size>8492</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA3LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
cmVhdGVFbmNvZGVyRnJvbURhdGEpOiBXcml0ZSBvdXQgdmVjdG9yCisgICAgICAgIG9mIG9wZXJh
dGluZyBkYXRlcy4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWFkRGF0YUZyb21EZWNvZGVyKTogUmVhZCBpbiB2ZWN0b3Igb2YKKyAgICAgICAgb3BlcmF0
aW5nIGRhdGVzLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Omhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6IENoZWNrIG5ldworICAgICAgICBjb252ZW5p
ZW5jZSBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bWFya1RvZGF5QXNPcGVyYXRpbmdEYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZG9lc0V4Y2VlZEFjdGl2ZVdpbmRvdyk6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
YWREYXRhRnJvbURpc2tJZk5lZWRlZCk6IFdoZW4gcmVhZGluZworICAgICAgICBhIG5ldyBkYXRh
IGZpbGUsIHVwZGF0ZSB0aGUgY3VycmVudCBvcGVyYXRpbmcgZGF0ZSAoaWYgbmVlZGVkKS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVEYWls
eVRhc2tzKTogUm9sbCB1cHRpbWUgZGF0ZXMgYXMKKyAgICAgICAgbmVlZGVkLCB0aGVuIGhhbmRs
ZSB0ZWxlbWV0cnkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorCiAyMDE3LTA3LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBXS1dlYlNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YU9mVHlwZXMgc2hvdWxk
IHdhaXQgdW50aWwgZGlzayBjYWNoZSBmaWxlcyBhcmUgYWN0dWFsbHkgcmVtb3ZlZCBiZWZvcmUg
aW52b2tpbmcgY29tcGxldGlvbiBoYW5kbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAko
cmV2aXNpb24gMjE5MjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdQogICAgICwgbV9zdGF0aXN0
aWNzUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVl
OjpRT1M6OlV0aWxpdHkpKQogICAgICwgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGgocmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKICAgICAsIG1fdGVsZW1ldHJ5T25lU2hvdFRpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVs
ZW1ldHJ5VGltZXJGaXJlZCkKLSAgICAsIG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRlbGVtZXRy
eVRpbWVyRmlyZWQpCisgICAgLCBtX3RlbGVtZXRyeVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVEYWlseVRh
c2tzKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI3Miw2ICsyNzIs
OSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhCiAKICAgICBpZiAo
Y29yZVN0b3JlKCkuaXNFbXB0eSgpKQogICAgICAgICBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGEoKTsKKworICAgIGlmICghY29yZVN0b3JlKCkuaXNTYW1lRGF5QXNDdXJyZW50T3BlcmF0
aW5nRGF0ZShXYWxsVGltZTo6bm93KCkpKQorICAgICAgICBjb3JlU3RvcmUoKS5pbmNsdWRlVG9k
YXlBc09wZXJhdGluZ0RhdGUoKTsKIH0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZWZyZXNoRnJvbURpc2soKQpAQCAtNTI2LDYgKzUyOSwxNSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBXZWJSZXNvdXJjCiAgICAgcmV0dXJuIEtleWVkRGVjb2Rl
cjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYW5kbGVEYWlseVRhc2tzKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgY29yZVN0b3JlKCkuaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlKCk7CisKKyAg
ICB0ZWxlbWV0cnlUaW1lckZpcmVkKCk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp0ZWxlbWV0cnlUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5MjU2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRl
bGVtZXRyeVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIGJv
b2wgaGFzU3RhdGlzdGljc0ZpbGVDaGFuZ2VkU2luY2VMYXN0U3luYyhjb25zdCBTdHJpbmcmIHBh
dGgpOworICAgIHZvaWQgaGFuZGxlRGFpbHlUYXNrcygpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxOTI1NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1jb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJz
aW9uIHsgNSB9OworY29uc3QgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDYgfTsK
K2NvbnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93IHsgMzAgfTsKIAogUmVmPFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUoKQogewpAQCAtODgsNyArODksMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4g
UmVzb3VyY2VMbwogICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGlj
cyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJlZ2luKCksIG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGlj
c1ZhbHVlJiBvcmlnaW4pIHsKICAgICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5u
ZXIpOwogICAgIH0pOwotCisgICAgCisgICAgLy8gUnVubmluZyBoaXN0b3J5CisgICAgZW5jb2Rl
ci0+ZW5jb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLmJlZ2lu
KCksIG1fb3BlcmF0aW5nRGF0ZXMuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVy
LCBjb25zdCBXVEY6OldhbGxUaW1lJiBkYXRlKSB7CisgICAgICAgIGVuY29kZXJJbm5lci5lbmNv
ZGVEb3VibGUoImRhdGUiLCBkYXRlLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAg
fSk7CisgICAgCiAgICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKQEAgLTEyOSw2ICsxMzUsMTkgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYQogICAgICAgICBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4sIFdURk1vdmUo
c3RhdGlzdGljcykpOwogICAgIH0KICAgICAKKyAgICAvLyBSdW5uaW5nIGhpc3RvcnkKKyAgICBz
dWNjZWVkZWQgPSBkZWNvZGVyLmRlY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9vcGVy
YXRpbmdEYXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBXVEY6OldhbGxUaW1lJiB3YWxs
VGltZSkgeworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVEb3VibGUoImRhdGUiLCB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICB3YWxsVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh2YWx1ZSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworICAgIAorICAgIGlmICghc3VjY2VlZGVk
KQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKHsgfSwgcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlv
biwgdHJ1ZSk7CiB9CiAKQEAgLTI5Myw3ICszMTIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzSGFkCiAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50
ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChXYWxsVGltZTo6bm93
KCkgPiByZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1f
dGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgeworICAgIGlmIChkb2VzRXhjZWVkQWN0aXZlV2lu
ZG93KHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSkgewog
ICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVjYXVzZSB3ZSBubyBsb25n
ZXIgbmVlZCBpdC4KICAgICAgICAgLy8gU2V0IHRpbWVzdGFtcCB0byAwIHNvIHRoYXQgc3RhdGlz
dGljcyBtZXJnZSB3aWxsIGtub3cKICAgICAgICAgLy8gaXQgaGFzIGJlZW4gcmVzZXQgYXMgb3Bw
b3NlZCB0byBpdHMgZGVmYXVsdCAtMS4KQEAgLTQwMyw1ICs0MjIsNDAgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRhdGFSZQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVuZGluZyA9IGZhbHNlOwogfQorCitib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNTYW1lRGF5QXNDdXJyZW50T3BlcmF0aW5n
RGF0ZShjb25zdCBXVEY6OldhbGxUaW1lJiBkYXRlKSBjb25zdAoreworICAgIGlmIChtX29wZXJh
dGluZ0RhdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGRhdGUgLSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSA8IDI0X2g7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGUoKQorewor
ICAgIEFTU0VSVCghaXNTYW1lRGF5QXNDdXJyZW50T3BlcmF0aW5nRGF0ZShXYWxsVGltZTo6bm93
KCkpKTsKKyAgICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZChXYWxsVGltZTo6bm93KCkpOworICAg
IAorICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA8IG9wZXJhdGluZ0RhdGVzV2luZG93
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9vcGVyYXRpbmdEYXRlcy5yZW1vdmUoMCk7
CisgICAgCisgICAgbV9lYXJsaWVzdFJldGFpbmVkRGF0ZSA9IG1fb3BlcmF0aW5nRGF0ZXMuZmly
c3QoKTsKK30KKyAgICAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkb2VzRXhj
ZWVkQWN0aXZlV2luZG93KGNvbnN0IFdURjo6V2FsbFRpbWUmIGRhdGUpIGNvbnN0Cit7CisgICAg
aWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KSB7Cisg
ICAgICAgIGlmIChkYXRlIDwgbV9lYXJsaWVzdFJldGFpbmVkRGF0ZSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEZvciB0ZXN0aW5nCisgICAgaWYgKFdhbGxUaW1l
Ojpub3coKSA+IGRhdGUgKyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KICAgICAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTkyNTYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhUmVj
b3Jkc0JlaW5nUmVtb3ZlZCgpOwogICAgIHZvaWQgZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgpOwog
CisgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGUoKTsKKyAgICBib29sIGRvZXNF
eGNlZWRBY3RpdmVXaW5kb3coY29uc3QgV1RGOjpXYWxsVGltZSYpIGNvbnN0OworICAgIGJvb2wg
aXNTYW1lRGF5QXNDdXJyZW50T3BlcmF0aW5nRGF0ZShjb25zdCBXVEY6OldhbGxUaW1lJikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZh
dWx0OwogCkBAIC0xMDcsNiArMTExLDkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01h
cDsKIAorICAgIFZlY3RvcjxXVEY6OldhbGxUaW1lPiBtX29wZXJhdGluZ0RhdGVzOworICAgIFdU
Rjo6V2FsbFRpbWUgbV9lYXJsaWVzdFJldGFpbmVkRGF0ZTsKKwogICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2RhdGFBZGRlZEhhbmRsZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIGNsZWFyRmlyc3Qp
PiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcjsKICAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV9ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGFIYW5kbGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314875</attachid>
            <date>2017-07-07 14:04:05 -0700</date>
            <delta_ts>2017-07-07 14:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707140404.patch</filename>
            <type>text/plain</type>
            <size>9871</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI1NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA3LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXS1dlYnNpdGVEYXRhU3RvcmU6Ol9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6IEluaXRpYWxpemUgdGltZS10by1saXZlIHRv
IHplcm8gYnkgZGVmYXVsdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSk6IFdyaXRlIG91dCB2ZWN0b3IKKyAg
ICAgICAgb2Ygb3BlcmF0aW5nIGRhdGVzLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIpOiBSZWFkIGluIHZlY3RvciBvZgor
ICAgICAgICBvcGVyYXRpbmcgZGF0ZXMuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKTogQ2hlY2sgbmV3Cisg
ICAgICAgIGNvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjptYXJrVG9kYXlBc09wZXJhdGluZ0RhdGUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhw
aXJlZCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCk6IFdoZW4gcmVhZGluZworICAgICAg
ICBhIG5ldyBkYXRhIGZpbGUsIHVwZGF0ZSB0aGUgY3VycmVudCBvcGVyYXRpbmcgZGF0ZSAoaWYg
bmVlZGVkKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpoYW5kbGVEYWlseVRhc2tzKTogUm9sbCB1cHRpbWUgZGF0ZXMgYXMKKyAgICAgICAgbmVlZGVk
LCB0aGVuIGhhbmRsZSB0ZWxlbWV0cnkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorCiAyMDE3LTA3LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1dlYlNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YU9m
VHlwZXMgc2hvdWxkIHdhaXQgdW50aWwgZGlzayBjYWNoZSBmaWxlcyBhcmUgYWN0dWFsbHkgcmVt
b3ZlZCBiZWZvcmUgaW52b2tpbmcgY29tcGxldGlvbiBoYW5kbGVyCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MjU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDggKzk0LDggQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdQogICAg
IDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1f
c3RhdGlzdGljc1N0b3JhZ2VQYXRoKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCi0g
ICAgLCBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRlbGVtZXRyeVRpbWVyRmlyZWQpCi0gICAgLCBt
X3RlbGVtZXRyeVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0ZWxlbWV0cnlUaW1lckZpcmVkKQorICAgICwgbV90ZWxl
bWV0cnlPbmVTaG90VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSkKKyAgICAsIG1fdGVs
ZW1ldHJ5UmVwZWF0ZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTI3Miw2ICsyNzIsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVhCiAKICAgICBpZiAoY29yZVN0b3JlKCkuaXNFbXB0eSgpKQog
ICAgICAgICBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKKworICAgIGNvcmVTdG9y
ZSgpLmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAgICAgCiB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVmcmVzaEZyb21EaXNrKCkKQEAg
LTUyNiw3ICs1MjgsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gV2ViUmVzb3Vy
YwogICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5VGltZXJGaXJlZCgpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MoKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBjb3JlU3RvcmUoKS5pbmNsdWRl
VG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOworCisgICAgc3VibWl0VGVsZW1ldHJ5
SWZOZWNlc3NhcnkoKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5MjU2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsOSArMTMyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhckluTWVtb3J5RGF0YSgpOwogICAgIHZvaWQgc3luY1dpdGhFeGlzdGluZ1N0YXRpc3Rp
Y3NTdG9yYWdlSWZOZWVkZWQoKTsKICAgICB2b2lkIHJlZnJlc2hGcm9tRGlzaygpOwotICAgIHZv
aWQgdGVsZW1ldHJ5VGltZXJGaXJlZCgpOworICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5SWZOZWNl
c3NhcnkoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIGJvb2wgaGFzU3RhdGlz
dGljc0ZpbGVDaGFuZ2VkU2luY2VMYXN0U3luYyhjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZv
aWQgcGVyZm9ybURhaWx5VGFza3MoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDIxOTI1NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9DbwogICAgIGlmICghc3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDBf
cyk7CiAgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwog
ICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsK
ICAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxOTI1NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1jb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9u
IHsgNSB9OworY29uc3QgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDYgfTsKK2Nv
bnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93IHsgMzAgfTsKK2NvbnN0IFNlY29uZHMg
bGVuZ3RoT2ZEYXkgeyAzMF9zIH07CiAKIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkKIHsKQEAgLTg4LDcgKzkwLDEx
IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IFJlc291cmNlTG8KICAgICBlbmNvZGVy
LT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW10oS2V5ZWRFbmNv
ZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3RpY3NWYWx1ZSYgb3JpZ2luKSB7CiAgICAg
ICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyKTsKICAgICB9KTsKLQorICAgIAor
ICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdE
YXRlcy5iZWdpbigpLCBtX29wZXJhdGluZ0RhdGVzLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVu
Y29kZXJJbm5lciwgV2FsbFRpbWUgZGF0ZSkgeworICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2Rl
RG91YmxlKCJkYXRlIiwgZGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworICAgIH0p
OworICAgIAogICAgIHJldHVybiBlbmNvZGVyOwogfQogCkBAIC0xMjgsNyArMTM0LDIzIEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGEKICAgICAgICAgfQogICAgICAg
ICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4s
IFdURk1vdmUoc3RhdGlzdGljcykpOwogICAgIH0KLSAgICAKKworICAgIFZlY3RvcjxXYWxsVGlt
ZT4gZGF0ZXM7CisgICAgc3VjY2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKCJvcGVyYXRp
bmdEYXRlcyIsIGRhdGVzLCBbXShLZXllZERlY29kZXImIGRlY29kZXIsIFdhbGxUaW1lJiB3YWxs
VGltZSkgeworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVEb3VibGUoImRhdGUiLCB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICB3YWxsVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh2YWx1ZSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworCisgICAgaWYgKCFzdWNjZWVkZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYmIGRhdGUgOiBkYXRlcykKKyAgICAgICAg
bV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQoV1RGTW92ZShkYXRlKSk7CisKICAgICBmaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCB0cnVlKTsKIH0KIApAQCAtMjkzLDcgKzMxNSw3IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWQKICAgICBpZiAoIXJlc291cmNlU3Rh
dGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKFdhbGxUaW1lOjpub3coKSA+IHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lICsgbV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgaWYgKGhh
c1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lKSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZlIGRhdGEgYmVj
YXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KICAgICAgICAgLy8gU2V0IHRpbWVzdGFtcCB0byAw
IHNvIHRoYXQgc3RhdGlzdGljcyBtZXJnZSB3aWxsIGtub3cKICAgICAgICAgLy8gaXQgaGFzIGJl
ZW4gcmVzZXQgYXMgb3Bwb3NlZCB0byBpdHMgZGVmYXVsdCAtMS4KQEAgLTQwMyw1ICs0MjUsMzUg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRhdGFSZQogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVuZGluZyA9IGZh
bHNlOwogfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5
QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKQoreworICAgIHdoaWxlIChtX29wZXJhdGluZ0Rh
dGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvdykKKyAgICAgICAgbV9vcGVyYXRpbmdE
YXRlcy5yZW1vdmVGaXJzdCgpOworCisgICAgaWYgKCFtX29wZXJhdGluZ0RhdGVzLmlzRW1wdHko
KSAmJiAoV2FsbFRpbWU6Om5vdygpIC0gbV9vcGVyYXRpbmdEYXRlcy5sYXN0KCkgPCBsZW5ndGhP
ZkRheSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKFdh
bGxUaW1lOjpub3coKSk7CisKKyAgICBtX2VhcmxpZXN0UmV0YWluZWREYXRlID0gbV9vcGVyYXRp
bmdEYXRlcy5maXJzdCgpOworfQorICAgIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIGRhdGUpIGNvbnN0Cit7CisgICAgaWYg
KG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KSB7CisgICAg
ICAgIGlmIChkYXRlIDwgbV9lYXJsaWVzdFJldGFpbmVkRGF0ZSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVy
aWEgZm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBjaGVjayB0aGUgdXNlcgorICAgIC8vIHNldHRp
bmcgZm9yIGEgdGlnaHRlciByZXN0cmljdGlvbiAobWFpbmx5IGZvciB0ZXN0aW5nKS4KKyAgICBp
ZiAobV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxsVGltZTo6
bm93KCkgPiBkYXRlICsgbV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KICAgICAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTkyNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMCwxMyAr
MTAxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CiAg
ICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7CiAKKyAgICB2b2lkIGluY2x1ZGVUb2Rh
eUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRp
b25Db29raWVzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsK
KyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lKSBjb25zdDsKIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNl
U3RhdGlzdGljc01hcDsKIAorICAgIERlcXVlPFdURjo6V2FsbFRpbWU+IG1fb3BlcmF0aW5nRGF0
ZXM7CisgICAgV1RGOjpXYWxsVGltZSBtX2VhcmxpZXN0UmV0YWluZWREYXRlOworCiAgICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fZGF0YUFkZGVkSGFuZGxlcjsKICAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wg
Y2xlYXJGaXJzdCk+IG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyOwog
ICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2dyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YUhhbmRsZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314880</attachid>
            <date>2017-07-07 14:30:16 -0700</date>
            <delta_ts>2017-07-07 14:46:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707143015.patch</filename>
            <type>text/plain</type>
            <size>12020</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA3LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIEtleWVkRGVjb2RlciBzcGVjaWFsaXphdGlvbiBmb3IgRGVxdWUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVPYmplY3RzKToKKwogMjAxNy0wNy0wNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBVlBsYXllciBjYW4gY29udGludWUgdG8g
YmUgYWN0aXZlIGFmdGVyIHJlbGVhc2VkIGJ5IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHJldmlzaW9u
IDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw3ICsxMjQsMjggQEAgcHVibGljOgogICAgICAgICBlbmRBcnJheSgp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEY+CisgICAgYm9vbCBkZWNvZGVPYmplY3RzKGNvbnN0IFN0cmlu
ZyYga2V5LCBEZXF1ZTxUPiYgb2JqZWN0cywgRiYmIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAg
aWYgKCFiZWdpbkFycmF5KGtleSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHdoaWxlIChiZWdpbkFycmF5
RWxlbWVudCgpKSB7CisgICAgICAgICAgICBUIGVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoIWZ1
bmN0aW9uKCp0aGlzLCBlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb2Jq
ZWN0cy5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBlbmRBcnJheUVsZW1l
bnQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW5kQXJyYXkoKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgS2V5ZWREZWNvZGVy
KCkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTkyNjcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0wNy0w
NyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBV
c2UgYSByb2xsaW5nIDMwLWRheSB1cHRpbWUgZm9yIHByb2Nlc3Npbmcgc3RhdGlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zMzE2NDM4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V0tXZWJzaXRlRGF0YVN0b3JlOjpfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBJbml0aWFsaXplIHRpbWUt
dG8tbGl2ZSB0byB6ZXJvIGJ5IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2Uv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVFbmNvZGVyRnJvbURhdGEpOiBXcml0ZSBvdXQg
dmVjdG9yCisgICAgICAgIG9mIG9wZXJhdGluZyBkYXRlcy4KKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EZWNvZGVyKTogUmVhZCBpbiB2
ZWN0b3Igb2YKKyAgICAgICAgb3BlcmF0aW5nIGRhdGVzLgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6IENo
ZWNrIG5ldworICAgICAgICBjb252ZW5pZW5jZSBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya1RvZGF5QXNPcGVyYXRpbmdEYXRlKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rh
dGlzdGljc0V4cGlyZWQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOiBXaGVuIHJlYWRp
bmcKKyAgICAgICAgYSBuZXcgZGF0YSBmaWxlLCB1cGRhdGUgdGhlIGN1cnJlbnQgb3BlcmF0aW5n
IGRhdGUgKGlmIG5lZWRlZCkuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFuZGxlRGFpbHlUYXNrcyk6IFJvbGwgdXB0aW1lIGRhdGVzIGFzCisgICAg
ICAgIG5lZWRlZCwgdGhlbiBoYW5kbGUgdGVsZW1ldHJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxNy0wNy0wNyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIxOTIzOCwgcjIxOTIzOSwgYW5kIHIyMTkyNDEuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MjY3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDggKzk0LDggQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdQogICAg
IDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1f
c3RhdGlzdGljc1N0b3JhZ2VQYXRoKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCi0g
ICAgLCBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRlbGVtZXRyeVRpbWVyRmlyZWQpCi0gICAgLCBt
X3RlbGVtZXRyeVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0ZWxlbWV0cnlUaW1lckZpcmVkKQorICAgICwgbV90ZWxl
bWV0cnlPbmVTaG90VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSkKKyAgICAsIG1fdGVs
ZW1ldHJ5UmVwZWF0ZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTI3Miw2ICsyNzIsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVhCiAKICAgICBpZiAoY29yZVN0b3JlKCkuaXNFbXB0eSgpKQog
ICAgICAgICBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKKworICAgIGNvcmVTdG9y
ZSgpLmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAgICAgCiB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVmcmVzaEZyb21EaXNrKCkKQEAg
LTUyNiw3ICs1MjgsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gV2ViUmVzb3Vy
YwogICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5VGltZXJGaXJlZCgpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MoKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBjb3JlU3RvcmUoKS5pbmNsdWRl
VG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOworCisgICAgc3VibWl0VGVsZW1ldHJ5
SWZOZWNlc3NhcnkoKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5MjY3KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsOSArMTMyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhckluTWVtb3J5RGF0YSgpOwogICAgIHZvaWQgc3luY1dpdGhFeGlzdGluZ1N0YXRpc3Rp
Y3NTdG9yYWdlSWZOZWVkZWQoKTsKICAgICB2b2lkIHJlZnJlc2hGcm9tRGlzaygpOwotICAgIHZv
aWQgdGVsZW1ldHJ5VGltZXJGaXJlZCgpOworICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5SWZOZWNl
c3NhcnkoKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIGJvb2wgaGFzU3RhdGlz
dGljc0ZpbGVDaGFuZ2VkU2luY2VMYXN0U3luYyhjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZv
aWQgcGVyZm9ybURhaWx5VGFza3MoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJl
dmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9DbwogICAgIGlmICghc3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDBf
cyk7CiAgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwog
ICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsK
ICAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1jb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9u
IHsgNSB9OwotCitjb25zdCB1bnNpZ25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uIHsgNiB9Owor
Y29uc3QgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3cgeyAzMCB9OworICAgIAogUmVmPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
cmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSgpKTsKQEAgLTg4LDcgKzg5LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29k
ZXI+IFJlc291cmNlTG8KICAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRp
c3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5lbmQoKSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRp
c3RpY3NWYWx1ZSYgb3JpZ2luKSB7CiAgICAgICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2Rl
cklubmVyKTsKICAgICB9KTsKLQorICAgIAorICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoIm9w
ZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdEYXRlcy5iZWdpbigpLCBtX29wZXJhdGluZ0RhdGVz
LmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgV2FsbFRpbWUgZGF0ZSkgewor
ICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlRG91YmxlKCJkYXRlIiwgZGF0ZS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkpOworICAgIH0pOworICAgIAogICAgIHJldHVybiBlbmNvZGVyOwog
fQogCkBAIC0xMjgsNiArMTMzLDE4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWFkRGEKICAgICAgICAgfQogICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQo
c3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4sIFdURk1vdmUoc3RhdGlzdGljcykpOwogICAgIH0K
KworICAgIHN1Y2NlZWRlZCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMi
LCBtX29wZXJhdGluZ0RhdGVzLCBbXShLZXllZERlY29kZXImIGRlY29kZXIsIFdhbGxUaW1lJiB3
YWxsVGltZSkgeworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVEb3VibGUoImRhdGUiLCB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgICAgICB3YWxsVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh2YWx1
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworCisgICAgaWYgKCFzdWNjZWVkZWQp
CisgICAgICAgIHJldHVybjsKICAgICAKICAgICBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9u
LCB0cnVlKTsKIH0KQEAgLTEzNiw3ICsxNTMsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2xlYXJJCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKLSAgICAKKyAgICBtX29wZXJhdGluZ0Rh
dGVzLmNsZWFyKCk7CisKICAgICBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9
LCB7IH0sIHRydWUpOwogfQogCkBAIC0yOTMsNyArMzExLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc0hhZAogICAgIGlmICghcmVzb3VyY2VTdGF0aXN0aWMuaGFkVXNl
ckludGVyYWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoV2FsbFRpbWU6
Om5vdygpID4gcmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUg
KyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBpZiAoaGFzU3RhdGlzdGljc0V4
cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMpKSB7CiAgICAgICAgIC8vIERyb3AgcHJpdmFjeSBzZW5z
aXRpdmUgZGF0YSBiZWNhdXNlIHdlIG5vIGxvbmdlciBuZWVkIGl0LgogICAgICAgICAvLyBTZXQg
dGltZXN0YW1wIHRvIDAgc28gdGhhdCBzdGF0aXN0aWNzIG1lcmdlIHdpbGwga25vdwogICAgICAg
ICAvLyBpdCBoYXMgYmVlbiByZXNldCBhcyBvcHBvc2VkIHRvIGl0cyBkZWZhdWx0IC0xLgpAQCAt
NDAzLDUgKzQyMSwzMyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGF0YVJl
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9kYXRhUmVjb3Jkc1JlbW92
YWxQZW5kaW5nID0gZmFsc2U7CiB9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCit7CisgICAgd2hpbGUg
KG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KQorICAgICAg
ICBtX29wZXJhdGluZ0RhdGVzLnJlbW92ZUZpcnN0KCk7CisKKyAgICBpZiAoIW1fb3BlcmF0aW5n
RGF0ZXMuaXNFbXB0eSgpICYmIChXYWxsVGltZTo6bm93KCkgLSBtX29wZXJhdGluZ0RhdGVzLmxh
c3QoKSA8IDI0X2gpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX29wZXJhdGluZ0RhdGVzLmFw
cGVuZChXYWxsVGltZTo6bm93KCkpOworfQorICAgIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIHJlc291cmNlU3RhdGlzdGljKSBjb25zdAoreworICAgIGlmIChtX29wZXJhdGluZ0RhdGVz
LnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvdykgeworICAgICAgICBpZiAocmVzb3VyY2VT
dGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPCBtX29wZXJhdGluZ0RhdGVz
LmZpcnN0KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3
ZSBkb24ndCBtZWV0IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywg
Y2hlY2sgdGhlIHVzZXIKKyAgICAvLyBzZXR0aW5nIGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rpb24g
KG1haW5seSBmb3IgdGVzdGluZykuCisgICAgaWYgKG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bikgeworICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gcmVzb3VyY2VTdGF0aXN0aWMubW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24p
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQogICAgIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9u
IDIxOTI2NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtOTksMjAgKzEwMCwyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhUmVjb3Jkc0JlaW5n
UmVtb3ZlZCgpOwogICAgIHZvaWQgZGF0YVJlY29yZHNXZXJlUmVtb3ZlZCgpOwogCisgICAgdm9p
ZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOworCiBwcml2YXRlOgog
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpID0gZGVmYXVsdDsKIAogICAgIGJvb2wg
c2hvdWxkUGFydGl0aW9uQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJikgY29uc3Q7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7
Ci0KKyAgICBEZXF1ZTxXVEY6OldhbGxUaW1lPiBtX29wZXJhdGluZ0RhdGVzOworICAgIAogICAg
IFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2RhdGFBZGRlZEhhbmRsZXI7CiAgICAgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBi
b29sIGNsZWFyRmlyc3QpPiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxl
cjsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGFIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2RlbGV0ZVBlcnNpc3Rl
bnRTdG9yZUhhbmRsZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZmlyZVRlbGVtZXRy
eUhhbmRsZXI7CiAKLSAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiB7IDI0
X2ggKiAzMC4gfTsKKyAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiB7IDBf
cyB9OwogICAgIFNlY29uZHMgbV90aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2gg
fTsKICAgICBTZWNvbmRzIG1fZ3JhbmRmYXRoZXJpbmdUaW1lIHsgMV9oIH07CiAgICAgU2Vjb25k
cyBtX21pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCB7IDFfaCB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314882</attachid>
            <date>2017-07-07 14:46:42 -0700</date>
            <delta_ts>2017-07-07 15:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707144641.patch</filename>
            <type>text/plain</type>
            <size>12154</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA3LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIEtleWVkRGVjb2RlciBzcGVjaWFsaXphdGlvbiBmb3IgRGVxdWUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVPYmplY3RzKToKKwogMjAxNy0wNy0wNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBVlBsYXllciBjYW4gY29udGludWUgdG8g
YmUgYWN0aXZlIGFmdGVyIHJlbGVhc2VkIGJ5IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHJldmlzaW9u
IDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTI0LDcgKzEyNSwyOCBAQCBwdWJsaWM6
CiAgICAgICAgIGVuZEFycmF5KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRj4KKyAgICBib29sIGRlY29k
ZU9iamVjdHMoY29uc3QgU3RyaW5nJiBrZXksIERlcXVlPFQ+JiBvYmplY3RzLCBGJiYgZnVuY3Rp
b24pCisgICAgeworICAgICAgICBpZiAoIWJlZ2luQXJyYXkoa2V5KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICAg
ICAgd2hpbGUgKGJlZ2luQXJyYXlFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIFQgZWxlbWVudDsK
KyAgICAgICAgICAgIGlmICghZnVuY3Rpb24oKnRoaXMsIGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAg
ICAgICAgIGVuZEFycmF5RWxlbWVudCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBl
bmRBcnJheSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKIHByb3RlY3Rl
ZDoKICAgICBLZXllZERlY29kZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
OTI2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE3LTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxpbmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vz
c2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXS1dlYnNp
dGVEYXRhU3RvcmU6Ol9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZSk6IEluaXRpYWxpemUgdGltZS10by1saXZlIHRvIHplcm8gYnkgZGVmYXVsdC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJG
cm9tRGF0YSk6IFdyaXRlIG91dCB2ZWN0b3IKKyAgICAgICAgb2Ygb3BlcmF0aW5nIGRhdGVzLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJv
bURlY29kZXIpOiBSZWFkIGluIHZlY3RvciBvZgorICAgICAgICBvcGVyYXRpbmcgZGF0ZXMuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50
VXNlckludGVyYWN0aW9uKTogQ2hlY2sgbmV3CisgICAgICAgIGNvbnZlbmllbmNlIG1ldGhvZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrVG9kYXlB
c09wZXJhdGluZ0RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZCk6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJ
Zk5lZWRlZCk6IFdoZW4gcmVhZGluZworICAgICAgICBhIG5ldyBkYXRhIGZpbGUsIHVwZGF0ZSB0
aGUgY3VycmVudCBvcGVyYXRpbmcgZGF0ZSAoaWYgbmVlZGVkKS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVEYWlseVRhc2tzKTogUm9sbCB1
cHRpbWUgZGF0ZXMgYXMKKyAgICAgICAgbmVlZGVkLCB0aGVuIGhhbmRsZSB0ZWxlbWV0cnkuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorCiAy
MDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5MjM5LCBhbmQgcjIxOTI0
MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMTkyNjcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsOCBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OldlYlJlc291CiAgICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpKQogICAgICwgbV9zdGF0aXN0aWNzUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9j
ZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6
OlV0aWxpdHkpKQogICAgICwgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGgocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSkKLSAgICAsIG1fdGVsZW1ldHJ5T25lU2hvdFRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5
VGltZXJGaXJlZCkKLSAgICAsIG1fdGVsZW1ldHJ5UmVwZWF0ZWRUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRlbGVtZXRyeVRpbWVy
RmlyZWQpCisgICAgLCBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeUlmTmVj
ZXNzYXJ5KQorICAgICwgbV90ZWxlbWV0cnlSZXBlYXRlZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3Mp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjcyLDYgKzI3Miw4IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWEKIAogICAgIGlmIChjb3Jl
U3RvcmUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSgpOworCisgICAgY29yZVN0b3JlKCkuaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNl
c3NhcnkoKTsKIH0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWZyZXNoRnJvbURpc2soKQpAQCAtNTI2LDcgKzUyOCwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBXZWJSZXNvdXJjCiAgICAgcmV0dXJuIEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0ZWxlbWV0
cnlUaW1lckZpcmVkKCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJm
b3JtRGFpbHlUYXNrcygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IGNvcmVTdG9yZSgpLmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CisK
KyAgICBzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSgpOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5SWZOZWNlc3NhcnkoKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CShyZXZpc2lvbiAyMTkyNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw5ICsxMzIsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFySW5NZW1vcnlEYXRhKCk7CiAgICAgdm9pZCBzeW5j
V2l0aEV4aXN0aW5nU3RhdGlzdGljc1N0b3JhZ2VJZk5lZWRlZCgpOwogICAgIHZvaWQgcmVmcmVz
aEZyb21EaXNrKCk7Ci0gICAgdm9pZCB0ZWxlbWV0cnlUaW1lckZpcmVkKCk7CisgICAgdm9pZCBz
dWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7
CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzRmlsZUNoYW5nZWRTaW5jZUxhc3RTeW5jKGNvbnN0IFN0
cmluZyYgcGF0aCk7CisgICAgdm9pZCBwZXJmb3JtRGFpbHlUYXNrcygpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjE5MjY3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ0MCw3ICs0NDAsNyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0Nv
CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7CisgICAgc3RvcmUtPnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oMF9zKTsKICAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUoMjRfaCk7CiAgICAgc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbCgxX2gpOwogICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoMV9o
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MjY3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLWNvbnN0IHVuc2lnbmVkIHN0
YXRpc3RpY3NNb2RlbFZlcnNpb24geyA1IH07Ci0KK2NvbnN0IHVuc2lnbmVkIHN0YXRpc3RpY3NN
b2RlbFZlcnNpb24geyA2IH07Citjb25zdCB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7
IDMwIH07CisgICAgCiBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkpOwpAQCAtODgsNyArODksMTEgQEAgc3RkOjp1
bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gUmVzb3VyY2VMbwogICAgIGVuY29kZXItPmVuY29kZU9i
amVjdHMoImJyb3dzaW5nU3RhdGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJlZ2lu
KCksIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29k
ZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKICAgICAgICAgb3JpZ2lu
LnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwotCisgICAgCisgICAgZW5jb2Rl
ci0+ZW5jb2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLmJlZ2lu
KCksIG1fb3BlcmF0aW5nRGF0ZXMuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVy
LCBXYWxsVGltZSBkYXRlKSB7CisgICAgICAgIGVuY29kZXJJbm5lci5lbmNvZGVEb3VibGUoImRh
dGUiLCBkYXRlLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgfSk7CisgICAgCiAg
ICAgcmV0dXJuIGVuY29kZXI7CiB9CiAKQEAgLTEyOCw2ICsxMzMsMTggQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYQogICAgICAgICB9CiAgICAgICAgIG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgV1RGTW92ZShz
dGF0aXN0aWNzKSk7CiAgICAgfQorCisgICAgc3VjY2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmpl
Y3RzKCJvcGVyYXRpbmdEYXRlcyIsIG1fb3BlcmF0aW5nRGF0ZXMsIFtdKEtleWVkRGVjb2RlciYg
ZGVjb2RlciwgV2FsbFRpbWUmIHdhbGxUaW1lKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgiZGF0ZSIsIHZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHdhbGxUaW1lID0gV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisK
KyAgICBpZiAoIXN1Y2NlZWRlZCkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24sIHRydWUpOwogfQpAQCAtMTM2LDcgKzE1Myw4IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwotICAg
IAorICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKKwogICAgIGZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcih7IH0sIHsgfSwgdHJ1ZSk7CiB9CiAKQEAgLTI5Myw3ICszMTEsNyBA
QCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkCiAgICAgaWYgKCFyZXNv
dXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiByZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgeworICAg
IGlmIChoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYykpIHsKICAgICAgICAg
Ly8gRHJvcCBwcml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQg
aXQuCiAgICAgICAgIC8vIFNldCB0aW1lc3RhbXAgdG8gMCBzbyB0aGF0IHN0YXRpc3RpY3MgbWVy
Z2Ugd2lsbCBrbm93CiAgICAgICAgIC8vIGl0IGhhcyBiZWVuIHJlc2V0IGFzIG9wcG9zZWQgdG8g
aXRzIGRlZmF1bHQgLTEuCkBAIC00MDMsNSArNDIxLDMzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpkYXRhUmUKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBtX2RhdGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSBmYWxzZTsKIH0KKwordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNz
YXJ5KCkKK3sKKyAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5n
RGF0ZXNXaW5kb3cpCisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVtb3ZlRmlyc3QoKTsKKwor
ICAgIGlmICghbV9vcGVyYXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYgKFdhbGxUaW1lOjpub3coKSAt
IG1fb3BlcmF0aW5nRGF0ZXMubGFzdCgpIDwgMjRfaCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKFdhbGxUaW1lOjpub3coKSk7Cit9CisgICAgCitib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Cit7CisgICAg
aWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KSB7Cisg
ICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSA8IG1fb3BlcmF0aW5nRGF0ZXMuZmlyc3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFu
IGV4cGlyZWQgc3RhdGlzdGljLCBjaGVjayB0aGUgdXNlcgorICAgIC8vIHNldHRpbmcgZm9yIGEg
dGlnaHRlciByZXN0cmljdGlvbiAobWFpbmx5IGZvciB0ZXN0aW5nKS4KKyAgICBpZiAobV90aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiBy
ZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5MjY3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC05OSwyMCArMTAwLDI0IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CiAgICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVS
ZW1vdmVkKCk7CiAKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNz
YXJ5KCk7CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBk
ZWZhdWx0OwogCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NF
eHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcDsKLQorICAgIERlcXVlPFdURjo6V2FsbFRpbWU+IG1fb3BlcmF0
aW5nRGF0ZXM7CisgICAgCiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZGF0YUFkZGVkSGFu
ZGxlcjsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wgY2xlYXJGaXJzdCk+IG1fc2hvdWxkUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2dyYW5k
ZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YUhhbmRsZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IG1fZGVsZXRlUGVyc2lzdGVudFN0b3JlSGFuZGxlcjsKICAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4gbV9maXJlVGVsZW1ldHJ5SGFuZGxlcjsKIAotICAgIFNlY29uZHMgbV90aW1lVG9MaXZl
VXNlckludGVyYWN0aW9uIHsgMjRfaCAqIDMwLiB9OworICAgIFNlY29uZHMgbV90aW1lVG9MaXZl
VXNlckludGVyYWN0aW9uIHsgMF9zIH07CiAgICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlIHsgMjRfaCB9OwogICAgIFNlY29uZHMgbV9ncmFuZGZhdGhlcmluZ1RpbWUg
eyAxX2ggfTsKICAgICBTZWNvbmRzIG1fbWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsIHsgMV9oIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314883</attachid>
            <date>2017-07-07 15:17:27 -0700</date>
            <delta_ts>2017-07-07 16:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707151726.patch</filename>
            <type>text/plain</type>
            <size>12186</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA3LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxp
bmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIEtleWVkRGVjb2RlciBzcGVjaWFsaXphdGlvbiBmb3IgRGVxdWUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVPYmplY3RzKToKKwogMjAxNy0wNy0wNyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBVlBsYXllciBjYW4gY29udGludWUgdG8g
YmUgYWN0aXZlIGFmdGVyIHJlbGVhc2VkIGJ5IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHJldmlzaW9u
IDIxOTI2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTI0LDcgKzEyNSwyOCBAQCBwdWJsaWM6
CiAgICAgICAgIGVuZEFycmF5KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotCisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdGVtcGxhdGUgPGNsYXNzPiBDb250YWluZXIs
IHR5cGVuYW1lIEY+CisgICAgYm9vbCBkZWNvZGVPYmplY3RzKGNvbnN0IFN0cmluZyYga2V5LCBD
b250YWluZXI8VD4mIG9iamVjdHMsIEYmJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGlmICgh
YmVnaW5BcnJheShrZXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOworICAgICAgICB3aGlsZSAoYmVnaW5BcnJheUVsZW1l
bnQoKSkgeworICAgICAgICAgICAgVCBlbGVtZW50OworICAgICAgICAgICAgaWYgKCFmdW5jdGlv
bigqdGhpcywgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9iamVjdHMu
YXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAgICAgZW5kQXJyYXlFbGVtZW50KCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVuZEFycmF5KCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAogcHJvdGVjdGVkOgogICAgIEtleWVkRGVjb2RlcigpCiAg
ICAgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5MjY3KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMDctMDcgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gVXNlIGEg
cm9sbGluZyAzMC1kYXkgdXB0aW1lIGZvciBwcm9jZXNzaW5nIHN0YXRpc3RpY3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDIzNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzMxNjQzODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldLV2Vic2l0ZURhdGFTdG9yZTo6X3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKTogSW5pdGlhbGl6ZSB0aW1lLXRvLWxp
dmUgdG8gemVybyBieSBkZWZhdWx0LgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZyb21EYXRhKTogV3JpdGUgb3V0IHZlY3Rv
cgorICAgICAgICBvZiBvcGVyYXRpbmcgZGF0ZXMuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rlcik6IFJlYWQgaW4gdmVjdG9y
IG9mCisgICAgICAgIG9wZXJhdGluZyBkYXRlcy4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24pOiBDaGVjayBu
ZXcKKyAgICAgICAgY29udmVuaWVuY2UgbWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1hcmtUb2RheUFzT3BlcmF0aW5nRGF0ZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3Rp
Y3NFeHBpcmVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKTogV2hlbiByZWFkaW5nCisg
ICAgICAgIGEgbmV3IGRhdGEgZmlsZSwgdXBkYXRlIHRoZSBjdXJyZW50IG9wZXJhdGluZyBkYXRl
IChpZiBuZWVkZWQpLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmhhbmRsZURhaWx5VGFza3MpOiBSb2xsIHVwdGltZSBkYXRlcyBhcworICAgICAgICBu
ZWVkZWQsIHRoZW4gaGFuZGxlIHRlbGVtZXRyeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIwMTctMDctMDcgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTkyMzgsIHIyMTkyMzksIGFuZCByMjE5MjQxLgpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAJKHJldmlzaW9uIDIxOTI2NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5
NCw4IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3UKICAgICA6IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKCkpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1
ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3N0YXRp
c3RpY3NTdG9yYWdlUGF0aChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQotICAgICwg
bV90ZWxlbWV0cnlPbmVTaG90VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0ZWxlbWV0cnlUaW1lckZpcmVkKQotICAgICwgbV90ZWxl
bWV0cnlSZXBlYXRlZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5VGltZXJGaXJlZCkKKyAgICAsIG1fdGVsZW1ldHJ5
T25lU2hvdFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5SWZOZWNlc3NhcnkpCisgICAgLCBtX3RlbGVtZXRy
eVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0yNzIsNiArMjcyLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlYQogCiAgICAgaWYgKGNvcmVTdG9yZSgpLmlzRW1wdHkoKSkKICAgICAg
ICAgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CisKKyAgICBjb3JlU3RvcmUoKS5p
bmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogICAgIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzaygpCkBAIC01MjYs
NyArNTI4LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IFdlYlJlc291cmMKICAg
ICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRlbGVtZXRyeVRpbWVyRmlyZWQoKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKCkKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgY29yZVN0b3JlKCkuaW5jbHVkZVRvZGF5
QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKKworICAgIHN1Ym1pdFRlbGVtZXRyeUlmTmVj
ZXNzYXJ5KCk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdWJt
aXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIxOTI2NykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDkgKzEzMiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJJbk1lbW9yeURhdGEoKTsKICAgICB2b2lkIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3Rv
cmFnZUlmTmVlZGVkKCk7CiAgICAgdm9pZCByZWZyZXNoRnJvbURpc2soKTsKLSAgICB2b2lkIHRl
bGVtZXRyeVRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5
KCk7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoKTsKICAgICBib29sIGhhc1N0YXRpc3RpY3NG
aWxlQ2hhbmdlZFNpbmNlTGFzdFN5bmMoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIHBl
cmZvcm1EYWlseVRhc2tzKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lz
dGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lv
biAyMTkyNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIC0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ28KICAgICBpZiAoIXN0b3JlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigyNF9o
ICogMzAuKTsKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigwX3MpOwog
ICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKICAgICBz
dG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7CiAgICAg
c3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZSgxX2gpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMTkyNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotY29uc3QgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDUg
fTsKLQorY29uc3QgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDYgfTsKK2NvbnN0
IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93IHsgMzAgfTsKKyAgICAKIFJlZjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKSk7CkBAIC04OCw3ICs4OSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBS
ZXNvdXJjZUxvCiAgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNz
IiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBTdGF0aXN0aWNz
VmFsdWUmIG9yaWdpbikgewogICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5l
cik7CiAgICAgfSk7Ci0KKyAgICAKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJvcGVyYXRp
bmdEYXRlcyIsIG1fb3BlcmF0aW5nRGF0ZXMuYmVnaW4oKSwgbV9vcGVyYXRpbmdEYXRlcy5lbmQo
KSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIFdhbGxUaW1lIGRhdGUpIHsKKyAgICAg
ICAgZW5jb2RlcklubmVyLmVuY29kZURvdWJsZSgiZGF0ZSIsIGRhdGUuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpKTsKKyAgICB9KTsKKyAgICAKICAgICByZXR1cm4gZW5jb2RlcjsKIH0KIApA
QCAtMTI4LDYgKzEzMywxOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVh
ZERhCiAgICAgICAgIH0KICAgICAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2V0KHN0YXRp
c3RpY3MuaGlnaExldmVsRG9tYWluLCBXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKICAgICB9CisKKyAg
ICBzdWNjZWVkZWQgPSBkZWNvZGVyLmRlY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9v
cGVyYXRpbmdEYXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBXYWxsVGltZSYgd2FsbFRp
bWUpIHsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RG91YmxlKCJkYXRlIiwgdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgd2FsbFRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModmFsdWUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKworICAgIGlmICghc3VjY2VlZGVkKQorICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KHsgfSwgcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdHJ1
ZSk7CiB9CkBAIC0xMzYsNyArMTUzLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFySQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7Ci0gICAgCisgICAgbV9vcGVyYXRpbmdEYXRlcy5j
bGVhcigpOworCiAgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgeyB9
LCB0cnVlKTsKIH0KIApAQCAtMjkzLDcgKzMxMSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpoYXNIYWQKICAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRl
cmFjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKFdhbGxUaW1lOjpub3co
KSA+IHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV90
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgaWYgKGhhc1N0YXRpc3RpY3NFeHBpcmVk
KHJlc291cmNlU3RhdGlzdGljKSkgewogICAgICAgICAvLyBEcm9wIHByaXZhY3kgc2Vuc2l0aXZl
IGRhdGEgYmVjYXVzZSB3ZSBubyBsb25nZXIgbmVlZCBpdC4KICAgICAgICAgLy8gU2V0IHRpbWVz
dGFtcCB0byAwIHNvIHRoYXQgc3RhdGlzdGljcyBtZXJnZSB3aWxsIGtub3cKICAgICAgICAgLy8g
aXQgaGFzIGJlZW4gcmVzZXQgYXMgb3Bwb3NlZCB0byBpdHMgZGVmYXVsdCAtMS4KQEAgLTQwMyw1
ICs0MjEsMzMgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRhdGFSZQogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fZGF0YVJlY29yZHNSZW1vdmFsUGVu
ZGluZyA9IGZhbHNlOwogfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKQoreworICAgIHdoaWxlIChtX29w
ZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvdykKKyAgICAgICAgbV9v
cGVyYXRpbmdEYXRlcy5yZW1vdmVGaXJzdCgpOworCisgICAgaWYgKCFtX29wZXJhdGluZ0RhdGVz
LmlzRW1wdHkoKSAmJiAoV2FsbFRpbWU6Om5vdygpIC0gbV9vcGVyYXRpbmdEYXRlcy5sYXN0KCkg
PCAyNF9oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQo
V2FsbFRpbWU6Om5vdygpKTsKK30KKyAgICAKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBy
ZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKK3sKKyAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXpl
KCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKKyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlz
dGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJz
dCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gSWYgd2UgZG9u
J3QgbWVldCB0aGUgcmVhbCBjcml0ZXJpYSBmb3IgYW4gZXhwaXJlZCBzdGF0aXN0aWMsIGNoZWNr
IHRoZSB1c2VyCisgICAgLy8gc2V0dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlu
bHkgZm9yIHRlc3RpbmcpLgorICAgIGlmIChtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pIHsK
KyAgICAgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
ICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTky
NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTk5LDIwICsxMDAsMjQgQEAgcHVibGljOgogICAgIHZvaWQgZGF0YVJlY29yZHNCZWluZ1JlbW92
ZWQoKTsKICAgICB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsKIAorICAgIHZvaWQgaW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKKwogcHJpdmF0ZToKICAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
IGNvbnN0OworICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwotCisg
ICAgRGVxdWU8V1RGOjpXYWxsVGltZT4gbV9vcGVyYXRpbmdEYXRlczsKKyAgICAKICAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgYm9vbCBj
bGVhckZpcnN0KT4gbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXI7CiAg
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRh
SGFuZGxlcjsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9kZWxldGVQZXJzaXN0ZW50U3Rv
cmVIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVUZWxlbWV0cnlIYW5k
bGVyOwogCi0gICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAyNF9oICog
MzAuIH07CisgICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAwX3MgfTsK
ICAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgeyAyNF9oIH07CiAg
ICAgU2Vjb25kcyBtX2dyYW5kZmF0aGVyaW5nVGltZSB7IDFfaCB9OwogICAgIFNlY29uZHMgbV9t
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwgeyAxX2ggfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314887</attachid>
            <date>2017-07-07 16:00:55 -0700</date>
            <delta_ts>2017-07-07 21:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174235-20170707160054.patch</filename>
            <type>text/plain</type>
            <size>13699</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFVzZSBhIHJvbGxpbmcgMzAtZGF5IHVw
dGltZSBmb3IgcHJvY2Vzc2luZyBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
MTY0MzgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGlmeSBEZXF1ZSB0byBhbGxvdyBpdCB0byBiZSB1c2VkIGluIGEgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gaW4gS2V5ZWREZWNvZGVyLgorCisgICAgICAgICogd3RmL0RlcXVlLmg6CisKIDIw
MTctMDctMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkyMzgsIHIyMTkyMzksIGFuZCByMjE5MjQx
LgpJbmRleDogU291cmNlL1dURi93dGYvRGVxdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9EZXF1ZS5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9EZXF1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2kKIGNsYXNzIERlcXVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOworCiAgICAgdHlwZWRlZiBE
ZXF1ZUl0ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5PiBpdGVyYXRvcjsKICAgICB0eXBlZGVmIERl
cXVlQ29uc3RJdGVyYXRvcjxULCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAg
dHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNy0wNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBVc2UgYSByb2xs
aW5nIDMwLWRheSB1cHRpbWUgZm9yIHByb2Nlc3Npbmcgc3RhdGlzdGljcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zMzE2NDM4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBLZXllZERlY29kZXIgc3BlY2lhbGl6YXRpb24gZm9yIERlcXVl
LgorCisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlT2JqZWN0cyk6CisKIDIwMTctMDctMDcgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBDYWNoZV0gSWdub3JlIGZhbGxi
YWNrIGVudHJpZXMgd2hvc2UgbmFtZXNwYWNlIGlzIG5vdCBwcmVmaXhlZCB3aXRoIG1hbmlmZXN0
IHBhdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAkocmV2aXNpb24g
MjE5MjcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEwNCwxNSArMTA1LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBGPgotICAgIGJvb2wgZGVjb2RlT2JqZWN0cyhjb25zdCBTdHJpbmcmIGtleSwgVmVj
dG9yPFQ+JiBvYmplY3RzLCBGJiYgZnVuY3Rpb24pCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
dGFpbmVyVHlwZSwgdHlwZW5hbWUgRj4KKyAgICBib29sIGRlY29kZU9iamVjdHMoY29uc3QgU3Ry
aW5nJiBrZXksIENvbnRhaW5lclR5cGUmIG9iamVjdHMsIEYmJiBmdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIGlmICghYmVnaW5BcnJheShrZXkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgd2hpbGUgKGJlZ2luQXJyYXlF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgIFQgZWxlbWVudDsKKyAgICAgICAgICAgIHR5cGVuYW1l
IENvbnRhaW5lclR5cGU6OlZhbHVlVHlwZSBlbGVtZW50OwogICAgICAgICAgICAgaWYgKCFmdW5j
dGlvbigqdGhpcywgZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI3MikK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDE3LTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXSzJdIFVzZSBhIHJvbGxpbmcgMzAtZGF5IHVwdGltZSBmb3IgcHJvY2Vzc2luZyBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQyMzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMTY0MzgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXS1dlYnNpdGVEYXRh
U3RvcmU6Ol9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6IElu
aXRpYWxpemUgdGltZS10by1saXZlIHRvIHplcm8gYnkgZGVmYXVsdC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0
YSk6IFdyaXRlIG91dCB2ZWN0b3IKKyAgICAgICAgb2Ygb3BlcmF0aW5nIGRhdGVzLgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29k
ZXIpOiBSZWFkIGluIHZlY3RvciBvZgorICAgICAgICBvcGVyYXRpbmcgZGF0ZXMuCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKTogQ2hlY2sgbmV3CisgICAgICAgIGNvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrVG9kYXlBc09wZXJh
dGluZ0RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRl
ZCk6IFdoZW4gcmVhZGluZworICAgICAgICBhIG5ldyBkYXRhIGZpbGUsIHVwZGF0ZSB0aGUgY3Vy
cmVudCBvcGVyYXRpbmcgZGF0ZSAoaWYgbmVlZGVkKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVEYWlseVRhc2tzKTogUm9sbCB1cHRpbWUg
ZGF0ZXMgYXMKKyAgICAgICAgbmVlZGVkLCB0aGVuIGhhbmRsZSB0ZWxlbWV0cnkuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorCiAyMDE3LTA3
LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1MgRG5EXSBGb3IgY3Jvc3MtYXBwIGRyYWdzLCAnZHJvcCcgZXZlbnQgaGFuZGxlcnMgYXJlIG5l
dmVyIGludm9rZWQgaWYgZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgaXMgbm90IHNldCB3aGlsZSBk
cmFnZ2luZwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBAIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6V2ViUmVzb3UKICAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3N0YXRpc3Rp
Y3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
IFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6
OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBtX3N0YXRpc3RpY3NTdG9yYWdlUGF0aChyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KQotICAgICwgbV90ZWxlbWV0cnlPbmVTaG90VGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0ZWxl
bWV0cnlUaW1lckZpcmVkKQotICAgICwgbV90ZWxlbWV0cnlSZXBlYXRlZFRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5
VGltZXJGaXJlZCkKKyAgICAsIG1fdGVsZW1ldHJ5T25lU2hvdFRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5
SWZOZWNlc3NhcnkpCisgICAgLCBtX3RlbGVtZXRyeVJlcGVhdGVkVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlU
YXNrcykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yNzIsNiArMjcy
LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYQogCiAgICAgaWYg
KGNvcmVTdG9yZSgpLmlzRW1wdHkoKSkKICAgICAgICAgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNp
dGVEYXRhKCk7CisKKyAgICBjb3JlU3RvcmUoKS5pbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJ
Zk5lY2Vzc2FyeSgpOwogfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlZnJlc2hGcm9tRGlzaygpCkBAIC01MjYsNyArNTI4LDE2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxLZXllZERlY29kZXI+IFdlYlJlc291cmMKICAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZm
ZXIuc2l6ZSgpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRl
bGVtZXRyeVRpbWVyRmlyZWQoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnBlcmZvcm1EYWlseVRhc2tzKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgY29yZVN0b3JlKCkuaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3Nhcnko
KTsKKworICAgIHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnlJZk5lY2Vzc2FyeSgpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDkgKzEz
MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJJbk1lbW9yeURhdGEoKTsKICAgICB2b2lk
IHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZWZyZXNoRnJvbURpc2soKTsKLSAgICB2b2lkIHRlbGVtZXRyeVRpbWVyRmlyZWQoKTsKKyAgICB2
b2lkIHN1Ym1pdFRlbGVtZXRyeUlmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0
cnkoKTsKICAgICBib29sIGhhc1N0YXRpc3RpY3NGaWxlQ2hhbmdlZFNpbmNlTGFzdFN5bmMoY29u
c3QgU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIHBlcmZvcm1EYWlseVRhc2tzKCk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00NDAsNyArNDQwLDcgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jl
c2V0VG9DbwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5z
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDBfcyk7CiAgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwogICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKICAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdU
aW1lKDFfaCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9u
IDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1jb25zdCB1bnNp
Z25lZCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uIHsgNSB9OwotCitjb25zdCB1bnNpZ25lZCBzdGF0
aXN0aWNzTW9kZWxWZXJzaW9uIHsgNiB9OworY29uc3QgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNX
aW5kb3cgeyAzMCB9OworICAgIAogUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpKTsKQEAgLTg5LDYgKzkwLDEwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IFJlc291cmNlTG8KICAgICAgICAgb3JpZ2lu
LnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIpOwogICAgIH0pOwogCisgICAgZW5jb2Rlci0+ZW5j
b2RlT2JqZWN0cygib3BlcmF0aW5nRGF0ZXMiLCBtX29wZXJhdGluZ0RhdGVzLmJlZ2luKCksIG1f
b3BlcmF0aW5nRGF0ZXMuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBXYWxs
VGltZSBkYXRlKSB7CisgICAgICAgIGVuY29kZXJJbm5lci5lbmNvZGVEb3VibGUoImRhdGUiLCBk
YXRlLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgfSk7CisgICAgCiAgICAgcmV0
dXJuIGVuY29kZXI7CiB9CiAKQEAgLTEyOCw2ICsxMzMsMTggQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYQogICAgICAgICB9CiAgICAgICAgIG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgV1RGTW92ZShzdGF0aXN0
aWNzKSk7CiAgICAgfQorCisgICAgc3VjY2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKCJv
cGVyYXRpbmdEYXRlcyIsIG1fb3BlcmF0aW5nRGF0ZXMsIFtdKEtleWVkRGVjb2RlciYgZGVjb2Rl
ciwgV2FsbFRpbWUmIHdhbGxUaW1lKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgiZGF0ZSIsIHZhbHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHdhbGxUaW1lID0gV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisKKyAgICBp
ZiAoIXN1Y2NlZWRlZCkKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24sIHRydWUpOwogfQpAQCAtMTM2LDcgKzE1Myw4IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOwotICAgIAorICAg
IG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKKwogICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcih7IH0sIHsgfSwgdHJ1ZSk7CiB9CiAKQEAgLTI5Myw3ICszMTEsNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkCiAgICAgaWYgKCFyZXNvdXJjZVN0
YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChXYWxsVGltZTo6bm93KCkgPiByZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgeworICAgIGlmICho
YXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYykpIHsKICAgICAgICAgLy8gRHJv
cCBwcml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCiAg
ICAgICAgIC8vIFNldCB0aW1lc3RhbXAgdG8gMCBzbyB0aGF0IHN0YXRpc3RpY3MgbWVyZ2Ugd2ls
bCBrbm93CiAgICAgICAgIC8vIGl0IGhhcyBiZWVuIHJlc2V0IGFzIG9wcG9zZWQgdG8gaXRzIGRl
ZmF1bHQgLTEuCkBAIC00MDMsNSArNDIxLDMzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpkYXRhUmUKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2Rh
dGFSZWNvcmRzUmVtb3ZhbFBlbmRpbmcgPSBmYWxzZTsKIH0KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkK
K3sKKyAgICBpZiAoIW1fb3BlcmF0aW5nRGF0ZXMuaXNFbXB0eSgpICYmIChXYWxsVGltZTo6bm93
KCkgLSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSA8IDI0X2gpKQorICAgICAgICByZXR1cm47CisK
KyAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5k
b3cpCisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVtb3ZlRmlyc3QoKTsKKworICAgIG1fb3Bl
cmF0aW5nRGF0ZXMuYXBwZW5kKFdhbGxUaW1lOjpub3coKSk7Cit9CisgICAgCitib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Cit7CisgICAgaWYgKG1f
b3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KSB7CisgICAgICAg
IGlmIChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8IG1f
b3BlcmF0aW5nRGF0ZXMuZmlyc3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFuIGV4cGly
ZWQgc3RhdGlzdGljLCBjaGVjayB0aGUgdXNlcgorICAgIC8vIHNldHRpbmcgZm9yIGEgdGlnaHRl
ciByZXN0cmljdGlvbiAobWFpbmx5IGZvciB0ZXN0aW5nKS4KKyAgICBpZiAobV90aW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiByZXNvdXJj
ZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC05OSwxMiArMTAwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRh
dGFSZWNvcmRzQmVpbmdSZW1vdmVkKCk7CiAgICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVk
KCk7CiAKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7
CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkgPSBkZWZhdWx0
OwogCiAgICAgYm9vbCBzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNl
U3RhdGlzdGljc01hcDsKKyAgICBEZXF1ZTxXVEY6OldhbGxUaW1lPiBtX29wZXJhdGluZ0RhdGVz
OwogCiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZGF0YUFkZGVkSGFuZGxlcjsKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGJvb2wgY2xlYXJGaXJzdCk+IG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFp
bnNIYW5kbGVyOwpAQCAtMTEyLDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+IG1fZGVsZXRlUGVyc2lzdGVudFN0b3JlSGFuZGxlcjsKICAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4gbV9maXJlVGVsZW1ldHJ5SGFuZGxlcjsKIAotICAgIFNlY29uZHMgbV90aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uIHsgMjRfaCAqIDMwLiB9OworICAgIFNlY29uZHMgbV90aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uIHsgMF9zIH07CiAgICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlIHsgMjRfaCB9OwogICAgIFNlY29uZHMgbV9ncmFuZGZhdGhlcmlu
Z1RpbWUgeyAxX2ggfTsKICAgICBTZWNvbmRzIG1fbWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsIHsgMV9oIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314913</attachid>
            <date>2017-07-07 21:24:56 -0700</date>
            <delta_ts>2017-07-07 22:09:59 -0700</delta_ts>
            <desc>Follow-up fix</desc>
            <filename>bug-174235-20170707212455.patch</filename>
            <type>text/plain</type>
            <size>6541</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWE1NGFkOTkyOTk0Yjgw
NTA3ODJjZmU3NzllYWI1YzQzMzRlODMwYS4uZTljMDAxODc4YTFiNjYwZGFjZjEzZWUwNTdkNTZi
ZmEyMmQyMjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTA3LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gVXNlIGEgcm9sbGlu
ZyAzMC1kYXkgdXB0aW1lIGZvciBwcm9jZXNzaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDIzNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzMxNjQzODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9sbG93LXVwIGZpeCBmb3IgcjIxOTI3NCBiZWNhdXNlIGl0IGNhdXNlZCB0
aGlzIHRlc3QgdG8gdGltZSBvdXQ6CisgICAgICAgIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRoLXVzZXItaW50ZXJhY3Rpb24t
dGltZW91dC5odG1sCisKKyAgICAgICAgVGhlIHRlc3Qgc2V0cyBUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uIHRvIDAgc28gb3VyIGltcGxlbWVudGF0aW9uIGNhbm5vdCB1c2UKKyAgICAgICAgMCBh
cyBtYWdpYyB2YWx1ZSB0byBzZWUgaWYgaXQgd2FzIHNldC4gSW5zdGVhZCwgdXNlIHN0ZDo6b3B0
aW9uYWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdl
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGlj
c0V4cGlyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxNy0wNy0wNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBVc2UgYSByb2xs
aW5nIDMwLWRheSB1cHRpbWUgZm9yIHByb2Nlc3Npbmcgc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCA0OTJhZjJiNzYzNmRjZjBmNDRlNzRkNzU4MmQxNTEwMTIyYmQyZmQ2Li4xZjQ1ZDcy
NTEwMDg2ZGQxZWUyYjIyZmQ0MGVhYTlhMzc2MmJjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAt
NDQwLDcgKzQ0MCw4IEBAIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3Rv
cmUtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oMF9zKTsKKyAgICAvLyBGSVhNRTogVGhl
c2UgbmVlZHMgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgZGF0YSBtZW1iZXIgdmFsdWVzIGluIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MsIHdoaWNoIGlzIGZyYWdpbGUuCisgICAgc3RvcmUtPnNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oc3RkOjpudWxsb3B0KTsKICAgICBzdG9yZS0+c2V0VGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoMjRfaCk7CiAgICAgc3RvcmUtPnNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOwogICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhl
cmluZ1RpbWUoMV9oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDFhNzM2
MDE2MWJlYzQ2ZTU5OTAyOTVkNWJiYTU5ODg2MjUwMGMzZWEuLjcyNmU2NzkyMjljNTJjMGRjN2Ez
OWE5YTk1YmM2NzAyM2UyOWY5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApA
QCAtMjc1LDkgKzI3NSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yCiAgICAgICAgIGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZvckNv
b2tpZVBhcnRpdGlvbmluZyA9IHRydWU7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vjb25kcykKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykKIHsKLSAgICBBU1NFUlQoc2Vjb25k
cyA+PSAwX3MpOworICAgIEFTU0VSVCghc2Vjb25kcyB8fCBzZWNvbmRzLnZhbHVlKCkgPj0gMF9z
KTsKICAgICBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBzZWNvbmRzOwogfQogCkBAIC00
NDMsNyArNDQzLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRp
c3RpY3NFeHBpcmVkKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3QKICAgICAvLyBJZiB3ZSBkb24n
dCBtZWV0IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sg
dGhlIHVzZXIKICAgICAvLyBzZXR0aW5nIGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rpb24gKG1haW5s
eSBmb3IgdGVzdGluZykuCiAgICAgaWYgKG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgewot
ICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gcmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgKyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pCisgICAg
ICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiByZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCA2MmI4ZmVhNTBlNjA3MjEzMjMwZmFlMDk5NDExNGE5MDYzZTAxMzNkLi5i
MDAyYTU2NzdlZTVkZjkxNDFlMTZhNjgzMDk3MjAxNTU5NmU5ZDFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIo
KTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CisgICAg
dm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4p
OwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CiAg
ICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7
CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CkBAIC0xMTcsNyArMTE3
LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9kZWxldGVQZXJzaXN0
ZW50U3RvcmVIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVUZWxlbWV0
cnlIYW5kbGVyOwogCi0gICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24geyAw
X3MgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbjsKICAgICBTZWNvbmRzIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgeyAyNF9o
IH07CiAgICAgU2Vjb25kcyBtX2dyYW5kZmF0aGVyaW5nVGltZSB7IDFfaCB9OwogICAgIFNlY29u
ZHMgbV9taW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwgeyAxX2ggfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggNTgzMjMxZDE0ZDIzNmUyNjFjMzlmNTAwZTBjMjk4ZjJlYmVh
YzZlMy4uZGRkYzFjNDFhODZkNjZmYzdlZmYzYzA3YjMzYTE1NmZhODU1N2UyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTc0Nyw3ICs3NDcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5
cwogICAgIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CiB9CiAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29u
ZHMgc2Vjb25kcykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykKIHsK
ICAgICBjb3JlU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGVmYjBjYWFkYjRjZWJiZjFjMGU4Mjc2M2Q0ODM3OTgw
ODRiNDE3NTIuLmU2YmI1MGY2OTU3MzE1NWQxMjdlYTJiZDZiMzlhMDY0YTFjYjBhZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKICAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7
CiAKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CisgICAg
dm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4p
OwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CiAg
ICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7
CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>