<?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>182197</bug_id>
          
          <creation_ts>2018-01-26 17:05:53 -0800</creation_ts>
          <short_desc>Add telemetry to track storage access API adoptions</short_desc>
          <delta_ts>2018-01-30 15:16:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>krollin</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1393735</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-26 17:05:53 -0800</bug_when>
    <thetext>Update WebKit to capture counts of cross-origin access due to user interaction versus the new Storage Access API.

Also add internal logging when Storage Access is invoked to assist in debugging website issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393748</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-26 17:30:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/35803309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393749</commentid>
    <comment_count>2</comment_count>
      <attachid>332440</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-26 17:32:44 -0800</bug_when>
    <thetext>Created attachment 332440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393750</commentid>
    <comment_count>3</comment_count>
      <attachid>332440</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-26 17:33:01 -0800</bug_when>
    <thetext>Comment on attachment 332440
Patch

WIP for EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393752</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-26 17:33:56 -0800</bug_when>
    <thetext>Attachment 332440 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:196:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393950</commentid>
    <comment_count>5</comment_count>
      <attachid>332501</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-28 17:14:20 -0800</bug_when>
    <thetext>Created attachment 332501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394115</commentid>
    <comment_count>6</comment_count>
      <attachid>332501</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-29 09:27:44 -0800</bug_when>
    <thetext>Comment on attachment 332501
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:135
&gt; +void ResourceLoadObserver::setTimeToLivePartitionFree(const Seconds&amp; value)

No need for const &amp;, this is just a double.

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:86
&gt; +    unsigned accessedAsFirstPartyDueToUserInteraction { 0 };

The variable name does not really make it clear what the count is for. maybe timesAccessedAsFirstPartyDueToUserInteraction? (if this is what you meant).

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:87
&gt; +    unsigned accessedAsFirstPartyDueToStorageAccessAPI { 0 };

ditto.

&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:191
&gt; +    double cookiePartitionTimeToLive { 0 };

Why doesn&apos;t this use Seconds type?

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:165
&gt; +    WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {

Could probably use auto&amp; t.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:168
&gt; +    WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToStorageAccessAPIGetter = [] (const PrevalentResourceTelemetry&amp; t) {

Could probably use auto&amp; t.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:284
&gt; +    if (timeToLiveUserInteraction &lt; 0_s || timeToLiveUserInteraction &lt;= 24_h * 30)

So the value has to be over 30 days? Is this really what you meant? Or did you mean that it should be within 30 days?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394118</commentid>
    <comment_count>7</comment_count>
      <attachid>332501</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 09:43:05 -0800</bug_when>
    <thetext>Comment on attachment 332501
Patch

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

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:135
&gt;&gt; +void ResourceLoadObserver::setTimeToLivePartitionFree(const Seconds&amp; value)
&gt; 
&gt; No need for const &amp;, this is just a double.

Will fix.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.h:86
&gt;&gt; +    unsigned accessedAsFirstPartyDueToUserInteraction { 0 };
&gt; 
&gt; The variable name does not really make it clear what the count is for. maybe timesAccessedAsFirstPartyDueToUserInteraction? (if this is what you meant).

Yes, that&apos;s a reasonable choice for the name. I&apos;ll switch to it.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.h:87
&gt;&gt; +    unsigned accessedAsFirstPartyDueToStorageAccessAPI { 0 };
&gt; 
&gt; ditto.

Ditto!

&gt;&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:191
&gt;&gt; +    double cookiePartitionTimeToLive { 0 };
&gt; 
&gt; Why doesn&apos;t this use Seconds type?

I wasn&apos;t sure if it would serialize easily over IPC between UI and WebContent processes. I&apos;ll try using Seconds.

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:165
&gt;&gt; +    WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {
&gt; 
&gt; Could probably use auto&amp; t.

Will we get a WTF::Function here? I though we wanted to be careful about specifically getting our function object because of threading issues with the std::function implementation?

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:284
&gt;&gt; +    if (timeToLiveUserInteraction &lt; 0_s || timeToLiveUserInteraction &lt;= 24_h * 30)
&gt; 
&gt; So the value has to be over 30 days? Is this really what you meant? Or did you mean that it should be within 30 days?

Oh duh. Yes, I meant the opposite. I wanted to clamp it to positive values less than (or equal to) 30 days. Thanks for catching this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394121</commentid>
    <comment_count>8</comment_count>
      <attachid>332501</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-29 09:45:34 -0800</bug_when>
    <thetext>Comment on attachment 332501
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:165
&gt;&gt;&gt; +    WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {
&gt;&gt; 
&gt;&gt; Could probably use auto&amp; t.
&gt; 
&gt; Will we get a WTF::Function here? I though we wanted to be careful about specifically getting our function object because of threading issues with the std::function implementation?

I suggested
WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (auto&amp; t) {
not
auto numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394122</commentid>
    <comment_count>9</comment_count>
      <attachid>332501</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-29 09:45:51 -0800</bug_when>
    <thetext>Comment on attachment 332501
Patch

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

&gt;&gt;&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:191
&gt;&gt;&gt; +    double cookiePartitionTimeToLive { 0 };
&gt;&gt; 
&gt;&gt; Why doesn&apos;t this use Seconds type?
&gt; 
&gt; I wasn&apos;t sure if it would serialize easily over IPC between UI and WebContent processes. I&apos;ll try using Seconds.

Should serialize fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394131</commentid>
    <comment_count>10</comment_count>
      <attachid>332501</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 10:09:01 -0800</bug_when>
    <thetext>Comment on attachment 332501
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:165
&gt;&gt;&gt;&gt; +    WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {
&gt;&gt;&gt; 
&gt;&gt;&gt; Could probably use auto&amp; t.
&gt;&gt; 
&gt;&gt; Will we get a WTF::Function here? I though we wanted to be careful about specifically getting our function object because of threading issues with the std::function implementation?
&gt; 
&gt; I suggested
&gt; WTF::Function&lt;unsigned(const PrevalentResourceTelemetry&amp; telemetry)&gt; numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (auto&amp; t) {
&gt; not
&gt; auto numberOfTimesAccessedAsFirstPartyDueToUserInteractionGetter = [] (const PrevalentResourceTelemetry&amp; t) {

Ah! Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394139</commentid>
    <comment_count>11</comment_count>
      <attachid>332551</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 10:23:10 -0800</bug_when>
    <thetext>Created attachment 332551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394204</commentid>
    <comment_count>12</comment_count>
      <attachid>332551</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-29 12:01:11 -0800</bug_when>
    <thetext>Comment on attachment 332551
Patch

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

r=me with comments.

&gt; Source/WebCore/loader/ResourceLoadObserver.h:88
&gt; +    Seconds timeToLiveCookiePartitionFree { 24_h };

Missing m_ prefix.

&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:191
&gt; +    Seconds cookiePartitionTimeToLive { 0 };

Seconds default-initializes to zero, you don&apos;t need { 0 } here.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:178
&gt; +    unsigned topNumberOfTimesAccessedAsFirstPartyDueToStorageAccessAP = median(sortedPrevalentResourcesWithoutUserInteraction, 0, numberOfResourcesFromTheTop - 1, numberOfTimesAccessedAsFirstPartyDueToStorageAccessAPIGetter);

typo: topNumberOfTimesAccessedAsFirstPartyDueToStorageAccessAP

missing I at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394224</commentid>
    <comment_count>13</comment_count>
      <attachid>332551</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 12:55:47 -0800</bug_when>
    <thetext>Comment on attachment 332551
Patch

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

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.h:88
&gt;&gt; +    Seconds timeToLiveCookiePartitionFree { 24_h };
&gt; 
&gt; Missing m_ prefix.

Done.

&gt;&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:191
&gt;&gt; +    Seconds cookiePartitionTimeToLive { 0 };
&gt; 
&gt; Seconds default-initializes to zero, you don&apos;t need { 0 } here.

Done!

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp:178
&gt;&gt; +    unsigned topNumberOfTimesAccessedAsFirstPartyDueToStorageAccessAP = median(sortedPrevalentResourcesWithoutUserInteraction, 0, numberOfResourcesFromTheTop - 1, numberOfTimesAccessedAsFirstPartyDueToStorageAccessAPIGetter);
&gt; 
&gt; typo: topNumberOfTimesAccessedAsFirstPartyDueToStorageAccessAP
&gt; 
&gt; missing I at the end.

Doh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394253</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 14:00:59 -0800</bug_when>
    <thetext>Committed r227755: &lt;https://trac.webkit.org/changeset/227755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394254</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 14:01:27 -0800</bug_when>
    <thetext>Reopened for part 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394357</commentid>
    <comment_count>16</comment_count>
      <attachid>332610</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-29 17:36:46 -0800</bug_when>
    <thetext>Created attachment 332610
Patch (Part 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394555</commentid>
    <comment_count>17</comment_count>
      <attachid>332656</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 08:22:22 -0800</bug_when>
    <thetext>Created attachment 332656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394591</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 09:44:43 -0800</bug_when>
    <thetext>Committed r227790: &lt;https://trac.webkit.org/changeset/227790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394592</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 09:45:25 -0800</bug_when>
    <thetext>Reopening for Part 2 (Storage Access API)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394634</commentid>
    <comment_count>20</comment_count>
      <attachid>332672</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 11:19:34 -0800</bug_when>
    <thetext>Created attachment 332672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394684</commentid>
    <comment_count>21</comment_count>
      <attachid>332672</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-30 12:40:42 -0800</bug_when>
    <thetext>Comment on attachment 332672
Patch

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

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:205
&gt; +bool NetworkStorageSession::hasStorageAccessForFrame(const ResourceRequest&amp; request, std::optional&lt;uint64_t&gt; frameID, std::optional&lt;uint64_t&gt; pageID) const

Why does this take std::optionals? It looks like the call site always has valid ids (unless I am mistaken), and it looks like this method would only ever return true if those ids are provided.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:725
&gt; +    bool hasStorageAccessForFrame = networkStorageSession-&gt;hasStorageAccessForFrame(originalRequest(), frameID(), pageID());

frameID() / pageID() always return a uint64_t, right? If so, why does hasStorageAccessForFrame take std::optionals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394687</commentid>
    <comment_count>22</comment_count>
      <attachid>332672</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 12:43:53 -0800</bug_when>
    <thetext>Comment on attachment 332672
Patch

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

&gt;&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:205
&gt;&gt; +bool NetworkStorageSession::hasStorageAccessForFrame(const ResourceRequest&amp; request, std::optional&lt;uint64_t&gt; frameID, std::optional&lt;uint64_t&gt; pageID) const
&gt; 
&gt; Why does this take std::optionals? It looks like the call site always has valid ids (unless I am mistaken), and it looks like this method would only ever return true if those ids are provided.

Huh -- you are right! I was copying an existing function, but there really isn&apos;t a need for these to be optionals. I&apos;ll revise.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:725
&gt;&gt; +    bool hasStorageAccessForFrame = networkStorageSession-&gt;hasStorageAccessForFrame(originalRequest(), frameID(), pageID());
&gt; 
&gt; frameID() / pageID() always return a uint64_t, right? If so, why does hasStorageAccessForFrame take std::optionals?

Yes. I&apos;ll fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394691</commentid>
    <comment_count>23</comment_count>
      <attachid>332689</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 12:51:58 -0800</bug_when>
    <thetext>Created attachment 332689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394695</commentid>
    <comment_count>24</comment_count>
      <attachid>332689</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 13:01:17 -0800</bug_when>
    <thetext>Comment on attachment 332689
Patch

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

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:206
&gt; +{

Shouldn&apos;t this just be:

if (!cookieStoragePartitioningEnabled)
  return false;

return hasStorageAccessForFrame(getPartitioningDomain(request.url()), getPartitioningDomain(request.firstPartyForCookies(), frameID, pageID);

?

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:211
&gt; +    if (!shouldPartitionCookies(resourceDomain))

I think this is wrong since this convenience function returns m_topPrivatelyControlledDomainsToPartition.contains(topPrivatelyControlledDomain) which is going to be set even if storage access has been granted.

Partitioning is set for the whole domain whereas storage access is granted per frame. Therefore we cannot remove partitioning entries when a frame is granted storage access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394709</commentid>
    <comment_count>25</comment_count>
      <attachid>332689</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 13:29:46 -0800</bug_when>
    <thetext>Comment on attachment 332689
Patch

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

&gt;&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:206
&gt;&gt; +{
&gt; 
&gt; Shouldn&apos;t this just be:
&gt; 
&gt; if (!cookieStoragePartitioningEnabled)
&gt;   return false;
&gt; 
&gt; return hasStorageAccessForFrame(getPartitioningDomain(request.url()), getPartitioningDomain(request.firstPartyForCookies(), frameID, pageID);
&gt; 
&gt; ?

Sure -- that&apos;s reasonable.

&gt;&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:211
&gt;&gt; +    if (!shouldPartitionCookies(resourceDomain))
&gt; 
&gt; I think this is wrong since this convenience function returns m_topPrivatelyControlledDomainsToPartition.contains(topPrivatelyControlledDomain) which is going to be set even if storage access has been granted.
&gt; 
&gt; Partitioning is set for the whole domain whereas storage access is granted per frame. Therefore we cannot remove partitioning entries when a frame is granted storage access.

But you define that an origin cannot have been granted StorageAccess API if the domain is not partitioned. So we expect this to succeed and fall through to the per-frame check (below). If the request origin isn&apos;t partitioned, we immediately return false.

I think that&apos;s right?

At any rate, I&apos;ve switched to calling your &apos;hastStorageAccessForFrame&apos; method, which I assume behaves as you intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394710</commentid>
    <comment_count>26</comment_count>
      <attachid>332695</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 13:31:46 -0800</bug_when>
    <thetext>Created attachment 332695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394713</commentid>
    <comment_count>27</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 13:42:06 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #25)
&gt; Comment on attachment 332689 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332689&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:206
&gt; &gt;&gt; +{
&gt; &gt; 
&gt; &gt; Shouldn&apos;t this just be:
&gt; &gt; 
&gt; &gt; if (!cookieStoragePartitioningEnabled)
&gt; &gt;   return false;
&gt; &gt; 
&gt; &gt; return hasStorageAccessForFrame(getPartitioningDomain(request.url()), getPartitioningDomain(request.firstPartyForCookies(), frameID, pageID);
&gt; &gt; 
&gt; &gt; ?
&gt; 
&gt; Sure -- that&apos;s reasonable.
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:211
&gt; &gt;&gt; +    if (!shouldPartitionCookies(resourceDomain))
&gt; &gt; 
&gt; &gt; I think this is wrong since this convenience function returns m_topPrivatelyControlledDomainsToPartition.contains(topPrivatelyControlledDomain) which is going to be set even if storage access has been granted.
&gt; &gt; 
&gt; &gt; Partitioning is set for the whole domain whereas storage access is granted per frame. Therefore we cannot remove partitioning entries when a frame is granted storage access.
&gt; 
&gt; But you define that an origin cannot have been granted StorageAccess API if
&gt; the domain is not partitioned. So we expect this to succeed and fall through
&gt; to the per-frame check (below). If the request origin isn&apos;t partitioned, we
&gt; immediately return false.

That is correct _at_the_time_of_decision_ to grant access. :) After the decision is made, the domain is still partitioned except for an individual frame.

&gt; I think that&apos;s right?
&gt; 
&gt; At any rate, I&apos;ve switched to calling your &apos;hastStorageAccessForFrame&apos;
&gt; method, which I assume behaves as you intended.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394792</commentid>
    <comment_count>28</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 15:12:05 -0800</bug_when>
    <thetext>Committed r227860: &lt;https://trac.webkit.org/changeset/227860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394795</commentid>
    <comment_count>29</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-30 15:12:50 -0800</bug_when>
    <thetext>It looks like mac-wk2 is complaining about a test failure in trunk. Not related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394798</commentid>
    <comment_count>30</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-01-30 15:16:55 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #29)
&gt; It looks like mac-wk2 is complaining about a test failure in trunk. Not
&gt; related to this patch.

Yeah, imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html has been failing for most of the day. :/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332440</attachid>
            <date>2018-01-26 17:32:44 -0800</date>
            <delta_ts>2018-01-28 17:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180126173243.patch</filename>
            <type>text/plain</type>
            <size>20995</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTAxLTI2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlUGFydGl0aW9uRnJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d2FzQWNjZXNzZWRXaXRoaW5JbnRl
cmFjdGlvbldpbmRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFBhcnRpdGlvbmluZ0RvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSBjb25zdCk6CisK
IDIwMTgtMDEtMjYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyMjI5NjEpOiBDbGVhciBmdW5jdGlvbiBub3QgY2xlYXJpbmcgd2hvbGUgc2Ny
ZWVuIHdoZW4gYW50aWFsaWFzIGlzIHNldCB0byBmYWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMjc0MzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNiArMTMyLDE2IEBAIHN0YXRpYyBXYWxsVGltZSByZWR1Y2VUb0hvdXJs
eVRpbWVSZXNvbHUKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0ZDo6Zmxv
b3IodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpIC8gdGltZXN0YW1wUmVzb2x1dGlvbikgKiB0aW1l
c3RhbXBSZXNvbHV0aW9uLnNlY29uZHMoKSk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFRpbWVUb0xpdmVQYXJ0aXRpb25GcmVlKGNvbnN0IFNlY29uZHMmIHZhbHVlKQorewor
ICAgIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gdmFsdWU7Cit9CisKK2Jvb2wgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6Ondhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3coY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKSBjb25zdAoreworICAgIHJldHVy
biBXYWxsVGltZTo6bm93KCkgPD0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lICsgdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU7Cit9CisKIHZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IEZyYW1lJiB0b3BGcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBVUkwmIHJlZGlyZWN0VXJsKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKQEAg
LTE3MSw2ICsxODEsOCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmln
CiAgICAgICAgICYmICEoYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFyeURv
bWFpbiwgbWFpbkZyYW1lUHJpbWFyeURvbWFpbikgfHwgYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFn
ZSwgdGFyZ2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbikpKSB7CiAgICAgICAg
IGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNz
Lmxhc3RTZWVuID0gcmVkdWNlVG9Ib3VybHlUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgd2Fz
QWNjZXNzZWRXaXRoaW5JbnRlcmFjdGlvbldpbmRvdyh0YXJnZXRTdGF0aXN0aWNzKSkKKyAgICAg
ICAgICAgIHRhcmdldFN0YXRpc3RpY3MuYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbisrOwogICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQogICAg
ICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CkBA
IC0yMjgsNiArMjQwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3Vy
YwogICAgIHsKICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAg
IHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSByZWR1Y2VUb0hvdXJseVRpbWVSZXNvbHV0aW9u
KFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLmhhZFVzZXJJ
bnRlcmFjdGlvbiAmJiB3YXNBY2Nlc3NlZFdpdGhpbkludGVyYWN0aW9uV2luZG93KHRhcmdldFN0
YXRpc3RpY3MpKQorICAgICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5hY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKys7CiAgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNz
LnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21h
aW4pLmlzTmV3RW50cnkpCiAgICAgICAgICAgICBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgPSB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAyMjc0MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTIgKzY5LDE0
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uOyB9CiAgICAgdm9pZCBzZXRTaG91bGRM
b2dVc2VySW50ZXJhY3Rpb24oYm9vbCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb24pIHsgbV9zaG91
bGRMb2dVc2VySW50ZXJhY3Rpb24gPSBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb247IH0KICNlbmRp
ZgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZVRvTGl2ZVBhcnRpdGlvbkZyZWUoY29u
c3QgU2Vjb25kcyYpOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAK
ICAgICBib29sIHNob3VsZExvZyhQYWdlKikgY29uc3Q7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKKyAgICBib29sIHdhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3coY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZU5vdGlm
aWNhdGlvbklmTmVlZGVkKCk7CiAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHRh
a2VTdGF0aXN0aWNzKCk7CkBAIC04Myw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwog
ICAgIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
PiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7
CisgICAgU2Vjb25kcyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdWludDY0X3QgbV9sb2dnaW5nQ291bnRlciB7IDAgfTsKICAgICBib29sIG1f
c2hvdWxkTG9nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIyNzQz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OmVuY29kZShLZXllCiAgICAgLy8gUHJldmFsZW50IFJlc291cmNlCiAgICAgZW5jb2Rlci5l
bmNvZGVCb29sKCJpc1ByZXZhbGVudFJlc291cmNlIiwgaXNQcmV2YWxlbnRSZXNvdXJjZSk7CiAg
ICAgZW5jb2Rlci5lbmNvZGVVSW50MzIoImRhdGFSZWNvcmRzUmVtb3ZlZCIsIGRhdGFSZWNvcmRz
UmVtb3ZlZCk7CisKKyAgICBlbmNvZGVyLmVuY29kZVVJbnQzMigiYWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50
ZXJhY3Rpb24pOworICAgIGVuY29kZXIuZW5jb2RlVUludDMyKCJhY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdl
QWNjZXNzQVBJKTsKIH0KIAogc3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRE
ZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBIYXNoQ291bnRlZFNldDxTdHJp
bmc+JiBoYXNoQ291bnRlZFNldCkKQEAgLTE0OCw3ICsxNTEsMTIgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUo
Imxhc3RTZWVuIiwgbGFzdFNlZW5UaW1lQXNEb3VibGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgbGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNE
b3VibGUpOwotICAgIAorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigiYWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb24pKQorICAgICAgICBhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNl
ckludGVyYWN0aW9uID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJhY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsIGFjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSkKKyAgICAgICAgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1N0b3JhZ2VBY2Nlc3NBUEkgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkocmV2aXNp
b24gMjI3NDM0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyB7CiAgICAgLy8gUHJldmFsZW50IHJlc291cmNlIHN0YXRzCiAgICAgYm9vbCBp
c1ByZXZhbGVudFJlc291cmNlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBkYXRhUmVjb3Jkc1Jl
bW92ZWQgeyAwIH07CisgICAgdW5zaWduZWQgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbiB7IDAgfTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
U3RvcmFnZUFjY2Vzc0FQSSB7IDAgfTsKIAogICAgIC8vIEluLW1lbW9yeSBvbmx5CiAgICAgYm9v
bCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgJKHJldmlzaW9uIDIyNzQzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN0b3JhZ2VBY2Nl
c3NBUElFbmFibGVkKGJvb2wpOwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb29raWVTdG9yYWdlUGFydGl0aW9uKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICBib29sIHNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlKSBj
b25zdDsKICAgICBTdHJpbmcgY29va2llU3RvcmFnZVBhcnRpdGlvbihjb25zdCBVUkwmIGZpcnN0
UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyNzQzNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgU3RyaW5nIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcgogICAgIHJldHVybiBjb29raWVTdG9yYWdlUGFy
dGl0aW9uKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJh
bWVJRCwgcGFnZUlEKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgZ2V0UGFydGl0aW9uaW5n
RG9tYWluKGNvbnN0IFVSTCYgdXJsKSAKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGdldFBhcnRpdGlv
bmluZ0RvbWFpbihjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQogICAgIGF1dG8gZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwu
aG9zdCgpKTsKQEAgLTIwMiw2ICsyMDIsMjUgQEAgU3RyaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llU3RvcgogICAgIHJldHVybiBmaXJzdFBhcnR5RG9tYWluOwogfQogCitib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdAoreworICAgIGlmICghY29va2llU3Rv
cmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8gcmVzb3VyY2VEb21haW4gPSBnZXRQYXJ0aXRpb25pbmdEb21haW4ocmVxdWVzdC51cmwoKSk7
CisgICAgaWYgKCFzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlRG9tYWluKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBmaXJzdFBhcnR5RG9tYWluID0gZ2V0UGFydGl0
aW9uaW5nRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgaWYgKGZp
cnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VEb21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChmcmFtZUlEICYmIHBhZ2VJRCAmJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlE
LnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29u
c3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdAogewogICAgIGlm
ICh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMjc0MzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI1IEBACisyMDE4LTAxLTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8gdHJhY2sgc3RvcmFnZSBhY2Nl
c3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1ODAzMzA5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToKKyAgICAgICAgKFdlYktpdDo6
c3VibWl0VG9wTGlzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE4
LTAxLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gV2ViUHJvY2VzcyBuZWVkcyBUQ0MgZW50aXRsZW1lbnRzIGZvciBtZWRpYSBjYXB0dXJl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjc0MzQpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxNyw2ICs3MTcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5m
CiAKICAgICBhdXRvIHVybCA9IG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwogICAgIGF1dG8gcGFy
dGl0aW9uID0gV2ViQ29yZTo6VVJMKFBhcnNlZFVSTFN0cmluZywgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5jb29raWVTdG9yYWdlUGFydGl0aW9uKG9yaWdpbmFsUmVxdWVzdCgpLCBmcmFtZUlEKCks
IHBhZ2VJRCgpKSk7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShvcmlnaW5hbFJlcXVlc3Qo
KSwgZnJhbWVJRCgpLCBwYWdlSUQoKSk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBj
b29raWVzOwogICAgIGJvb2wgcmVzdWx0ID0gV2ViQ29yZTo6Z2V0UmF3Q29va2llcygqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBwYXJ0aXRpb24sIHVybCwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29v
a2llcyk7CkBAIC03MzUsNiArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZgogCiAgICAgICAgIExPQ0FMX0xPRyhSIih7ICJ1cmwiOiAiJXtwdWJsaWN9cyIs
KSIsIGVzY2FwZWRVUkwudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICJw
YXJ0aXRpb24iOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRQYXJ0aXRpb24udXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIExPQ0FMX0xPRyhSIiggICJoYXNTdG9yYWdlQWNjZXNzIjogJXtwdWJsaWN9
cywpIiwgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgIExPQ0FMX0xPRyhSIiggICJyZWZlcmVyIjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkUmVm
ZXJyZXIudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICJjb29raWVzIjog
WykiKTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIyNzQzNCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTU0LDYgKzE1NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2QKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykgJiYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgZW5jb2RlciA8PCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb247
CiAjZW5kaWYKKworICAgIGVuY29kZXIgPDwgY29va2llUGFydGl0aW9uVGltZVRvTGl2ZTsKIH0K
IAogYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAt
NDAwLDYgKzQwMiw5IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuY29va2llUGFydGl0aW9uVGltZVRvTGl2ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMjc0
MzQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xODgsNiArMTg4LDcgQEAgc3RydWN0IFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBib29sIHNob3VsZExvZ1VzZXJJbnRl
cmFjdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKKyAgICBkb3VibGUgY29va2llUGFydGl0aW9uVGlt
ZVRvTGl2ZSB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeS5jcHAJKHJldmlzaW9uIDIyNzQzNCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw4IEBAIHN0cnVjdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRy
eSB7CiAgICAgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKICAgICB1bnNp
Z25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwogICAgIHVuc2lnbmVkIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG87CisgICAgdW5zaWduZWQgYWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbjsKKyAgICB1bnNpZ25lZCBhY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSTsKIH07CiAKIHN0YXRpYyBWZWN0b3I8UHJldmFsZW50UmVz
b3VyY2VUZWxlbWV0cnk+IHNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KGNvbnN0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCkBAIC02OCw3ICs3MCw5IEBAIHN0
YXRpYyBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkKICAgICAgICAgICAgIGRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvbiwKICAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKICAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQorICAgICAgICAgICAgc3RhdGlzdGljLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpLAorICAgICAgICAgICAgc3RhdGlzdGlj
LmFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24sCisgICAgICAgICAgICBz
dGF0aXN0aWMuYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkKICAgICAg
ICAgfSk7CiAgICAgfSk7CiAKQEAgLTE1OCwxMyArMTYyLDIxIEBAIHN0YXRpYyB2b2lkIHN1Ym1p
dFRvcExpc3QodW5zaWduZWQgbnVtYmUKICAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0
IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVzRGF0
YVJlY29yZHNSZW1vdmVkR2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5JiB0KSB7CiAgICAgICAgIHJldHVybiB0Lm51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92
ZWQ7CiAgICAgfTsKLSAgICAKKyAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZh
bGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkdldHRlciA9IFtdIChjb25zdCBQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSYgdCkgeworICAgICAgICByZXR1cm4gdC5hY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uOworICAgIH07CisgICAgV1RGOjpGdW5jdGlvbjx1
bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gbnVt
YmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJR2V0dGVy
ID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0KSB7CisgICAgICAgIHJl
dHVybiB0LmFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJOworICAgIH07
CisKICAgICB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
ID0gbnVtYmVyT2ZSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uKHNvcnRlZFByZXZhbGVudFJl
c291cmNlcywgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSk7CiAgICAgdW5zaWdu
ZWQgdG9wU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zy
b21UaGVUb3AgLSAxLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zR2V0dGVyKTsKICAgICB1
bnNpZ25lZCB0b3BTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zID0gbWVkaWFuKHNvcnRl
ZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVz
b3VyY2VzRnJvbVRoZVRvcCAtIDEsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0
ZXIpOwogICAgIHVuc2lnbmVkIHRvcFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBtZWRp
YW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVt
YmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
b0dldHRlcik7CiAgICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3Zl
ZCA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzRGF0YVJl
Y29yZHNSZW1vdmVkR2V0dGVyKTsKLSAgICAKKyAgICB1bnNpZ25lZCB0b3BOdW1iZXJPZlRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1lZGlhbihzb3J0ZWRQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291
cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1VzZXJJbnRlcmFjdGlvbkdldHRlcik7CisgICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVAgPSBtZWRpYW4oc29ydGVkUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJj
ZXNGcm9tVGhlVG9wIC0gMSwgbnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9T
dG9yYWdlQWNjZXNzQVBJR2V0dGVyKTsKKwogICAgIFN0cmluZ0J1aWxkZXIgcHJlYW1ibGVCdWls
ZGVyOwogICAgIHByZWFtYmxlQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ0b3AiKTsKICAgICBwcmVh
bWJsZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCk7CkBA
IC0xODAsNiArMTkyLDEwIEBAIHN0YXRpYyB2b2lkIHN1Ym1pdFRvcExpc3QodW5zaWduZWQgbnVt
YmUKICAgICAgICAgdG9wU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc2lnbmlmaWNhbnRG
aWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB3ZWJQYWdlUHJv
eHkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUg
KyAiTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCIsCiAgICAgICAgIHRvcE51bWJlck9m
VGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQsIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVl
cywgU2hvdWxkU2FtcGxlOjpObyk7CisgICAgd2ViUGFnZVByb3h5LmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIk51bWJlck9mVGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dl
ZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7CisgICAgd2ViUGFnZVByb3h5LmxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIk51bWJlck9mVGlt
ZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcE51bWJlck9mVGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQLCBzaWduaWZpY2FudEZpZ3VyZXNG
b3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwogfQogICAgIAogc3RhdGljIHZvaWQg
c3VibWl0VG9wTGlzdHMoY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYg
c29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCBXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjI3
NDM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3OSw2ICsyNzksMTEgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFS
VElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdExvZ0Nvb2tp
ZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCisKKyAgICBTZWNvbmRzIHRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
ZG91YmxlRm9yS2V5OkAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24iXSk7CisgICAgaWYgKHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPCAwX3MgfHwgdGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8PSAyNF9oICogMzApCisgICAgICAgIHRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24gPSAyNF9oOworICAgIHBhcmFtZXRlcnMuY29va2llUGFydGl0aW9uVGlt
ZVRvTGl2ZSA9IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUoKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjc0MzQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNyw2ICs0
MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRTaG91bGRMb2dVc2VySW50
ZXJhY3Rpb24ocGFyYW1ldGVycy5zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24pOwogI2VuZGlmCisg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVQYXJ0aXRpb25G
cmVlKFNlY29uZHMocGFyYW1ldGVycy5jb29raWVQYXJ0aXRpb25UaW1lVG9MaXZlKSk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiB1cmxTY2hlbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332501</attachid>
            <date>2018-01-28 17:14:20 -0800</date>
            <delta_ts>2018-01-29 10:23:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180128171420.patch</filename>
            <type>text/plain</type>
            <size>17748</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAxLTI4ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUGFydCAxOiBBZGQgdGVsZW1ldHJ5IGZvciB0aGUgdXNlciBpbnRlcmFjdGlv
biBjYXNlCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGVsZW1ldHJ5IHRvIHRy
YWNrIGhvdyBmcmVxdWVudGx5IHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlCisgICAgICAgIHVzZWQg
aW4gYSBmaXJzdCBwYXJ0eSBjb250ZXh0IGR1ZSB0byB1c2VyIGludGVyYWN0aW9uLiBUaGlzIHdp
bGwgaGVscAorICAgICAgICB1bmRlcnN0YW5kIGNhc2VzIHdoZXJlIHRoZSBuZXcgU3RvcmFnZSBB
Y2Nlc3MgQVBJIGNhbiBoZWxwLCBhbmQgdG8gaGVscAorICAgICAgICB1cyB1bmRlcnN0YW5kIGlm
IHdlIGhhdmUgY29uc2lkZXJlZCByZWxldmFudCB1c2UgY2FzZXMgaW4gaXRzIGRlc2lnbi4KKwor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZVBhcnRpdGlvbkZyZWUpOiBM
ZXQgdGhlIG9ic2VydmVyCisgICAgICAgIGtub3cgdGhlIGZpcnN0IHBhcnR5IGludGVyYWN0aW9u
IGR1cmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Ondhc0Fj
Y2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3cgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBOb3RlIHdo
ZW4gYSB0aGlyZCBwYXJ0eSAKKyAgICAgICAgcmVzb3VyY2UgaXMgYWNjZXNzZWQgYXMgYSBmaXJz
dCBwYXJ0eSBkdWUgdG8gdXNlciBpbnRlcmFjdGlvbi4gCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6ZW5jb2RlIGNvbnN0KTogSGFuZGxlIG5ldyBmaWVsZHMuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorCiAyMDE4LTAxLTI2ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBEaXN0
aW5ndWlzaCBiZXR3ZWVuIGFuIG9taXR0ZWQgYW5kIGEgbnVsbCB0aW1lbGluZSBhcmd1bWVudCB0
byB0aGUgQW5pbWF0aW9uIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyNzcyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiw2ICsxMzIsMTYgQEAgc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRvSG91cmx5VGltZVJl
c29sdQogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RkOjpmbG9vcih0aW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkgLyB0aW1lc3RhbXBSZXNvbHV0aW9uKSAqIHRpbWVzdGFtcFJl
c29sdXRpb24uc2Vjb25kcygpKTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
VGltZVRvTGl2ZVBhcnRpdGlvbkZyZWUoY29uc3QgU2Vjb25kcyYgdmFsdWUpCit7CisgICAgdGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPSB2YWx1ZTsKK30KKworYm9vbCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6d2FzQWNjZXNzZWRXaXRoaW5JbnRlcmFjdGlvbldpbmRvdyhjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdhbGxU
aW1lOjpub3coKSA8PSBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyB0
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWUm
IHRvcEZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFVSTCYg
cmVkaXJlY3RVcmwpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwpAQCAtMTcxLDYg
KzE4MSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAg
ICAgJiYgIShhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9tYWluLCBt
YWluRnJhbWVQcmltYXJ5RG9tYWluKSB8fCBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJn
ZXRQcmltYXJ5RG9tYWluLCBzb3VyY2VQcmltYXJ5RG9tYWluKSkpIHsKICAgICAgICAgYXV0byYg
dGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNl
ZW4gPSByZWR1Y2VUb0hvdXJseVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiAmJiB3YXNBY2Nlc3Nl
ZFdpdGhpbkludGVyYWN0aW9uV2luZG93KHRhcmdldFN0YXRpc3RpY3MpKQorICAgICAgICAgICAg
dGFyZ2V0U3RhdGlzdGljcy5hY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9u
Kys7CiAgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCiAgICAgICAgICAg
ICBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0KQEAgLTIyOCw2
ICsyNDAsOCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAg
ewogICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICAgICAgdGFyZ2V0
U3RhdGlzdGljcy5sYXN0U2VlbiA9IHJlZHVjZVRvSG91cmx5VGltZVJlc29sdXRpb24oV2FsbFRp
bWU6Om5vdygpKTsKKyAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0
aW9uICYmIHdhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3codGFyZ2V0U3RhdGlzdGlj
cykpCisgICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb24rKzsKICAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1lUHJpbWFyeURvbWFpbikuaXNO
ZXdFbnRyeSkKICAgICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IHRy
dWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmgJKHJldmlzaW9uIDIyNzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMiArNjksMTQgQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRMb2dVc2VySW50ZXJhY3Rpb247IH0KICAgICB2b2lkIHNldFNob3VsZExvZ1VzZXJJ
bnRlcmFjdGlvbihib29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbikgeyBtX3Nob3VsZExvZ1Vz
ZXJJbnRlcmFjdGlvbiA9IHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsgfQogI2VuZGlmCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlUGFydGl0aW9uRnJlZShjb25zdCBTZWNv
bmRzJik7CiAKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIGJv
b2wgc2hvdWxkTG9nKFBhZ2UqKSBjb25zdDsKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOwor
ICAgIGJvb2wgd2FzQWNjZXNzZWRXaXRoaW5JbnRlcmFjdGlvbldpbmRvdyhjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CiAKICAgICB2b2lkIHNjaGVkdWxlTm90aWZpY2F0aW9u
SWZOZWVkZWQoKTsKICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRp
c3RpY3MoKTsKQEAgLTgzLDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywg
V1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7CiAgICAgV1RG
OjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1fbm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKKyAgICBT
ZWNvbmRzIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIHsgMjRfaCB9OwogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIGJvb2wgbV9zaG91bGRM
b2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjI3NzIwKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw2ICs4MCw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5j
b2RlKEtleWUKICAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKICAgICBlbmNvZGVyLmVuY29kZUJv
b2woImlzUHJldmFsZW50UmVzb3VyY2UiLCBpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICBlbmNv
ZGVyLmVuY29kZVVJbnQzMigiZGF0YVJlY29yZHNSZW1vdmVkIiwgZGF0YVJlY29yZHNSZW1vdmVk
KTsKKworICAgIGVuY29kZXIuZW5jb2RlVUludDMyKCJhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
VXNlckludGVyYWN0aW9uIiwgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bik7CisgICAgZW5jb2Rlci5lbmNvZGVVSW50MzIoImFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9T
dG9yYWdlQWNjZXNzQVBJIiwgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NB
UEkpOwogfQogCiBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERlY29kZXIm
IGRlY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGhh
c2hDb3VudGVkU2V0KQpAQCAtMTQ4LDcgKzE1MSwxMiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OmRlY29kZShLZXllCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZSgibGFzdFNl
ZW4iLCBsYXN0U2VlblRpbWVBc0RvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBs
YXN0U2VlbiA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0U2VlblRpbWVBc0RvdWJsZSk7
Ci0gICAgCisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJhY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIiwgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbikpCisgICAgICAgIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJh
Y3Rpb24gPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoImFjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwgYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0
b3JhZ2VBY2Nlc3NBUEkpKQorICAgICAgICBhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFn
ZUFjY2Vzc0FQSSA9IDA7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAyMjc3
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIHsKICAgICAvLyBQcmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKICAgICBib29sIGlzUHJldmFs
ZW50UmVzb3VyY2UgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCB7
IDAgfTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0
aW9uIHsgMCB9OworICAgIHVuc2lnbmVkIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdl
QWNjZXNzQVBJIHsgMCB9OwogCiAgICAgLy8gSW4tbWVtb3J5IG9ubHkKICAgICBib29sIGlzTWFy
a2VkRm9yQ29va2llUGFydGl0aW9uaW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMjc3MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMxIEBACisyMDE4LTAxLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8gdHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJ
IGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1ODAzMzA5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgMTogQWRkIHRlbGVtZXRy
eSBmb3IgdGhlIHVzZXIgaW50ZXJhY3Rpb24gY2FzZQorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHRlbGVtZXRyeSB0byB0cmFjayBob3cgZnJlcXVlbnRseSB0aGlyZC1wYXJ0eSBj
b29raWVzIGFyZQorICAgICAgICB1c2VkIGluIGEgZmlyc3QgcGFydHkgY29udGV4dCBkdWUgdG8g
dXNlciBpbnRlcmFjdGlvbi4gVGhpcyB3aWxsIGhlbHAKKyAgICAgICAgdW5kZXJzdGFuZCBjYXNl
cyB3aGVyZSB0aGUgbmV3IFN0b3JhZ2UgQWNjZXNzIEFQSSBjYW4gaGVscCwgYW5kIHRvIGhlbHAK
KyAgICAgICAgdXMgdW5kZXJzdGFuZCBpZiB3ZSBoYXZlIGNvbnNpZGVyZWQgcmVsZXZhbnQgdXNl
IGNhc2VzIGluIGl0cyBkZXNpZ24uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c29ydGVkUHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnkpOiBVcGRhdGUgZm9yIG5ldyB0ZWxlbWV0cnkuCisgICAgICAgIChX
ZWJLaXQ6OnN1Ym1pdFRvcExpc3QpOiBVcGRhdGUgZm9yIG5ldyBkYXRhIHR5cGVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogSGFuZGxlIHRoZSBwYXJ0aXRpb25pbmcgdGltZQor
ICAgICAgICBwYXNzZWQgZnJvbSB0aGUgVUlQcm9jZXNzLgorCiAyMDE4LTAxLTI2ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcmV0YWlu
IGZvY3VzIGZvciBpbnB1dCBwZXJpcGhlcmFsIHZpZXdzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNp
b24gMjI3NzIwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTQsNiArMTU0LDggQEAgdm9pZCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBlbmNvZGVyIDw8
IHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgorCisgICAgZW5jb2RlciA8PCBjb29r
aWVQYXJ0aXRpb25UaW1lVG9MaXZlOwogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC00MDAsNiArNDAyLDkgQEAgYm9vbCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
IAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb29raWVQYXJ0aXRpb25UaW1l
VG9MaXZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIyNzcyMCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4OCw2ICsx
ODgsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgorICAg
IGRvdWJsZSBjb29raWVQYXJ0aXRpb25UaW1lVG9MaXZlIHsgMCB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAkocmV2aXNpb24g
MjI3NzIwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgc3RydWN0
IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5IHsKICAgICB1bnNpZ25lZCBzdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zOwogICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnM7CiAgICAgdW5zaWduZWQgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICB1
bnNpZ25lZCBhY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uOworICAgIHVu
c2lnbmVkIGFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJOwogfTsKIAog
c3RhdGljIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkUHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnkoY29uc3QgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBz
dG9yZSkKQEAgLTY4LDcgKzcwLDkgQEAgc3RhdGljIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeQogICAgICAgICAgICAgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uLAogICAgICAgICAg
ICAgc3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpLAogICAgICAg
ICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuc2l6ZSgpLAot
ICAgICAgICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgp
CisgICAgICAgICAgICBzdGF0aXN0aWMuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5zaXpl
KCksCisgICAgICAgICAgICBzdGF0aXN0aWMuYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbiwKKyAgICAgICAgICAgIHN0YXRpc3RpYy5hY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvU3RvcmFnZUFjY2Vzc0FQSQogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMTU4LDEzICsx
NjIsMjEgQEAgc3RhdGljIHZvaWQgc3VibWl0VG9wTGlzdCh1bnNpZ25lZCBudW1iZQogICAgIFdU
Rjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRl
bGVtZXRyeSk+IG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWRHZXR0ZXIgPSBbXSAoY29u
c3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHQpIHsKICAgICAgICAgcmV0dXJuIHQubnVt
YmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZDsKICAgICB9OwotICAgIAorICAgIFdURjo6RnVu
Y3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRy
eSk+IG51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9u
R2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0KSB7CisgICAg
ICAgIHJldHVybiB0LmFjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb247Cisg
ICAgfTsKKyAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlE
dWVUb1N0b3JhZ2VBY2Nlc3NBUElHZXR0ZXIgPSBbXSAoY29uc3QgUHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnkmIHQpIHsKKyAgICAgICAgcmV0dXJuIHQuYWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1N0b3JhZ2VBY2Nlc3NBUEk7CisgICAgfTsKKwogICAgIHVuc2lnbmVkIHRvcFByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24gPSBudW1iZXJPZlJlc291cmNlc1dpdGhVc2VySW50
ZXJhY3Rpb24oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCAwLCBudW1iZXJPZlJlc291cmNlc0Zy
b21UaGVUb3AgLSAxKTsKICAgICB1bnNpZ25lZCB0b3BTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIHN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnNHZXR0ZXIpOwogICAgIHVuc2lnbmVkIHRvcFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnMgPSBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luc0dldHRlcik7CiAgICAgdW5zaWduZWQgdG9wU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvR2V0dGVyKTsKICAgICB1bnNpZ25lZCB0b3BOdW1i
ZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291
cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRv
cCAtIDEsIG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWRHZXR0ZXIpOwotICAgIAorICAg
IHVuc2lnbmVkIHRvcE51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIG51bWJlck9mVGlt
ZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uR2V0dGVyKTsKKyAgICB1
bnNpZ25lZCB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VB
Y2Nlc3NBUCA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVy
YWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElHZXR0ZXIpOworCiAgICAg
U3RyaW5nQnVpbGRlciBwcmVhbWJsZUJ1aWxkZXI7CiAgICAgcHJlYW1ibGVCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoInRvcCIpOwogICAgIHByZWFtYmxlQnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVy
T2ZSZXNvdXJjZXNGcm9tVGhlVG9wKTsKQEAgLTE4MCw2ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQg
c3VibWl0VG9wTGlzdCh1bnNpZ25lZCBudW1iZQogICAgICAgICB0b3BTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNh
bXBsZTo6Tm8pOwogICAgIHdlYlBhZ2VQcm94eS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlL
ZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJOdW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1v
dmVkIiwKICAgICAgICAgdG9wTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCwgc2lnbmlm
aWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICB3ZWJQ
YWdlUHJveHkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJl
YW1ibGUgKyAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJh
Y3Rpb24iLAorICAgICAgICB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1VzZXJJbnRlcmFjdGlvbiwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91
bGRTYW1wbGU6Ok5vKTsKKyAgICB3ZWJQYWdlUHJveHkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwKKyAgICAgICAgdG9wTnVtYmVyT2ZUaW1l
c0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVAsIHNpZ25pZmljYW50Rmln
dXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7CiB9CiAgICAgCiBzdGF0aWMg
dm9pZCBzdWJtaXRUb3BMaXN0cyhjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNv
dXJjZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24sIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lv
biAyMjc3MjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjc5LDYgKzI3OSwxMSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHBhcmFtZXRlcnMu
c2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0TG9n
Q29va2llSW5mb3JtYXRpb25EZWZhdWx0c0tleV07CiAjZW5kaWYKKworICAgIFNlY29uZHMgdGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBkb3VibGVGb3JLZXk6QCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbiJdKTsKKyAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8IDBfcyB8
fCB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIDw9IDI0X2ggKiAzMCkKKyAgICAgICAgdGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbiA9IDI0X2g7CisgICAgcGFyYW1ldGVycy5jb29raWVQYXJ0aXRp
b25UaW1lVG9MaXZlID0gdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNzcyMCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI0
LDYgKzQyNCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0U2hvdWxkTG9nVXNlckludGVyYWN0
aW9uKHBhcmFtZXRlcnMuc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKTsKICNlbmRpZgogCisgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVQYXJ0aXRpb25GcmVl
KFNlY29uZHMocGFyYW1ldGVycy5jb29raWVQYXJ0aXRpb25UaW1lVG9MaXZlKSk7CisKICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
czogUHJlc2VudGluZyBwcm9jZXNzID0gJWQiLCB0aGlzLCBXZWJDb3JlOjpwcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332551</attachid>
            <date>2018-01-29 10:23:10 -0800</date>
            <delta_ts>2018-01-29 17:36:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180129102309.patch</filename>
            <type>text/plain</type>
            <size>19149</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzczNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAxLTI5ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUGFydCAxOiBBZGQgdGVsZW1ldHJ5IGZvciB0aGUgdXNlciBpbnRlcmFjdGlv
biBjYXNlCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGVsZW1ldHJ5IHRvIHRy
YWNrIGhvdyBmcmVxdWVudGx5IHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlCisgICAgICAgIHVzZWQg
aW4gYSBmaXJzdCBwYXJ0eSBjb250ZXh0IGR1ZSB0byB1c2VyIGludGVyYWN0aW9uLiBUaGlzIHdp
bGwgaGVscAorICAgICAgICB1bmRlcnN0YW5kIGNhc2VzIHdoZXJlIHRoZSBuZXcgU3RvcmFnZSBB
Y2Nlc3MgQVBJIGNhbiBoZWxwLCBhbmQgdG8gaGVscAorICAgICAgICB1cyB1bmRlcnN0YW5kIGlm
IHdlIGhhdmUgY29uc2lkZXJlZCByZWxldmFudCB1c2UgY2FzZXMgaW4gaXRzIGRlc2lnbi4KKwor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZVBhcnRpdGlvbkZyZWUpOiBM
ZXQgdGhlIG9ic2VydmVyCisgICAgICAgIGtub3cgdGhlIGZpcnN0IHBhcnR5IGludGVyYWN0aW9u
IGR1cmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Ondhc0Fj
Y2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3cgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBOb3RlIHdo
ZW4gYSB0aGlyZCBwYXJ0eSAKKyAgICAgICAgcmVzb3VyY2UgaXMgYWNjZXNzZWQgYXMgYSBmaXJz
dCBwYXJ0eSBkdWUgdG8gdXNlciBpbnRlcmFjdGlvbi4gCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6ZW5jb2RlIGNvbnN0KTogSGFuZGxlIG5ldyBmaWVsZHMuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorCiAyMDE4LTAxLTI5ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBmYXN0L2V2
ZW50cy9iZWZvcmV1bmxvYWQtZG9tLW1hbmlwdWxhdGlvbi1jcmFzaC5odG1sIGlzIGNyYXNoaW5n
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAJKHJldmlzaW9uIDIyNzczNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTYgQEAgc3RhdGlj
IFdhbGxUaW1lIHJlZHVjZVRvSG91cmx5VGltZVJlc29sdQogICAgIHJldHVybiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoc3RkOjpmbG9vcih0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkgLyB0aW1l
c3RhbXBSZXNvbHV0aW9uKSAqIHRpbWVzdGFtcFJlc29sdXRpb24uc2Vjb25kcygpKTsKIH0KIAor
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZVBhcnRpdGlvbkZyZWUoU2Vj
b25kcyB2YWx1ZSkKK3sKKyAgICB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IHZhbHVl
OworfQorCitib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjp3YXNBY2Nlc3NlZFdpdGhpbkludGVy
YWN0aW9uV2luZG93KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29u
c3QKK3sKKyAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygpIDw9IHN0YXRpc3RpYy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSArIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOworfQor
CiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBGcmFtZSYgdG9wRnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVybCkKIHsKICAgICBBU1NFUlQoZnJhbWUu
ZG9jdW1lbnQoKSk7CkBAIC0xNzEsNiArMTgxLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nRnJhbWVOYXZpZwogICAgICAgICAmJiAhKGFyZURvbWFpbnNBc3NvY2lhdGVkKHBhZ2Us
IHRhcmdldFByaW1hcnlEb21haW4sIG1haW5GcmFtZVByaW1hcnlEb21haW4pIHx8IGFyZURvbWFp
bnNBc3NvY2lhdGVkKHBhZ2UsIHRhcmdldFByaW1hcnlEb21haW4sIHNvdXJjZVByaW1hcnlEb21h
aW4pKSkgewogICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICAgICAg
dGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IHJlZHVjZVRvSG91cmx5VGltZVJlc29sdXRpb24o
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3MuaGFkVXNlcklu
dGVyYWN0aW9uICYmIHdhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3codGFyZ2V0U3Rh
dGlzdGljcykpCisgICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbisrOwogICAgICAgICBpZiAodGFyZ2V0U3RhdGlz
dGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9t
YWluKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxi
YWNrID0gdHJ1ZTsKICAgICB9CkBAIC0yMjgsNiArMjQwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nU3VicmVzb3VyYwogICAgIHsKICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlz
dGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJp
bWFyeURvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSByZWR1Y2VU
b0hvdXJseVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGlmICh0YXJn
ZXRTdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiAmJiB3YXNBY2Nlc3NlZFdpdGhpbkludGVy
YWN0aW9uV2luZG93KHRhcmdldFN0YXRpc3RpY3MpKQorICAgICAgICAgICAgdGFyZ2V0U3RhdGlz
dGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24rKzsKICAg
ICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cy5hZGQobWFpbkZyYW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHNo
b3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHJldmlzaW9uIDIyNzcz
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSwxMiArNjksMTQgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkTG9n
VXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRMb2dVc2VySW50ZXJhY3Rp
b247IH0KICAgICB2b2lkIHNldFNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbihib29sIHNob3VsZExv
Z1VzZXJJbnRlcmFjdGlvbikgeyBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IHNob3VsZExv
Z1VzZXJJbnRlcmFjdGlvbjsgfQogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRU
aW1lVG9MaXZlUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKIAogcHJpdmF0ZToKICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcigpOwogCiAgICAgYm9vbCBzaG91bGRMb2coUGFnZSopIGNvbnN0OwogICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4oY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB3YXNBY2Nlc3NlZFdpdGhpbkludGVy
YWN0aW9uV2luZG93KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKIAogICAg
IHZvaWQgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogICAgIFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwpAQCAtODMsNiArODUsNyBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVz
ZXJJbnRlcmFjdGlvbk1hcDsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKICAgICBUaW1lciBt
X25vdGlmaWNhdGlvblRpbWVyOworICAgIFNlY29uZHMgdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUgeyAyNF9oIH07CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
ICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHVpbnQ2NF90IG1fbG9nZ2luZ0NvdW50ZXIg
eyAwIH07CiAgICAgYm9vbCBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCShyZXZpc2lvbiAyMjc3MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZQogICAgIC8vIFByZXZhbGVudCBSZXNv
dXJjZQogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaXNQcmV2YWxlbnRSZXNvdXJjZSIsIGlzUHJl
dmFsZW50UmVzb3VyY2UpOwogICAgIGVuY29kZXIuZW5jb2RlVUludDMyKCJkYXRhUmVjb3Jkc1Jl
bW92ZWQiLCBkYXRhUmVjb3Jkc1JlbW92ZWQpOworCisgICAgZW5jb2Rlci5lbmNvZGVVSW50MzIo
InRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsIHRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbik7CisgICAgZW5jb2Rlci5lbmNv
ZGVVSW50MzIoInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEki
LCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKTsKIH0KIAog
c3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNl
dCkKQEAgLTE0OCw3ICsxNTEsMTIgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUoS2V5ZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUoImxhc3RTZWVuIiwgbGFzdFNl
ZW5UaW1lQXNEb3VibGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbGFzdFNlZW4gPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwotICAgIAorCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZVVJbnQzMigidGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvVXNlckludGVyYWN0aW9uIiwgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uKSkKKyAgICAgICAgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ0aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwgdGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkpCisgICAgICAgIHRpbWVzQWNjZXNzZWRBc0Zp
cnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMjI3NzM2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAgICAgLy8gUHJldmFsZW50IHJlc291cmNlIHN0YXRz
CiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBk
YXRhUmVjb3Jkc1JlbW92ZWQgeyAwIH07CisgICAgdW5zaWduZWQgdGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIHsgMCB9OworICAgIHVuc2lnbmVkIHRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgeyAwIH07CiAKICAgICAvLyBJ
bi1tZW1vcnkgb25seQogICAgIGJvb2wgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzczNikKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDEtMjkgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRlbGVtZXRy
eSB0byB0cmFjayBzdG9yYWdlIGFjY2VzcyBBUEkgYWRvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjE5NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzU4MDMzMDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFydCAxOiBBZGQgdGVsZW1ldHJ5IGZvciB0aGUgdXNlciBpbnRlcmFjdGlvbiBj
YXNlCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGVsZW1ldHJ5IHRvIHRyYWNr
IGhvdyBmcmVxdWVudGx5IHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlCisgICAgICAgIHVzZWQgaW4g
YSBmaXJzdCBwYXJ0eSBjb250ZXh0IGR1ZSB0byB1c2VyIGludGVyYWN0aW9uLiBUaGlzIHdpbGwg
aGVscAorICAgICAgICB1bmRlcnN0YW5kIGNhc2VzIHdoZXJlIHRoZSBuZXcgU3RvcmFnZSBBY2Nl
c3MgQVBJIGNhbiBoZWxwLCBhbmQgdG8gaGVscAorICAgICAgICB1cyB1bmRlcnN0YW5kIGlmIHdl
IGhhdmUgY29uc2lkZXJlZCByZWxldmFudCB1c2UgY2FzZXMgaW4gaXRzIGRlc2lnbi4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSk6IFVwZGF0ZSBm
b3IgbmV3IHRlbGVtZXRyeS4KKyAgICAgICAgKFdlYktpdDo6c3VibWl0VG9wTGlzdCk6IFVwZGF0
ZSBmb3IgbmV3IGRhdGEgdHlwZXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBI
YW5kbGUgdGhlIHBhcnRpdGlvbmluZyB0aW1lCisgICAgICAgIHBhc3NlZCBmcm9tIHRoZSBVSVBy
b2Nlc3MuCisKIDIwMTgtMDEtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogQVNTRVJUSU9OIEZBSUxFRDogIW1fbG9hZFRp
bWVyLmlzQWN0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMjc3MzYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE1NCw2ICsxNTQsOCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGVuY29kZXIgPDwgc2hvdWxkTG9nVXNlckludGVy
YWN0aW9uOwogI2VuZGlmCisKKyAgICBlbmNvZGVyIDw8IGNvb2tpZVBhcnRpdGlvblRpbWVUb0xp
dmU7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKQEAgLTQwMCw2ICs0MDIsOSBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVBhcnRpdGlvblRpbWVUb0xpdmUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjI3NzM2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg4LDYgKzE4OCw3IEBAIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BB
UlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgYm9vbCBzaG91bGRMb2dV
c2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCisgICAgU2Vjb25kcyBjb29raWVQYXJ0
aXRpb25UaW1lVG9MaXZlIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAkocmV2aXNpb24gMjI3NzM2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgc3RydWN0IFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5IHsKICAgICB1bnNpZ25lZCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwog
ICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7CiAgICAgdW5zaWdu
ZWQgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICB1bnNpZ25lZCB0aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb247CisgICAgdW5zaWduZWQgdGltZXNB
Y2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSTsKIH07CiAKIHN0YXRpYyBW
ZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5KGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCkBA
IC02OCw3ICs3MCw5IEBAIHN0YXRpYyBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkK
ICAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKICAgICAgICAgICAgIHN0YXRp
c3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKICAgICAgICAgICAgIHN0
YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLnNpemUoKSwKLSAgICAgICAg
ICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUoKQorICAgICAg
ICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpLAorICAg
ICAgICAgICAgc3RhdGlzdGljLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbiwKKyAgICAgICAgICAgIHN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9TdG9yYWdlQWNjZXNzQVBJCiAgICAgICAgIH0pOwogICAgIH0pOwogCkBAIC0xNDYsMjUg
KzE1MCwzMyBAQCBzdGF0aWMgV2ViUGFnZVByb3h5KiBub25FcGhlbWVyYWxXZWJQYWdlCiAgICAg
CiBzdGF0aWMgdm9pZCBzdWJtaXRUb3BMaXN0KHVuc2lnbmVkIG51bWJlck9mUmVzb3VyY2VzRnJv
bVRoZVRvcCwgY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgc29ydGVk
UHJldmFsZW50UmVzb3VyY2VzLCBjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0
cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNv
bnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBzdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zR2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5JiB0KSB7CisgICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNv
dXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0dl
dHRlciA9IFtdIChhdXRvJiB0KSB7CiAgICAgICAgIHJldHVybiB0LnN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbnM7CiAgICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFBy
ZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zR2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5
JiB0KSB7CisgICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJj
ZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc0dl
dHRlciA9IFtdIChhdXRvJiB0KSB7CiAgICAgICAgIHJldHVybiB0LnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnM7CiAgICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0
IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvR2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5
JiB0KSB7CisgICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJj
ZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0dldHRl
ciA9IFtdIChhdXRvJiB0KSB7CiAgICAgICAgIHJldHVybiB0LnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG87CiAgICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZh
bGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVzRGF0YVJlY29y
ZHNSZW1vdmVkR2V0dGVyID0gW10gKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0
KSB7CisgICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeSYgdGVsZW1ldHJ5KT4gbnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZEdldHRl
ciA9IFtdIChhdXRvJiB0KSB7CiAgICAgICAgIHJldHVybiB0Lm51bWJlck9mVGltZXNEYXRhUmVj
b3Jkc1JlbW92ZWQ7CiAgICAgfTsKLSAgICAKKyAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNv
bnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkdldHRlciA9IFtdIChhdXRv
JiB0KSB7CisgICAgICAgIHJldHVybiB0LnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbjsKKyAgICB9OworICAgIFdURjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3Qg
UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+IG51bWJlck9mVGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUdldHRlciA9IFtdIChhdXRvJiB0
KSB7CisgICAgICAgIHJldHVybiB0LnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3Jh
Z2VBY2Nlc3NBUEk7CisgICAgfTsKKwogICAgIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24gPSBudW1iZXJPZlJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVU
b3AgLSAxKTsKICAgICB1bnNpZ25lZCB0b3BTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zID0g
bWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAs
IG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbnNHZXR0ZXIpOwogICAgIHVuc2lnbmVkIHRvcFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnMgPSBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luc0dldHRlcik7CiAgICAgdW5zaWduZWQgdG9wU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvR2V0dGVyKTsKICAgICB1bnNpZ25lZCB0b3BOdW1iZXJPZlRp
bWVzRGF0YVJlY29yZHNSZW1vdmVkID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEs
IG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWRHZXR0ZXIpOwotICAgIAorICAgIHVuc2ln
bmVkIHRvcE51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0
aW9uID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIG51bWJlck9mVGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uR2V0dGVyKTsKKyAgICB1bnNpZ25l
ZCB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NB
UCA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElHZXR0ZXIpOworCiAgICAgU3RyaW5n
QnVpbGRlciBwcmVhbWJsZUJ1aWxkZXI7CiAgICAgcHJlYW1ibGVCdWlsZGVyLmFwcGVuZExpdGVy
YWwoInRvcCIpOwogICAgIHByZWFtYmxlQnVpbGRlci5hcHBlbmROdW1iZXIobnVtYmVyT2ZSZXNv
dXJjZXNGcm9tVGhlVG9wKTsKQEAgLTE4MCw2ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgc3VibWl0
VG9wTGlzdCh1bnNpZ25lZCBudW1iZQogICAgICAgICB0b3BTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6
Tm8pOwogICAgIHdlYlBhZ2VQcm94eS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwg
ZGVzY3JpcHRpb25QcmVhbWJsZSArICJOdW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkIiwK
ICAgICAgICAgdG9wTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCwgc2lnbmlmaWNhbnRG
aWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICB3ZWJQYWdlUHJv
eHkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUg
KyAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24i
LAorICAgICAgICB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbiwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1w
bGU6Ok5vKTsKKyAgICB3ZWJQYWdlUHJveHkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5
KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwKKyAgICAgICAgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVAsIHNpZ25pZmljYW50RmlndXJlc0Zv
ckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7CiB9CiAgICAgCiBzdGF0aWMgdm9pZCBz
dWJtaXRUb3BMaXN0cyhjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBz
b3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeT4mIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyMjc3
MzYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjc5LDYgKzI3OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJU
SVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHBhcmFtZXRlcnMuc2hvdWxk
TG9nVXNlckludGVyYWN0aW9uID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0TG9nQ29va2ll
SW5mb3JtYXRpb25EZWZhdWx0c0tleV07CiAjZW5kaWYKKworICAgIFNlY29uZHMgdGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBk
b3VibGVGb3JLZXk6QCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbiJdKTsKKyAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8IDBfcyB8fCB0aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uID4gMjRfaCAqIDMwKQorICAgICAgICB0aW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uID0gMjRfaDsKKyAgICBwYXJhbWV0ZXJzLmNvb2tpZVBhcnRpdGlvblRpbWVU
b0xpdmUgPSB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNzczNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI0LDYgKzQyNCw4IEBAIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkuc2V0U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKHBhcmFtZXRlcnMu
c2hvdWxkTG9nVXNlckludGVyYWN0aW9uKTsKICNlbmRpZgogCisgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVQYXJ0aXRpb25GcmVlKHBhcmFtZXRlcnMuY29v
a2llUGFydGl0aW9uVGltZVRvTGl2ZSk7CisKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAg
LSBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzczogUHJlc2VudGluZyBwcm9jZXNzID0g
JWQiLCB0aGlzLCBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332610</attachid>
            <date>2018-01-29 17:36:46 -0800</date>
            <delta_ts>2018-01-30 08:22:21 -0800</delta_ts>
            <desc>Patch (Part 2)</desc>
            <filename>bug-182197-20180129173645.patch</filename>
            <type>text/plain</type>
            <size>11944</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTAxLTI5ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUGFydGlhbCByb2xsLW91dCBvZiByMjI3NzU1LgorCisgICAgICAgIFRoZSBv
cmlnaW5hbCBwYXRjaCBhc3N1bWVkIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mga2VwdCB0cmFjayBv
ZiB1c2VyIGludGVyYWN0aW9uLiBUaGlzIGlzCisgICAgICAgIG9ubHkgdHJhY2tlZCBpbiB0aGUg
VUlQcm9jZXNzLCBzbyB3ZSBjYW4gZ2V0IHJpZCBvZiBzb21lIG9mIHRoZSBsb2dnaW5nIGNvZGUg
YWRkaW5nIGluCisgICAgICAgIHIyMjc3NTUuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlUGFydGl0aW9uRnJlZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d2FzQWNjZXNzZWRXaXRoaW5JbnRl
cmFjdGlvbldpbmRvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmg6CisKIDIwMTgtMDEtMjkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBJbnRyb2R1Y2Ug
ZGVidWcgbW9kZSBhcyBleHBlcmltZW50YWwgZmVhdHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMjc3NTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsMTYgKzEzMiw2IEBAIHN0YXRpYyBXYWxsVGltZSByZWR1Y2VUb0hvdXJs
eVRpbWVSZXNvbHUKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0ZDo6Zmxv
b3IodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpIC8gdGltZXN0YW1wUmVzb2x1dGlvbikgKiB0aW1l
c3RhbXBSZXNvbHV0aW9uLnNlY29uZHMoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFRpbWVUb0xpdmVQYXJ0aXRpb25GcmVlKFNlY29uZHMgdmFsdWUpCi17Ci0gICAgbV90
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IHZhbHVlOwotfQotCi1ib29sIFJlc291cmNl
TG9hZE9ic2VydmVyOjp3YXNBY2Nlc3NlZFdpdGhpbkludGVyYWN0aW9uV2luZG93KGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykgY29uc3QKLXsKLSAgICByZXR1cm4gV2Fs
bFRpbWU6Om5vdygpIDw9IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSAr
IG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IEZy
YW1lJiB0b3BGcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBV
UkwmIHJlZGlyZWN0VXJsKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKQEAgLTE4
MSw4ICsxNzEsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAg
ICAgICAgICYmICEoYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFyeURvbWFp
biwgbWFpbkZyYW1lUHJpbWFyeURvbWFpbikgfHwgYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwg
dGFyZ2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbikpKSB7CiAgICAgICAgIGF1
dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxh
c3RTZWVuID0gcmVkdWNlVG9Ib3VybHlUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwot
ICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgd2FzQWNj
ZXNzZWRXaXRoaW5JbnRlcmFjdGlvbldpbmRvdyh0YXJnZXRTdGF0aXN0aWNzKSkKLSAgICAgICAg
ICAgIHRhcmdldFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uKys7CiAgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0K
QEAgLTI0MCw4ICsyMjgsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNv
dXJjCiAgICAgewogICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICAg
ICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IHJlZHVjZVRvSG91cmx5VGltZVJlc29sdXRp
b24oV2FsbFRpbWU6Om5vdygpKTsKLSAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3MuaGFkVXNl
ckludGVyYWN0aW9uICYmIHdhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3codGFyZ2V0
U3RhdGlzdGljcykpCi0gICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbisrOwogICAgICAgICBpZiAodGFyZ2V0U3Rh
dGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmlt
YXJ5RG9tYWluKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlv
bkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjI3NzU1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0
ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsgfQogICAgIHZvaWQgc2V0
U2hvdWxkTG9nVXNlckludGVyYWN0aW9uKGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKSB7
IG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gc2hvdWxkTG9nVXNlckludGVyYWN0aW9uOyB9
CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVQYXJ0aXRpb25G
cmVlKFNlY29uZHMpOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAK
ICAgICBib29sIHNob3VsZExvZyhQYWdlKikgY29uc3Q7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKLSAgICBib29sIHdhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3coY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZU5vdGlm
aWNhdGlvbklmTmVlZGVkKCk7CiAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHRh
a2VTdGF0aXN0aWNzKCk7CkBAIC04NSw3ICs4Myw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwog
ICAgIFdURjo6RnVuY3Rpb248dm9pZCAoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
PiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwogICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7
Ci0gICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIHsgMjRfaCB9Owog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIGJvb2wg
bV9zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyNzc1NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTgtMDEtMjkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHRlbGVtZXRyeSB0byB0cmFjayBzdG9yYWdlIGFjY2VzcyBB
UEkgYWRvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MjE5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU4MDMzMDk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNo
IGFsc28gaGFuZGxlZCBhZ2dyZWdhdGluZyB0aGUgY291bnRzIGluIHRoZSBVSVByb2Nlc3MsIHdo
aWNoIGhhcyBhY2Nlc3MgdG8KKyAgICAgICAgdGhlIHJpZ2h0IGRhdGEuCisKKyAgICAgICAgVGhl
IG9yaWdpbmFsIHBhdGNoIGFzc3VtZWQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBrZXB0IHRyYWNr
IG9mIHVzZXIgaW50ZXJhY3Rpb24uIFRoaXMgaXMKKyAgICAgICAgb25seSB0cmFja2VkIGluIHRo
ZSBVSVByb2Nlc3MsIHNvIHdlIGNhbiBnZXQgcmlkIG9mIHNvbWUgb2YgdGhlIGxvZ2dpbmcgY29k
ZSBhZGRpbmcgaW4KKyAgICAgICAgcjIyNzc1NS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogUm9sbG91dCBvZiByMjI3NzU1IGNoYW5n
ZXMgbm90CisgICAgICAgIG5lZWRlZCB0byB0cmFjayB0aGUgc3RhdGlzdGljcy4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKTogRGl0dG8uCisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3YXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKTogTW92ZWQgZnJvbQorICAgICAg
ICB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCBkb2VzIG5vdCBrZWVwIHRyYWNrIG9mIHVz
ZXIgaW50ZXJhY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKTogQWdncmVnYXRlIGNvdW50cyB3aGlsZSBwcm9jZXNz
aW5nCisgICAgICAgIHRoZSBzdGF0aXN0aWNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyk6CisKIDIwMTgtMDEtMjkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHRlbGVtZXRyeSB0byB0cmFjayBzdG9yYWdlIGFjY2VzcyBBUEkgYWRvcHRp
b24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMjc3NTUpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU0LDggKzE1NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgZW5jb2RlciA8PCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb247CiAjZW5k
aWYKLQotICAgIGVuY29kZXIgPDwgY29va2llUGFydGl0aW9uVGltZVRvTGl2ZTsKIH0KIAogYm9v
bCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNDAyLDkg
KzQwMCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuY29va2llUGFydGl0aW9uVGltZVRvTGl2ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMjc3NTUpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9u
IHsgZmFsc2UgfTsKICNlbmRpZgotICAgIFNlY29uZHMgY29va2llUGFydGl0aW9uVGltZVRvTGl2
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CShyZXZpc2lvbiAyMjc3NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsNiArNzQ4LDE2
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGUKICAgICB1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyB9LCB7IH0sIFNob3VsZENsZWFyRmly
c3Q6Olllcyk7CiB9CiAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3YXNB
Y2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0
ZWQpCit7CisgICAgaWYgKCFjdXJyZW50LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhdXBkYXRlZC5o
YWRVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBzdGQ6Om1heChjdXJyZW50Lm1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lLCB1cGRhdGVkLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
KTsKKworICAgIHJldHVybiB1cGRhdGVkLmxhc3RTZWVuIDw9IG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lICsgbV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOwor
fQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNz
KFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03NTUsOCArNzY1LDExIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXIKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbiwgWyZz
dGF0aXN0aWNdIHsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRpc3RpYyk7CiAgICAg
ICAgIH0pOwotICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgICAgICBpZiAod2FzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBzdGF0aXN0aWMp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUudGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKys7CiAgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3RpYyk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjc3NTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTczLDYgKzE3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0
c0lmTmVlZGVkKCk7CiAjZW5kaWYKIAorICAgIGJvb2wgd2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlE
dWVUb1VzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBjdXJyZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVk
KTsKKwogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKICAgICAgICAgc2l6ZV90IHBydW5lRW50cmll
c0Rvd25UbyB7IDgwMCB9OwogICAgICAgICBzaXplX3QgbWF4U3RhdGlzdGljc0VudHJpZXMgeyAx
MDAwIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIyNzc1NSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI3OSwxMSArMjc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
VwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBwYXJhbWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtk
ZWZhdWx0cyBib29sRm9yS2V5OldlYktpdExvZ0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXld
OwogI2VuZGlmCi0KLSAgICBTZWNvbmRzIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OkAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iXSk7Ci0gICAgaWYgKHRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24gPCAwX3MgfHwgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+
IDI0X2ggKiAzMCkKLSAgICAgICAgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IDI0X2g7Ci0g
ICAgcGFyYW1ldGVycy5jb29raWVQYXJ0aXRpb25UaW1lVG9MaXZlID0gdGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbjsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAyMjc3NTUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyNCw4ICs0MjQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxp
emVXZWJQcm9jZXNzKFdlCiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFNo
b3VsZExvZ1VzZXJJbnRlcmFjdGlvbihwYXJhbWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlv
bik7CiAjZW5kaWYKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRUaW1l
VG9MaXZlUGFydGl0aW9uRnJlZShwYXJhbWV0ZXJzLmNvb2tpZVBhcnRpdGlvblRpbWVUb0xpdmUp
OwotCiAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3M6IFByZXNlbnRpbmcgcHJvY2VzcyA9ICVkIiwgdGhpcywgV2ViQ29yZTo6cHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332656</attachid>
            <date>2018-01-30 08:22:22 -0800</date>
            <delta_ts>2018-01-30 11:19:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180130082221.patch</filename>
            <type>text/plain</type>
            <size>11935</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTAxLTMwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUGFydGlhbCByb2xsLW91dCBvZiByMjI3NzU1LgorCisgICAgICAgIFRoZSBv
cmlnaW5hbCBwYXRjaCBhc3N1bWVkIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mga2VwdCB0cmFjayBv
ZiB1c2VyIGludGVyYWN0aW9uLiBUaGlzIGlzCisgICAgICAgIG9ubHkgdHJhY2tlZCBpbiB0aGUg
VUlQcm9jZXNzLCBzbyB3ZSBjYW4gZ2V0IHJpZCBvZiBzb21lIG9mIHRoZSBsb2dnaW5nIGNvZGUg
YWRkaW5nIGluCisgICAgICAgIHIyMjc3NTUuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlUGFydGl0aW9uRnJlZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d2FzQWNjZXNzZWRXaXRoaW5JbnRl
cmFjdGlvbldpbmRvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmg6CisKIDIwMTgtMDEtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEF2b2lkIHRyYXZlcnNpbmcgdG9vIG11Y2ggd2hlbiBkb2luZyBj
bGFzcyBjaGFuZ2UgaW52YWxpZGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyNzc4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMiwxNiArMTMyLDYgQEAgc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRpbWVSZXNvbHV0aW9uKFdh
bAogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RkOjpmbG9vcih0aW1lLnNl
Y29uZHNTaW5jZUVwb2NoKCkgLyB0aW1lc3RhbXBSZXNvbHV0aW9uKSAqIHRpbWVzdGFtcFJlc29s
dXRpb24uc2Vjb25kcygpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGlt
ZVRvTGl2ZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB2YWx1ZSkKLXsKLSAgICBtX3RpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlID0gdmFsdWU7Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6Ondhc0FjY2Vzc2VkV2l0aGluSW50ZXJhY3Rpb25XaW5kb3coY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgc3RhdGlzdGljKSBjb25zdAotewotICAgIHJldHVybiBXYWxsVGltZTo6bm93
KCkgPD0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV90aW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWUmIHRvcEZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFVSTCYgcmVkaXJl
Y3RVcmwpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwpAQCAtMTgxLDggKzE3MSw2
IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAgICAgJiYg
IShhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9tYWluLCBtYWluRnJh
bWVQcmltYXJ5RG9tYWluKSB8fCBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmlt
YXJ5RG9tYWluLCBzb3VyY2VQcmltYXJ5RG9tYWluKSkpIHsKICAgICAgICAgYXV0byYgdGFyZ2V0
U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFy
Z2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBy
ZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwotICAgICAgICBpZiAodGFyZ2V0
U3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gJiYgd2FzQWNjZXNzZWRXaXRoaW5JbnRlcmFj
dGlvbldpbmRvdyh0YXJnZXRTdGF0aXN0aWNzKSkKLSAgICAgICAgICAgIHRhcmdldFN0YXRpc3Rp
Y3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKys7CiAgICAg
ICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRk
KG1haW5GcmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCiAgICAgICAgICAgICBzaG91bGRD
YWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0KQEAgLTI0MCw4ICsyMjgsNiBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgewogICAgICAg
ICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGlj
cy5sYXN0U2VlbiA9IHJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7Ci0gICAg
ICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiAmJiB3YXNBY2Nlc3Nl
ZFdpdGhpbkludGVyYWN0aW9uV2luZG93KHRhcmdldFN0YXRpc3RpY3MpKQotICAgICAgICAgICAg
dGFyZ2V0U3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJh
Y3Rpb24rKzsKICAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IHRydWU7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHJl
dmlzaW9uIDIyNzc4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNCArNjksMTIgQEAgcHVibGljOgogICAgIGJv
b2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRMb2dV
c2VySW50ZXJhY3Rpb247IH0KICAgICB2b2lkIHNldFNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbihi
b29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbikgeyBtX3Nob3VsZExvZ1VzZXJJbnRlcmFjdGlv
biA9IHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsgfQogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUaW1lVG9MaXZlUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKIAogcHJpdmF0ZToK
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogCiAgICAgYm9vbCBzaG91bGRMb2coUGFnZSop
IGNvbnN0OwogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCB3YXNBY2Nlc3Nl
ZFdpdGhpbkludGVyYWN0aW9uV2luZG93KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBj
b25zdDsKIAogICAgIHZvaWQgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogICAgIFZl
Y3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwpAQCAtODUsNyAr
ODMsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBXVEY6OldhbGxUaW1lPiBtX2xh
c3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFZl
Y3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsK
ICAgICBUaW1lciBtX25vdGlmaWNhdGlvblRpbWVyOwotICAgIFNlY29uZHMgbV90aW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZSB7IDI0X2ggfTsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdWludDY0X3QgbV9s
b2dnaW5nQ291bnRlciB7IDAgfTsKICAgICBib29sIG1fc2hvdWxkTG9nVXNlckludGVyYWN0aW9u
IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc3ODgpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTAxLTMw
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxl
bWV0cnkgdG8gdHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGhhbmRsZWQgYWdncmVnYXRpbmcg
dGhlIGNvdW50cyBpbiB0aGUgVUlQcm9jZXNzLCB3aGljaCBoYXMgYWNjZXNzIHRvCisgICAgICAg
IHRoZSByaWdodCBkYXRhLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBwYXRjaCBhc3N1bWVkIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3Mga2VwdCB0cmFjayBvZiB1c2VyIGludGVyYWN0aW9uLiBUaGlz
IGlzCisgICAgICAgIG9ubHkgdHJhY2tlZCBpbiB0aGUgVUlQcm9jZXNzLCBzbyB3ZSBjYW4gZ2V0
IHJpZCBvZiBzb21lIG9mIHRoZSBsb2dnaW5nIGNvZGUgYWRkaW5nIGluCisgICAgICAgIHIyMjc3
NTUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6IFJvbGxvdXQgb2YgcjIyNzc1NSBjaGFuZ2VzIG5vdAorICAgICAgICBuZWVkZWQgdG8g
dHJhY2sgdGhlIHN0YXRpc3RpY3MuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbik6IE1vdmVkIGZyb20KKyAgICAgICAgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywg
d2hpY2ggZG9lcyBub3Qga2VlcCB0cmFjayBvZiB1c2VyIGludGVyYWN0aW9uLgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6
IEFnZ3JlZ2F0ZSBjb3VudHMgd2hpbGUgcHJvY2Vzc2luZworICAgICAgICB0aGUgc3RhdGlzdGlj
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE4LTAxLTMwICBCYXN1a2Ug
U3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZp
eCBmb3J3YXJkaW5nIGhlYWRlciBjb25mbGljdCBvZiBXZWJLaXQgb24gV2luQ2Fpcm8KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAyMjc3ODgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDggKzE1
NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgZW5jb2RlciA8PCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKLQotICAg
IGVuY29kZXIgPDwgY29va2llUGFydGl0aW9uVGltZVRvTGl2ZTsKIH0KIAogYm9vbCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNDAyLDkgKzQwMCw2IEBA
IGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29v
a2llUGFydGl0aW9uVGltZVRvTGl2ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJl
dHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMjc3ODgpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OCw3ICsxODgsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIGJvb2wgc2hvdWxkTG9nVXNlckludGVyYWN0aW9uIHsgZmFsc2Ug
fTsKICNlbmRpZgotICAgIFNlY29uZHMgY29va2llUGFydGl0aW9uVGltZVRvTGl2ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lv
biAyMjc3ODgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTcsNiArNzU3LDE2IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGUKICAgICB1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zKHsgfSwgeyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7
CiB9CiAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3YXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpCit7Cisg
ICAgaWYgKCFjdXJyZW50LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhdXBkYXRlZC5oYWRVc2VySW50
ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgPSBzdGQ6Om1heChjdXJyZW50Lm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lLCB1cGRhdGVkLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKKworICAg
IHJldHVybiB1cGRhdGVkLmxhc3RTZWVuIDw9IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
ICsgbV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOworfQorCiB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC03NjQsOCArNzc0LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjptZXIKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbnN1cmUoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbiwgWyZzdGF0aXN0aWNd
IHsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRpc3RpYyk7CiAgICAgICAgIH0pOwot
ICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgICAgICBpZiAod2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1Vz
ZXJJbnRlcmFjdGlvbihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBzdGF0aXN0aWMpKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvVXNlckludGVyYWN0aW9uKys7CiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLm1lcmdlKHN0YXRpc3RpYyk7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCShyZXZpc2lvbiAyMjc3ODgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYg
KzE3NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVk
KCk7CiAjZW5kaWYKIAorICAgIGJvb2wgd2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBjdXJyZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKTsKKwogICAg
IHN0cnVjdCBQYXJhbWV0ZXJzIHsKICAgICAgICAgc2l6ZV90IHBydW5lRW50cmllc0Rvd25UbyB7
IDgwMCB9OwogICAgICAgICBzaXplX3QgbWF4U3RhdGlzdGljc0VudHJpZXMgeyAxMDAwIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHJldmlzaW9uIDIyNzc4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3OSwxMSAr
Mjc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2lmIEhB
VkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBwYXJhbWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBi
b29sRm9yS2V5OldlYktpdExvZ0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlm
Ci0KLSAgICBTZWNvbmRzIHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OkAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24iXSk7Ci0gICAgaWYgKHRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24gPCAwX3MgfHwgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDI0X2ggKiAz
MCkKLSAgICAgICAgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IDI0X2g7Ci0gICAgcGFyYW1l
dGVycy5jb29raWVQYXJ0aXRpb25UaW1lVG9MaXZlID0gdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bjsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjc3ODgp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNCw4ICs0MjQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlCiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFNob3VsZExvZ1Vz
ZXJJbnRlcmFjdGlvbihwYXJhbWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbik7CiAjZW5k
aWYKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlUGFy
dGl0aW9uRnJlZShwYXJhbWV0ZXJzLmNvb2tpZVBhcnRpdGlvblRpbWVUb0xpdmUpOwotCiAgICAg
UkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3M6IFByZXNlbnRpbmcgcHJvY2VzcyA9ICVkIiwgdGhpcywgV2ViQ29yZTo6cHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332672</attachid>
            <date>2018-01-30 11:19:34 -0800</date>
            <delta_ts>2018-01-30 12:51:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180130111933.patch</filename>
            <type>text/plain</type>
            <size>7526</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4LTAxLTMwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhcnQgMjogQWRkIHRlbGVtZXRyeSBmb3IgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBjYXNl
CisKKyAgICAgICAgQWRkcyBhIG5ldyBjb252ZW5pZW5jZSBtZXRob2QgdG8gaWRlbnRpZnkgb3Jp
Z2luL3BhZ2UvZnJhbWUgY29tYmluYXRpb25zIHRoYXQKKyAgICAgICAgaGF2ZSBiZWVuIGdyYW50
ZWQgYWNjZXNzIHRvIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkuIFRoaXMgaXMgdXNlZCBmb3IgZGVi
dWcKKyAgICAgICAgbG9nZ2luZyBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuIEl0IGlzIG5vdCB1c2Vk
IGluIHByb2R1Y3Rpb24gYnVpbGRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lIGNvbnN0KTogQWRkZWQuCisKIDIw
MTgtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb24gc29mdCB1cGRhdGVzIGhhcHBlbiB0b28gZnJlcXVlbnRs
eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMjc3ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTksNiArOTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIGJvb2wgY2xlYXJGaXJzdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQ
cmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1l
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckFsbEZyYW1lc09uUGFnZSh1aW50NjRfdCBwYWdlSUQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyNzc4OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAyLDYgKzIwMiwyNSBAQCBTdHJpbmcgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVTdG9yCiAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW47CiB9CiAKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Cit7CisgICAgaWYgKCFjb29r
aWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byByZXNvdXJjZURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXF1ZXN0LnVy
bCgpKTsKKyAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNvb2tpZXMocmVzb3VyY2VEb21haW4pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZpcnN0UGFydHlEb21haW4gPSBnZXRQ
YXJ0aXRpb25pbmdEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKKyAgICBp
ZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGZyYW1lSUQgJiYgcGFnZUlEICYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRC52YWx1ZSgpLCBw
YWdlSUQudmFsdWUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkUGFydGl0aW9uQ29va2ll
cyhjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pIGNvbnN0CiB7CiAg
ICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0eSgpKQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDEtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRlbGVtZXRyeSB0byB0cmFjayBzdG9yYWdl
IGFjY2VzcyBBUEkgYWRvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MjE5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU4MDMzMDk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCAyOiBB
ZGQgdGVsZW1ldHJ5IGZvciB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGNhc2UKKworICAgICAgICBU
aGlzIGNoYW5nZSBpbmNyZW1lbnRzIGEgY291bnRlciB3aGVuIGFuIG9yaWdpbiBpcyBsb2FkZWQg
aW4gYSBmaXJzdCBwYXJ0IGNvbnRleHQgYmVjYXVzZQorICAgICAgICBpdCB3YXMgZ3JhbnRlZCBT
dG9yYWdlIEFjY2VzcyBBUEkgcGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uIGNvbnN0KTogQWRkIGxvZ2dpbmcgdG8g
aW5kaWNhdGUKKyAgICAgICAgbG9hZHMgdGhhdCBoYXBwZW5lZCB3aXRoIHRoZSBTdG9yYWdlIEFj
Y2VzcyBBUEkgZW5hYmxlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IEluY3JlbWVudCBjb3VudGVyIGZvcgor
ICAgICAgICBsb2FkcyB1c2luZyB0aGUgbmV3IEFQSS4KKwogMjAxOC0wMS0zMCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVsZW1ldHJ5IHRvIHRy
YWNrIHN0b3JhZ2UgYWNjZXNzIEFQSSBhZG9wdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gMjI3Nzg5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIyLDYgKzcyMiw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmYKIAogICAgIGF1dG8gdXJsID0gb3JpZ2lu
YWxSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byBwYXJ0aXRpb24gPSBXZWJDb3JlOjpVUkwoUGFy
c2VkVVJMU3RyaW5nLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZVN0b3JhZ2VQYXJ0aXRp
b24ob3JpZ2luYWxSZXF1ZXN0KCksIGZyYW1lSUQoKSwgcGFnZUlEKCkpKTsKKyAgICBib29sIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKG9yaWdpbmFsUmVxdWVzdCgpLCBmcmFtZUlEKCksIHBhZ2VJRCgpKTsK
IAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7CiAgICAgYm9vbCByZXN1bHQg
PSBXZWJDb3JlOjpnZXRSYXdDb29raWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIHBhcnRpdGlv
biwgdXJsLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb29raWVzKTsKQEAgLTc0MCw2ICs3NDEsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mCiAKICAgICAgICAgTE9D
QUxfTE9HKFIiKHsgInVybCI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFVSTC51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgTE9DQUxfTE9HKFIiKCAgInBhcnRpdGlvbiI6ICIle3B1YmxpY31zIiwp
IiwgZXNjYXBlZFBhcnRpdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9DQUxfTE9HKFIi
KCAgImhhc1N0b3JhZ2VBY2Nlc3MiOiAle3B1YmxpY31zLCkiLCBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgTE9DQUxfTE9HKFIiKCAgInJlZmVy
ZXIiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRSZWZlcnJlci51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgTE9DQUxfTE9HKFIiKCAgImNvb2tpZXMiOiBbKSIpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAJKHJldmlzaW9uIDIyNzc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3
ICszMDQsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAgICAg
ICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICAKKworICAgICAgICBzdWJGcmFtZVN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKys7CisKICAgICAgICAgbV9ncmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9tYWluLCB0b3BGcmFtZVByaW1h
cnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332689</attachid>
            <date>2018-01-30 12:51:58 -0800</date>
            <delta_ts>2018-01-30 13:31:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180130125157.patch</filename>
            <type>text/plain</type>
            <size>7429</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4LTAxLTMwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhcnQgMjogQWRkIHRlbGVtZXRyeSBmb3IgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBjYXNl
CisKKyAgICAgICAgQWRkcyBhIG5ldyBjb252ZW5pZW5jZSBtZXRob2QgdG8gaWRlbnRpZnkgb3Jp
Z2luL3BhZ2UvZnJhbWUgY29tYmluYXRpb25zIHRoYXQKKyAgICAgICAgaGF2ZSBiZWVuIGdyYW50
ZWQgYWNjZXNzIHRvIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkuIFRoaXMgaXMgdXNlZCBmb3IgZGVi
dWcKKyAgICAgICAgbG9nZ2luZyBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuIEl0IGlzIG5vdCB1c2Vk
IGluIHByb2R1Y3Rpb24gYnVpbGRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lIGNvbnN0KTogQWRkZWQuCisKIDIw
MTgtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb24gc29mdCB1cGRhdGVzIGhhcHBlbiB0b28gZnJlcXVlbnRs
eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMjc3ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTksNiArOTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIGJvb2wgY2xlYXJGaXJzdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQ
cmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZSh1aW50NjRf
dCBwYWdlSUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlz
aW9uIDIyNzc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAyLDYgKzIwMiwy
NSBAQCBTdHJpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yCiAgICAgcmV0dXJu
IGZpcnN0UGFydHlEb21haW47CiB9CiAKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Cit7CisgICAgaWYgKCFjb29raWVT
dG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byByZXNvdXJjZURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXF1ZXN0LnVybCgp
KTsKKyAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNvb2tpZXMocmVzb3VyY2VEb21haW4pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGZpcnN0UGFydHlEb21haW4gPSBnZXRQYXJ0
aXRpb25pbmdEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKKyAgICBpZiAo
Zmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShyZXNvdXJjZURvbWFpbiwgZmly
c3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91
bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbikgY29uc3QKIHsKICAgICBpZiAodG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbi5pc0Vt
cHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NzkwKQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMS0zMCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGVsZW1ldHJ5
IHRvIHRyYWNrIHN0b3JhZ2UgYWNjZXNzIEFQSSBhZG9wdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMTk3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNTgwMzMwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IDI6IEFkZCB0ZWxlbWV0cnkgZm9yIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkg
Y2FzZQorCisgICAgICAgIFRoaXMgY2hhbmdlIGluY3JlbWVudHMgYSBjb3VudGVyIHdoZW4gYW4g
b3JpZ2luIGlzIGxvYWRlZCBpbiBhIGZpcnN0IHBhcnQgY29udGV4dCBiZWNhdXNlCisgICAgICAg
IGl0IHdhcyBncmFudGVkIFN0b3JhZ2UgQWNjZXNzIEFQSSBwZXJtaXNzaW9ucy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24gY29uc3Qp
OiBBZGQgbG9nZ2luZyB0byBpbmRpY2F0ZQorICAgICAgICBsb2FkcyB0aGF0IGhhcHBlbmVkIHdp
dGggdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBlbmFibGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKTogSW5jcmVt
ZW50IGNvdW50ZXIgZm9yCisgICAgICAgIGxvYWRzIHVzaW5nIHRoZSBuZXcgQVBJLgorCiAyMDE4
LTAxLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCB0ZWxlbWV0cnkgdG8gdHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyMjc3ODkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MjIsNiAr
NzIyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZgogCiAgICAg
YXV0byB1cmwgPSBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKICAgICBhdXRvIHBhcnRpdGlvbiA9
IFdlYkNvcmU6OlVSTChQYXJzZWRVUkxTdHJpbmcsIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29v
a2llU3RvcmFnZVBhcnRpdGlvbihvcmlnaW5hbFJlcXVlc3QoKSwgZnJhbWVJRCgpLCBwYWdlSUQo
KSkpOworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lID0gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUob3JpZ2luYWxSZXF1ZXN0KCksIGZyYW1l
SUQoKSwgcGFnZUlEKCkpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llczsK
ICAgICBib29sIHJlc3VsdCA9IFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoKm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgcGFydGl0aW9uLCB1cmwsIGZyYW1lSUQoKSwgcGFnZUlEKCksIGNvb2tpZXMpOwpA
QCAtNzQwLDYgKzc0MSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJ
bmYKIAogICAgICAgICBMT0NBTF9MT0coUiIoeyAidXJsIjogIiV7cHVibGljfXMiLCkiLCBlc2Nh
cGVkVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAicGFydGl0aW9u
IjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkUGFydGl0aW9uLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBMT0NBTF9MT0coUiIoICAiaGFzU3RvcmFnZUFjY2VzcyI6ICV7cHVibGljfXMsKSIsIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAgICBMT0NB
TF9MT0coUiIoICAicmVmZXJlciI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFJlZmVycmVyLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAiY29va2llcyI6IFspIik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI3NzkwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZXEKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHN1YkZyYW1lU3RhdGlzdGljLnRp
bWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkrKzsKKwogICAgICAg
ICBtX2dyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihzdWJGcmFtZVByaW1hcnlEb21h
aW4sIHRvcEZyYW1lUHJpbWFyeURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAgICAgfSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332695</attachid>
            <date>2018-01-30 13:31:46 -0800</date>
            <delta_ts>2018-01-30 14:33:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182197-20180130133146.patch</filename>
            <type>text/plain</type>
            <size>7205</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4LTAxLTMwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZWxlbWV0cnkgdG8g
dHJhY2sgc3RvcmFnZSBhY2Nlc3MgQVBJIGFkb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxOTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODAzMzA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhcnQgMjogQWRkIHRlbGVtZXRyeSBmb3IgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBjYXNl
CisKKyAgICAgICAgQWRkcyBhIG5ldyBjb252ZW5pZW5jZSBtZXRob2QgdG8gaWRlbnRpZnkgb3Jp
Z2luL3BhZ2UvZnJhbWUgY29tYmluYXRpb25zIHRoYXQKKyAgICAgICAgaGF2ZSBiZWVuIGdyYW50
ZWQgYWNjZXNzIHRvIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkuIFRoaXMgaXMgdXNlZCBmb3IgZGVi
dWcKKyAgICAgICAgbG9nZ2luZyBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuIEl0IGlzIG5vdCB1c2Vk
IGluIHByb2R1Y3Rpb24gYnVpbGRzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lIGNvbnN0KTogQWRkZWQuCisKIDIw
MTgtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb24gc29mdCB1cGRhdGVzIGhhcHBlbiB0b28gZnJlcXVlbnRs
eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMjc3ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTksNiArOTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
QmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIGJvb2wgY2xlYXJGaXJzdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVQ
cmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZSh1aW50NjRf
dCBwYWdlSUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlz
aW9uIDIyNzc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk2LDYgKzI5Niwx
NCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjCiAgICAgcmV0dXJu
IGl0Mi0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW47CiB9CiAKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Cit7CisgICAg
aWYgKCFjb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShnZXRQYXJ0aXRpb25p
bmdEb21haW4ocmVxdWVzdC51cmwoKSksIGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCkpLCBmcmFtZUlELCBwYWdlSUQpOworfQorCiB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3RyaW5n
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFy
dHlEb21haW4pOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc5MCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDEtMzAg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRlbGVt
ZXRyeSB0byB0cmFjayBzdG9yYWdlIGFjY2VzcyBBUEkgYWRvcHRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjE5NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzU4MDMzMDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCAyOiBBZGQgdGVsZW1ldHJ5IGZvciB0aGUgU3RvcmFnZSBBY2Nlc3Mg
QVBJIGNhc2UKKworICAgICAgICBUaGlzIGNoYW5nZSBpbmNyZW1lbnRzIGEgY291bnRlciB3aGVu
IGFuIG9yaWdpbiBpcyBsb2FkZWQgaW4gYSBmaXJzdCBwYXJ0IGNvbnRleHQgYmVjYXVzZQorICAg
ICAgICBpdCB3YXMgZ3JhbnRlZCBTdG9yYWdlIEFjY2VzcyBBUEkgcGVybWlzc2lvbnMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uIGNv
bnN0KTogQWRkIGxvZ2dpbmcgdG8gaW5kaWNhdGUKKyAgICAgICAgbG9hZHMgdGhhdCBoYXBwZW5l
ZCB3aXRoIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgZW5hYmxlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6IElu
Y3JlbWVudCBjb3VudGVyIGZvcgorICAgICAgICBsb2FkcyB1c2luZyB0aGUgbmV3IEFQSS4KKwog
MjAxOC0wMS0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgdGVsZW1ldHJ5IHRvIHRyYWNrIHN0b3JhZ2UgYWNjZXNzIEFQSSBhZG9wdGlvbgpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjI3Nzg5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIy
LDYgKzcyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmYKIAog
ICAgIGF1dG8gdXJsID0gb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byBwYXJ0aXRp
b24gPSBXZWJDb3JlOjpVUkwoUGFyc2VkVVJMU3RyaW5nLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmNvb2tpZVN0b3JhZ2VQYXJ0aXRpb24ob3JpZ2luYWxSZXF1ZXN0KCksIGZyYW1lSUQoKSwgcGFn
ZUlEKCkpKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZSA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKG9yaWdpbmFsUmVxdWVzdCgpLCBm
cmFtZUlEKCksIHBhZ2VJRCgpKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXM7CiAgICAgYm9vbCByZXN1bHQgPSBXZWJDb3JlOjpnZXRSYXdDb29raWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIHBhcnRpdGlvbiwgdXJsLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb29raWVz
KTsKQEAgLTc0MCw2ICs3NDEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29v
a2llSW5mCiAKICAgICAgICAgTE9DQUxfTE9HKFIiKHsgInVybCI6ICIle3B1YmxpY31zIiwpIiwg
ZXNjYXBlZFVSTC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgTE9DQUxfTE9HKFIiKCAgInBhcnRp
dGlvbiI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFBhcnRpdGlvbi51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9DQUxfTE9HKFIiKCAgImhhc1N0b3JhZ2VBY2Nlc3MiOiAle3B1YmxpY31zLCki
LCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAg
TE9DQUxfTE9HKFIiKCAgInJlZmVyZXIiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRSZWZlcnJl
ci51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgTE9DQUxfTE9HKFIiKCAgImNvb2tpZXMiOiBbKSIp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyNzc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVxCiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBzdWJGcmFtZVN0YXRpc3Rp
Yy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKys7CisKICAg
ICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVQcmltYXJ5
RG9tYWluLCB0b3BGcmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwogICAgIH0pOwogfQo=
</data>
<flag name="review"
          id="351620"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>