<?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>210990</bug_id>
          
          <creation_ts>2020-04-24 13:28:00 -0700</creation_ts>
          <short_desc>Rendering update steps should use Seconds for the timestamps</short_desc>
          <delta_ts>2023-05-10 12:37:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207153</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645355</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-24 13:28:00 -0700</bug_when>
    <thetext>It has been confusing to deal with DOMHighResTimeStamp since the units can be not deduced easily. Some places use it as seconds other places use it as milliseconds. We will change DOMWindow::nowTimestamp() to return Seconds and change the callers accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645362</commentid>
    <comment_count>1</comment_count>
      <attachid>397499</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-24 13:34:36 -0700</bug_when>
    <thetext>Created attachment 397499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645384</commentid>
    <comment_count>2</comment_count>
      <attachid>397506</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-24 14:07:15 -0700</bug_when>
    <thetext>Created attachment 397506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645532</commentid>
    <comment_count>3</comment_count>
      <attachid>397542</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-24 22:58:00 -0700</bug_when>
    <thetext>Created attachment 397542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645551</commentid>
    <comment_count>4</comment_count>
      <attachid>397548</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-25 00:39:01 -0700</bug_when>
    <thetext>Created attachment 397548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645558</commentid>
    <comment_count>5</comment_count>
      <attachid>397552</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-25 01:36:23 -0700</bug_when>
    <thetext>Created attachment 397552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645599</commentid>
    <comment_count>6</comment_count>
      <attachid>397552</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-25 08:14:13 -0700</bug_when>
    <thetext>Comment on attachment 397552
Patch

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

Patch looks good.

&gt; Source/WebCore/dom/Document.cpp:7679
&gt; +                    (*timestamp).milliseconds(),

Ok as is. No change needed. Optimal solution is to use -&gt; because it is more idiomatic and aestically pleasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645852</commentid>
    <comment_count>7</comment_count>
      <attachid>397634</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-26 16:43:51 -0700</bug_when>
    <thetext>Created attachment 397634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645869</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-26 18:03:01 -0700</bug_when>
    <thetext>Committed r260736: &lt;https://trac.webkit.org/changeset/260736&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397634.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645870</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-26 18:04:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/62416809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646171</commentid>
    <comment_count>10</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-04-27 13:30:31 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/260736/webkit

broke imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html

history:
https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fweb-animations%2Ftiming-model%2Ftimelines%2Fdocument-timelines.html

Diff:
--- /Volumes/Data/slave/catalina-release-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines-expected.txt
+++ /Volumes/Data/slave/catalina-release-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines-actual.txt
@@ -1,4 +1,4 @@
 
-PASS Document timelines report current time relative to navigationStart 
+FAIL Document timelines report current time relative to navigationStart assert_equals: The current time matches requestAnimationFrame time expected 13.000000000000002 but got 13
 PASS Child frames do not report negative initial times 
 

I was able to reproduce this with 

run-webkit-tests --iterations 2000 --exit-after-n-failures 1 --exit-after-n-crashes-or-timeouts 1 --debug-rwt-logging --no-retry --force --no-build -f imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646566</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 11:09:50 -0700</bug_when>
    <thetext>We used to convert Performance::now() which is milliseconds to seconds in DOMWindow::nowTimestamp() and then we were converting these seconds back to milliseconds in serviceRequestAnimationFrameCallbacks(). So I thought we needed to round the timestamp to the nearest milliseconds.

When converting the timestamps from double to Seconds, I thought we do not need this rounding anymore. It turned out AnimationTimeline::bindingsCurrentTime() does similar rounding even with Seconds when it calls secondsToWebAnimationsAPITime().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646567</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 11:10:19 -0700</bug_when>
    <thetext>Reopen to attach a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646621</commentid>
    <comment_count>13</comment_count>
      <attachid>397873</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 12:37:48 -0700</bug_when>
    <thetext>Created attachment 397873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646711</commentid>
    <comment_count>14</comment_count>
      <attachid>397873</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-28 15:48:31 -0700</bug_when>
    <thetext>Comment on attachment 397873
Patch

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

&gt; Source/WTF/wtf/Seconds.h:62
&gt; +        auto milliseconds = std::round(this-&gt;microseconds()) / 1000;
&gt; +        if (milliseconds == -0)
&gt; +            return 0;
&gt; +        return milliseconds;

Now that I see that this is really a Web Animations-specific behavior, I&apos;m not sure it belongs here. I think a native roundedMilliseconds() that just returns std::round(milliseconds()) here is OK, but the -0 check is odd.

&gt; Source/WebCore/animation/AnimationEffect.cpp:337
&gt; -    computedTiming.delay = secondsToWebAnimationsAPITime(m_delay);
&gt; -    computedTiming.endDelay = secondsToWebAnimationsAPITime(m_endDelay);
&gt; +    computedTiming.delay = m_delay.roundedMilliseconds();
&gt; +    computedTiming.endDelay = m_endDelay.roundedMilliseconds();

I think you should keep secondsToWebAnimationsAPITime() and have it call roundedMilliseconds()

&gt; Source/WebCore/animation/AnimationTimeline.cpp:94
&gt;  Optional&lt;double&gt; AnimationTimeline::bindingsCurrentTime()

Should these return DOMHighResTimestamp (in a later patch)?

&gt; Source/WebCore/animation/DeclarativeAnimation.cpp:353
&gt;      auto event = createEvent(eventType, time, pseudoId, timelineTime);

So event time is in seconds I guess. So confusing.

&gt; Source/WebCore/animation/WebAnimation.cpp:364
&gt;  Optional&lt;double&gt; WebAnimation::bindingsCurrentTime() const

DOMHighResTimestamp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646777</commentid>
    <comment_count>15</comment_count>
      <attachid>397912</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 17:33:36 -0700</bug_when>
    <thetext>Created attachment 397912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646779</commentid>
    <comment_count>16</comment_count>
      <attachid>397912</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-28 17:40:05 -0700</bug_when>
    <thetext>Comment on attachment 397912
Patch

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

&gt; Source/WTF/wtf/Seconds.h:57
&gt; +    double roundedMilliseconds() const { return std::round(microseconds()) / 1000; }

This is milliseconds rounded to the nearest microsecond.

Rounding to the nearest millisecond would be:

    return std::round(microseconds() * 0.001);

Also, I think we prefer &quot;* 0.001&quot; over &quot;/ 1000&quot;.

So I think this needs a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646780</commentid>
    <comment_count>17</comment_count>
      <attachid>397873</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 17:42:25 -0700</bug_when>
    <thetext>Comment on attachment 397873
Patch

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

&gt;&gt; Source/WTF/wtf/Seconds.h:62
&gt;&gt; +        return milliseconds;
&gt; 
&gt; Now that I see that this is really a Web Animations-specific behavior, I&apos;m not sure it belongs here. I think a native roundedMilliseconds() that just returns std::round(milliseconds()) here is OK, but the -0 check is odd.

I removed the -0 check, but

Why is it Web Animations-specific behavior? The specs https://drafts.csswg.org/web-animations-1/#precision-of-time-values does not say we have to do it for Web Animations. Timestamps should be positive but the result of a floating point operations can be -0 which is also equal to +0. So ensuring the timestamp is always +ve is a good thing and it does not affect the result. Besides the test imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html checks whether the timestamp of the rAF is equal to the currentTime of the DocumentTimeline. So how we guarantee the two times are equal if we round them differently?

&gt;&gt; Source/WebCore/animation/AnimationEffect.cpp:337
&gt;&gt; +    computedTiming.endDelay = m_endDelay.roundedMilliseconds();
&gt; 
&gt; I think you should keep secondsToWebAnimationsAPITime() and have it call roundedMilliseconds()

Done.

&gt;&gt; Source/WebCore/animation/AnimationTimeline.cpp:94
&gt;&gt;  Optional&lt;double&gt; AnimationTimeline::bindingsCurrentTime()
&gt; 
&gt; Should these return DOMHighResTimestamp (in a later patch)?

Done.

&gt;&gt; Source/WebCore/animation/WebAnimation.cpp:364
&gt;&gt;  Optional&lt;double&gt; WebAnimation::bindingsCurrentTime() const
&gt; 
&gt; DOMHighResTimestamp?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646786</commentid>
    <comment_count>18</comment_count>
      <attachid>397912</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 18:01:17 -0700</bug_when>
    <thetext>Comment on attachment 397912
Patch

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

&gt;&gt; Source/WTF/wtf/Seconds.h:57
&gt;&gt; +    double roundedMilliseconds() const { return std::round(microseconds()) / 1000; }
&gt; 
&gt; This is milliseconds rounded to the nearest microsecond.
&gt; 
&gt; Rounding to the nearest millisecond would be:
&gt; 
&gt;     return std::round(microseconds() * 0.001);
&gt; 
&gt; Also, I think we prefer &quot;* 0.001&quot; over &quot;/ 1000&quot;.
&gt; 
&gt; So I think this needs a better name.

You are right. This calculation is not right even for exposing the timestamps to JavaScript. The timestamps are reduced resolution times to the nearest milliseconds; see Performance::now(). So it does not make sense to round them later to the nearest microsecond.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646846</commentid>
    <comment_count>19</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 22:38:37 -0700</bug_when>
    <thetext>I fixed the flakiness by putting std::round back in serviceRequestAnimationFrameCallbacks() since the Seconds::roundedMilliseconds() change is taking longer than I expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646847</commentid>
    <comment_count>20</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-28 22:39:02 -0700</bug_when>
    <thetext>The flakiness is fixed in:

Committed r260870: &lt;https://trac.webkit.org/changeset/260870&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397499</attachid>
            <date>2020-04-24 13:34:36 -0700</date>
            <delta_ts>2020-04-24 14:07:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200424133436.patch</filename>
            <type>text/plain</type>
            <size>15555</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIwLTA0LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgRE9NV2lu
ZG93Ojpub3dUaW1lc3RhbXAoKSB0byByZXR1cm4gU2Vjb25kcyBhbmQgY2hhbmdlIHRoZSBjYWxs
ZXJzCisgICAgICAgIGFjY29yZGluZ2x5LgorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c3VzcGVu
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1
cnJlbnRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNh
Y2hlQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZG9j
dW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGFuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRh
dGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1
YWxpdHkpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6bm93VGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZVRpbWVzdGFtcCBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIw
LTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IGlQYWQ6ICJQb2NrZXQgQ2l0eSIgaW50ZXJhY3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIHRyYWNr
cGFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1l
bnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnN1c3BlbmRBbmltYXRpb25zCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9jYWNoZWRDdXJyZW50VGltZSkKLSAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9
IFNlY29uZHMobGl2ZUN1cnJlbnRUaW1lKCkpOworICAgICAgICBtX2NhY2hlZEN1cnJlbnRUaW1l
ID0gbGl2ZUN1cnJlbnRUaW1lKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6
IG1fYW5pbWF0aW9ucykKICAgICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5kZWQodHJ1ZSk7CkBA
IC0yNzQsNyArMjc0LDcgQEAgdW5zaWduZWQgRG9jdW1lbnRUaW1lbGluZTo6bnVtYmVyT2ZBY3Rp
dgogICAgIHJldHVybiBjb3VudDsKIH0KIAotRE9NSGlnaFJlc1RpbWVTdGFtcCBEb2N1bWVudFRp
bWVsaW5lOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAorU2Vjb25kcyBEb2N1bWVudFRpbWVsaW5l
OjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvY3VtZW50LT5kb21X
aW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CkBAIC0yOTcsMTEgKzI5NywxMSBAQCBPcHRpb25h
bDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpjdXJyCiAgICAgcmV0dXJuIG1fY2FjaGVkQ3Vy
cmVudFRpbWUudmFsdWUoKSAtIG1fb3JpZ2luVGltZTsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVs
aW5lOjpjYWNoZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgbmV3Q3VycmVudFRpbWUp
Cit2b2lkIERvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUoU2Vjb25kcyBuZXdDdXJy
ZW50VGltZSkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAKLSAgICBtX2NhY2hlZEN1cnJl
bnRUaW1lID0gU2Vjb25kcyhuZXdDdXJyZW50VGltZSk7CisgICAgbV9jYWNoZWRDdXJyZW50VGlt
ZSA9IG5ld0N1cnJlbnRUaW1lOwogICAgIC8vIFdlIHdhbnQgdG8gYmUgc3VyZSB0byBrZWVwIHRo
aXMgdGltZSBjYWNoZWQgdW50aWwgd2UndmUgYm90aCBmaW5pc2hlZCBydW5uaW5nIEpTIGFuZCBm
aW5pc2hlZCB1cGRhdGluZwogICAgIC8vIGFuaW1hdGlvbnMsIHNvIHdlIHNjaGVkdWxlIHRoZSBp
bnZhbGlkYXRpb24gdGFzayBhbmQgcmVnaXN0ZXIgYSB3aGVuSWRsZSBjYWxsYmFjayBvbiB0aGUg
Vk0sIHdoaWNoIHdpbGwKICAgICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5u
aW5nLgpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6c2hvdWxkUnVu
VXBkYXRlQW4KICAgICByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCkgfHwgIW1fcGVuZGlu
Z0FuaW1hdGlvbkV2ZW50cy5pc0VtcHR5KCkgfHwgIW1fYWNjZWxlcmF0ZWRBbmltYXRpb25zUGVu
ZGluZ1J1bm5pbmdTdGF0ZUNoYW5nZS5pc0VtcHR5KCk7CiB9CiAKLURvY3VtZW50VGltZWxpbmU6
OlNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzIERvY3VtZW50VGltZWxpbmU6OmRv
Y3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hSZXNUaW1lU3Rh
bXAgdGltZXN0YW1wKQorRG9jdW1lbnRUaW1lbGluZTo6U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMgRG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9u
c0FuZFNlbmRFdmVudHMoU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgLy8gV2UgbmVlZCB0byBm
cmVlemUgdGhlIGN1cnJlbnQgdGltZSBldmVuIGlmIG5vIGFuaW1hdGlvbiBpcyBydW5uaW5nLgog
ICAgIC8vIGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lIG1heSBiZSBjYWxsZWQgZnJvbSBh
IHJBRiBjYWxsYmFjayBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRCYXNl
Jik7CiAgICAgCiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2
ZW50cyA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07Ci0gICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMgZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9N
SGlnaFJlc1RpbWVTdGFtcCk7CisgICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMgZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoU2Vjb25kcyk7CiAg
ICAgdm9pZCByZW1vdmVSZXBsYWNlZEFuaW1hdGlvbnMoKTsKICAgICBBbmltYXRpb25FdmVudHMg
cHJlcGFyZUZvclBlbmRpbmdBbmltYXRpb25FdmVudHNEaXNwYXRjaCgpOwogICAgIHZvaWQgZG9j
dW1lbnREaWRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwpAQCAtOTIsOSArOTIsOSBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50VGltZWxpbmUoRG9jdW1lbnQmLCBTZWNvbmRzKTsKIAog
ICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0OwotICAg
IERPTUhpZ2hSZXNUaW1lU3RhbXAgbGl2ZUN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgU2Vjb25k
cyBsaXZlQ3VycmVudFRpbWUoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9ucygpOwotICAgIHZvaWQgY2FjaGVDdXJyZW50VGltZShET01IaWdoUmVzVGlt
ZVN0YW1wKTsKKyAgICB2b2lkIGNhY2hlQ3VycmVudFRpbWUoU2Vjb25kcyk7CiAgICAgdm9pZCBt
YXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0
aW9uVGFza0lmTmVlZGVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6
ZGV0YWNoCiAgICAgICAgIG1fdGltZWxpbmVzLmJlZ2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgp
OwogfQogCi12b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9u
c0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3Vt
ZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoU2Vj
b25kcyB0aW1lc3RhbXApCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVsaW5lcy5oYXNOdWxsUmVmZXJl
bmNlcygpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9N
SGlnaFJlc1RpbWVTdGFtcC5oIgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAg
IHZvaWQgcmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAgIHZvaWQgZGV0YWNo
RnJvbURvY3VtZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhE
T01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKFNlY29uZHMpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbmltYXRpb25zVG9Qcm9jZXNz
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSw3ICs2
MzcxLDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25DbwogICAgICAg
ICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2tzKFNlY29uZHMgdGltZXN0YW1wKQogewogICAgIGlmIChtX3NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcikKICAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKQEAg
LTc2MjIsOCArNzYyMiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlvbk9ic2Vy
dmEKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX2ludGVyc2VjdGlvbk9ic2Vy
dmVycykgewogICAgICAgICBib29sIG5lZWROb3RpZnkgPSBmYWxzZTsKLSAgICAgICAgRE9NSGln
aFJlc1RpbWVTdGFtcCB0aW1lc3RhbXA7Ci0gICAgICAgIGlmICghb2JzZXJ2ZXItPmNyZWF0ZVRp
bWVzdGFtcCh0aW1lc3RhbXApKQorICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IG9ic2VydmVyLT5j
cmVhdGVUaW1lc3RhbXAoKTsKKyAgICAgICAgaWYgKCF0aW1lc3RhbXApCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZm9yIChFbGVtZW50KiB0YXJnZXQgOiBvYnNlcnZlci0+b2JzZXJ2
YXRpb25UYXJnZXRzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHRhcmdldFJlZ2lzdHJhdGlvbnMg
PSB0YXJnZXQtPmludGVyc2VjdGlvbk9ic2VydmVyRGF0YUlmRXhpc3RzKCktPnJlZ2lzdHJhdGlv
bnM7CkBAIC03Njc2LDcgKzc2NzYsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rp
b25PYnNlcnZhCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIt
PmFwcGVuZFF1ZXVlZEVudHJ5KEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OmNyZWF0ZSh7Ci0g
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgKCp0aW1l
c3RhbXApLm1pbGxpc2Vjb25kcygpLAogICAgICAgICAgICAgICAgICAgICByZXBvcnRlZFJvb3RC
b3VuZHMsCiAgICAgICAgICAgICAgICAgICAgIHsgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lngo
KSwgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0LnkoKSwgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0
LndpZHRoKCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQoKSB9LAogICAgICAgICAg
ICAgICAgICAgICB7IGNsaWVudEludGVyc2VjdGlvblJlY3QueCgpLCBjbGllbnRJbnRlcnNlY3Rp
b25SZWN0LnkoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC53aWR0aCgpLCBjbGllbnRJbnRlcnNl
Y3Rpb25SZWN0LmhlaWdodCgpIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwODAsNyArMTA4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogCi0gICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKERPTUhpZ2hSZXNUaW1lU3RhbXApOworICAgIHZvaWQgc2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhTZWNvbmRzKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTQgKzE5MywxNCBAQCB2b2lkIFNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsCiAgICAgfQogfQogCi12b2lkIFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFNlY29u
ZHMgdGltZXN0YW1wKQogewogICAgIGlmICghbV9jYWxsYmFja3Muc2l6ZSgpIHx8IG1fc3VzcGVu
ZENvdW50IHx8ICFyZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFJBRkNhbGxiYWNrU3RhcnQsIFJBRkNh
bGxiYWNrRW5kKTsKIAotICAgIGF1dG8gaGlnaFJlc05vd01zID0gc3RkOjpyb3VuZCgxMDAwICog
dGltZXN0YW1wKTsKKyAgICBhdXRvIGhpZ2hSZXNOb3dNcyA9IHRpbWVzdGFtcC5taWxsaXNlY29u
ZHMoKTsKICAgICBpZiAobV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5xdWlya3MoKS5uZWVkc01p
bGxpc2Vjb25kUmVzb2x1dGlvbkZvckhpZ2hSZXNUaW1lU3RhbXAoKSkKICAgICAgICAgaGlnaFJl
c05vd01zICs9IDAuMTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyOjpzY2hlZHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Vjb25kcyBhbmlt
YXRpb25JbnRlcnZhbCA9IGludGVydmFsKCk7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0g
c3RkOjptYXgoYW5pbWF0aW9uSW50ZXJ2YWwgLSBTZWNvbmRzKG1fZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT5ub3dUaW1lc3RhbXAoKSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9z
KTsKKyAgICBTZWNvbmRzIHNjaGVkdWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZh
bCAtIChtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkgLSBtX2xhc3RBbmlt
YXRpb25GcmFtZVRpbWVzdGFtcCksIDBfcyk7CiAKICAgICBpZiAoaXNUaHJvdHRsZWQoKSkgewog
ICAgICAgICAvLyBGSVhNRTogbm90IGlkZWFsIHRvIHNuYXBzaG90IHRpbWUgYm90aCBpbiBub3co
KSBhbmQgbm93VGltZXN0YW1wKCksIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggYWxzbyBoYXMgcmVkdWNl
ZCByZXNvbHV0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIENhbGxiYWNrSWQgcmVnaXN0ZXJDYWxsYmFjayhSZWY8
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgY2FuY2VsQ2FsbGJh
Y2soQ2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tzKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0YW1wKTsKKyAgICB2b2lkIHNlcnZpY2VS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoU2Vjb25kcyB0aW1lc3RhbXApOwogCiAgICAg
dm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAKICAgICBUaW1lciBtX2FuaW1h
dGlvblRpbWVyOwotICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCB7IDAg
fTsKKyAgICBTZWNvbmRzIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wIHsgMCB9OwogCiAj
aWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBPcHRp
b25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbV90aHJvdHRsaW5nUmVhc29uczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzExMCw3ICs3MTEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVSYXRlQ2hh
bmdlUgogUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBIVE1MTWVkaWFFbGVtZW50OjpnZXRW
aWRlb1BsYXliYWNrUXVhbGl0eSgpCiB7CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93
ID0gZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0gZG9tV2lu
ZG93ID8gMTAwMCAqIGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkgOiAwOworICAgIGRvdWJsZSB0
aW1lc3RhbXAgPSBkb21XaW5kb3cgPyBkb21XaW5kb3ctPm5vd1RpbWVzdGFtcCgpLm1pbGxpc2Vj
b25kcygpIDogMDsKIAogICAgIGF1dG8gbWV0cmljcyA9IG1fcGxheWVyID8gbV9wbGF5ZXItPnZp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIDogV1RGOjpudWxsb3B0OwogICAgIGlmICghbWV0
cmljcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI2MDU1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzM1LDkgKzczNSw5IEBAIFBlcmZvcm1hbmNlJiBET01XaW5kb3c6OnBlcmZvcm1hbmNlKCkgY28K
ICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKLWRvdWJsZSBET01XaW5kb3c6Om5vd1Rp
bWVzdGFtcCgpIGNvbnN0CitTZWNvbmRzIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGVyZm9ybWFuY2UoKS5ub3coKSAvIDEwMDAuOworICAgIHJldHVybiBT
ZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHBlcmZvcm1hbmNlKCkubm93KCkpOwogfQogCiBMb2Nh
dGlvbiYgRE9NV2luZG93Ojpsb2NhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFBl
cmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJs
ZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZWNvbmRzIG5vd1Rp
bWVzdGFtcCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGlu
Y3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDIxICsyNDQsMjEgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdERl
c3Ryb3llZAogICAgIG1fcm9vdCA9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXI6OmNyZWF0ZVRpbWVzdGFtcChET01IaWdoUmVzVGltZVN0YW1wJiB0aW1lc3RhbXApIGNv
bnN0CitPcHRpb25hbDxTZWNvbmRzPiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0
YW1wKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FsbGJhY2spCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBt
X2NhbGxiYWNrLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAg
ICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3Vt
ZW50LmRvbVdpbmRvdygpKSB7Ci0gICAgICAgIHRpbWVzdGFtcCA9ICB3aW5kb3ctPnBlcmZvcm1h
bmNlKCkubm93KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygpKQorICAgICAg
ICByZXR1cm4gd2luZG93LT5ub3dUaW1lc3RhbXAoKTsKKyAgICAKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjphcHBlbmRRdWV1ZWRFbnRy
eShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4mJiBlbnRyeSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgJKHJldmlzaW9uIDI2MDU1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPYnNlcnZhdGlvblRhcmdl
dHMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmF0aW9uVGFyZ2V0cy5zaXplKCk7IH0KICAgICB2
b2lkIHJvb3REZXN0cm95ZWQoKTsKIAotICAgIGJvb2wgY3JlYXRlVGltZXN0YW1wKERPTUhpZ2hS
ZXNUaW1lU3RhbXAmKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjcmVhdGVUaW1lc3Rh
bXAoKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlv
bk9ic2VydmVyRW50cnk+JiYpOwogICAgIHZvaWQgbm90aWZ5KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewog
ICAgICAgICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRv
dygpLT5ub3dUaW1lc3RhbXAoKTsKKyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBkb2N1bWVudC5k
b21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXND
b250cm9sbGVyID0gZG9jdW1lbnQudGltZWxpbmVzQ29udHJvbGxlcigpKQogICAgICAgICAgICAg
dGltZWxpbmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHModGltZXN0
YW1wKTsKICAgICAgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVwcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397506</attachid>
            <date>2020-04-24 14:07:15 -0700</date>
            <delta_ts>2020-04-24 22:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200424140714.patch</filename>
            <type>text/plain</type>
            <size>17027</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIwLTA0LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgRE9NV2lu
ZG93Ojpub3dUaW1lc3RhbXAoKSB0byByZXR1cm4gU2Vjb25kcyBhbmQgY2hhbmdlIHRoZSBjYWxs
ZXJzCisgICAgICAgIGFjY29yZGluZ2x5LgorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c3VzcGVu
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1
cnJlbnRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNh
Y2hlQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZG9j
dW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGFuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRh
dGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1
YWxpdHkpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6bm93VGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZVRpbWVzdGFtcCBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorCiAyMDIw
LTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IGlQYWQ6ICJQb2NrZXQgQ2l0eSIgaW50ZXJhY3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIHRyYWNr
cGFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1l
bnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnN1c3BlbmRBbmltYXRpb25zCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9jYWNoZWRDdXJyZW50VGltZSkKLSAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9
IFNlY29uZHMobGl2ZUN1cnJlbnRUaW1lKCkpOworICAgICAgICBtX2NhY2hlZEN1cnJlbnRUaW1l
ID0gbGl2ZUN1cnJlbnRUaW1lKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6
IG1fYW5pbWF0aW9ucykKICAgICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5kZWQodHJ1ZSk7CkBA
IC0yNzQsNyArMjc0LDcgQEAgdW5zaWduZWQgRG9jdW1lbnRUaW1lbGluZTo6bnVtYmVyT2ZBY3Rp
dgogICAgIHJldHVybiBjb3VudDsKIH0KIAotRE9NSGlnaFJlc1RpbWVTdGFtcCBEb2N1bWVudFRp
bWVsaW5lOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAorU2Vjb25kcyBEb2N1bWVudFRpbWVsaW5l
OjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvY3VtZW50LT5kb21X
aW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CkBAIC0yOTcsMTEgKzI5NywxMSBAQCBPcHRpb25h
bDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpjdXJyCiAgICAgcmV0dXJuIG1fY2FjaGVkQ3Vy
cmVudFRpbWUudmFsdWUoKSAtIG1fb3JpZ2luVGltZTsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVs
aW5lOjpjYWNoZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgbmV3Q3VycmVudFRpbWUp
Cit2b2lkIERvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUoU2Vjb25kcyBuZXdDdXJy
ZW50VGltZSkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAKLSAgICBtX2NhY2hlZEN1cnJl
bnRUaW1lID0gU2Vjb25kcyhuZXdDdXJyZW50VGltZSk7CisgICAgbV9jYWNoZWRDdXJyZW50VGlt
ZSA9IG5ld0N1cnJlbnRUaW1lOwogICAgIC8vIFdlIHdhbnQgdG8gYmUgc3VyZSB0byBrZWVwIHRo
aXMgdGltZSBjYWNoZWQgdW50aWwgd2UndmUgYm90aCBmaW5pc2hlZCBydW5uaW5nIEpTIGFuZCBm
aW5pc2hlZCB1cGRhdGluZwogICAgIC8vIGFuaW1hdGlvbnMsIHNvIHdlIHNjaGVkdWxlIHRoZSBp
bnZhbGlkYXRpb24gdGFzayBhbmQgcmVnaXN0ZXIgYSB3aGVuSWRsZSBjYWxsYmFjayBvbiB0aGUg
Vk0sIHdoaWNoIHdpbGwKICAgICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5u
aW5nLgpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6c2hvdWxkUnVu
VXBkYXRlQW4KICAgICByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCkgfHwgIW1fcGVuZGlu
Z0FuaW1hdGlvbkV2ZW50cy5pc0VtcHR5KCkgfHwgIW1fYWNjZWxlcmF0ZWRBbmltYXRpb25zUGVu
ZGluZ1J1bm5pbmdTdGF0ZUNoYW5nZS5pc0VtcHR5KCk7CiB9CiAKLURvY3VtZW50VGltZWxpbmU6
OlNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzIERvY3VtZW50VGltZWxpbmU6OmRv
Y3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hSZXNUaW1lU3Rh
bXAgdGltZXN0YW1wKQorRG9jdW1lbnRUaW1lbGluZTo6U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMgRG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9u
c0FuZFNlbmRFdmVudHMoU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgLy8gV2UgbmVlZCB0byBm
cmVlemUgdGhlIGN1cnJlbnQgdGltZSBldmVuIGlmIG5vIGFuaW1hdGlvbiBpcyBydW5uaW5nLgog
ICAgIC8vIGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lIG1heSBiZSBjYWxsZWQgZnJvbSBh
IHJBRiBjYWxsYmFjayBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRCYXNl
Jik7CiAgICAgCiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2
ZW50cyA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07Ci0gICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMgZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9N
SGlnaFJlc1RpbWVTdGFtcCk7CisgICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMgZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoU2Vjb25kcyk7CiAg
ICAgdm9pZCByZW1vdmVSZXBsYWNlZEFuaW1hdGlvbnMoKTsKICAgICBBbmltYXRpb25FdmVudHMg
cHJlcGFyZUZvclBlbmRpbmdBbmltYXRpb25FdmVudHNEaXNwYXRjaCgpOwogICAgIHZvaWQgZG9j
dW1lbnREaWRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwpAQCAtOTIsOSArOTIsOSBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50VGltZWxpbmUoRG9jdW1lbnQmLCBTZWNvbmRzKTsKIAog
ICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0OwotICAg
IERPTUhpZ2hSZXNUaW1lU3RhbXAgbGl2ZUN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgU2Vjb25k
cyBsaXZlQ3VycmVudFRpbWUoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9ucygpOwotICAgIHZvaWQgY2FjaGVDdXJyZW50VGltZShET01IaWdoUmVzVGlt
ZVN0YW1wKTsKKyAgICB2b2lkIGNhY2hlQ3VycmVudFRpbWUoU2Vjb25kcyk7CiAgICAgdm9pZCBt
YXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0
aW9uVGFza0lmTmVlZGVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6
ZGV0YWNoCiAgICAgICAgIG1fdGltZWxpbmVzLmJlZ2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgp
OwogfQogCi12b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9u
c0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3Vt
ZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoU2Vj
b25kcyB0aW1lc3RhbXApCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVsaW5lcy5oYXNOdWxsUmVmZXJl
bmNlcygpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9N
SGlnaFJlc1RpbWVTdGFtcC5oIgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAg
IHZvaWQgcmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAgIHZvaWQgZGV0YWNo
RnJvbURvY3VtZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhE
T01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKFNlY29uZHMpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbmltYXRpb25zVG9Qcm9jZXNz
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSw3ICs2
MzcxLDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25DbwogICAgICAg
ICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2tzKFNlY29uZHMgdGltZXN0YW1wKQogewogICAgIGlmIChtX3NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcikKICAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKQEAg
LTc2MjIsOCArNzYyMiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlvbk9ic2Vy
dmEKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX2ludGVyc2VjdGlvbk9ic2Vy
dmVycykgewogICAgICAgICBib29sIG5lZWROb3RpZnkgPSBmYWxzZTsKLSAgICAgICAgRE9NSGln
aFJlc1RpbWVTdGFtcCB0aW1lc3RhbXA7Ci0gICAgICAgIGlmICghb2JzZXJ2ZXItPmNyZWF0ZVRp
bWVzdGFtcCh0aW1lc3RhbXApKQorICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IG9ic2VydmVyLT5j
cmVhdGVUaW1lc3RhbXAoKTsKKyAgICAgICAgaWYgKCF0aW1lc3RhbXApCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZm9yIChFbGVtZW50KiB0YXJnZXQgOiBvYnNlcnZlci0+b2JzZXJ2
YXRpb25UYXJnZXRzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHRhcmdldFJlZ2lzdHJhdGlvbnMg
PSB0YXJnZXQtPmludGVyc2VjdGlvbk9ic2VydmVyRGF0YUlmRXhpc3RzKCktPnJlZ2lzdHJhdGlv
bnM7CkBAIC03Njc2LDcgKzc2NzYsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rp
b25PYnNlcnZhCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIt
PmFwcGVuZFF1ZXVlZEVudHJ5KEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OmNyZWF0ZSh7Ci0g
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgKCp0aW1l
c3RhbXApLm1pbGxpc2Vjb25kcygpLAogICAgICAgICAgICAgICAgICAgICByZXBvcnRlZFJvb3RC
b3VuZHMsCiAgICAgICAgICAgICAgICAgICAgIHsgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lngo
KSwgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0LnkoKSwgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0
LndpZHRoKCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQoKSB9LAogICAgICAgICAg
ICAgICAgICAgICB7IGNsaWVudEludGVyc2VjdGlvblJlY3QueCgpLCBjbGllbnRJbnRlcnNlY3Rp
b25SZWN0LnkoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC53aWR0aCgpLCBjbGllbnRJbnRlcnNl
Y3Rpb25SZWN0LmhlaWdodCgpIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwODAsNyArMTA4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogCi0gICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKERPTUhpZ2hSZXNUaW1lU3RhbXApOworICAgIHZvaWQgc2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhTZWNvbmRzKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTQgKzE5MywxNCBAQCB2b2lkIFNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsCiAgICAgfQogfQogCi12b2lkIFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFNlY29u
ZHMgdGltZXN0YW1wKQogewogICAgIGlmICghbV9jYWxsYmFja3Muc2l6ZSgpIHx8IG1fc3VzcGVu
ZENvdW50IHx8ICFyZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKFJBRkNhbGxiYWNrU3RhcnQsIFJBRkNh
bGxiYWNrRW5kKTsKIAotICAgIGF1dG8gaGlnaFJlc05vd01zID0gc3RkOjpyb3VuZCgxMDAwICog
dGltZXN0YW1wKTsKKyAgICBhdXRvIGhpZ2hSZXNOb3dNcyA9IHRpbWVzdGFtcC5taWxsaXNlY29u
ZHMoKTsKICAgICBpZiAobV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5xdWlya3MoKS5uZWVkc01p
bGxpc2Vjb25kUmVzb2x1dGlvbkZvckhpZ2hSZXNUaW1lU3RhbXAoKSkKICAgICAgICAgaGlnaFJl
c05vd01zICs9IDAuMTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyOjpzY2hlZHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Vjb25kcyBhbmlt
YXRpb25JbnRlcnZhbCA9IGludGVydmFsKCk7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0g
c3RkOjptYXgoYW5pbWF0aW9uSW50ZXJ2YWwgLSBTZWNvbmRzKG1fZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT5ub3dUaW1lc3RhbXAoKSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9z
KTsKKyAgICBTZWNvbmRzIHNjaGVkdWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZh
bCAtIChtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkgLSBtX2xhc3RBbmlt
YXRpb25GcmFtZVRpbWVzdGFtcCksIDBfcyk7CiAKICAgICBpZiAoaXNUaHJvdHRsZWQoKSkgewog
ICAgICAgICAvLyBGSVhNRTogbm90IGlkZWFsIHRvIHNuYXBzaG90IHRpbWUgYm90aCBpbiBub3co
KSBhbmQgbm93VGltZXN0YW1wKCksIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggYWxzbyBoYXMgcmVkdWNl
ZCByZXNvbHV0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIENhbGxiYWNrSWQgcmVnaXN0ZXJDYWxsYmFjayhSZWY8
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgY2FuY2VsQ2FsbGJh
Y2soQ2FsbGJhY2tJZCk7Ci0gICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tzKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0YW1wKTsKKyAgICB2b2lkIHNlcnZpY2VS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoU2Vjb25kcyB0aW1lc3RhbXApOwogCiAgICAg
dm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAKICAgICBUaW1lciBtX2FuaW1h
dGlvblRpbWVyOwotICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCB7IDAg
fTsKKyAgICBTZWNvbmRzIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wIHsgMCB9OwogCiAj
aWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBPcHRp
b25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbV90aHJvdHRsaW5nUmVhc29uczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzExMCw3ICs3MTEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVSYXRlQ2hh
bmdlUgogUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBIVE1MTWVkaWFFbGVtZW50OjpnZXRW
aWRlb1BsYXliYWNrUXVhbGl0eSgpCiB7CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93
ID0gZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0gZG9tV2lu
ZG93ID8gMTAwMCAqIGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkgOiAwOworICAgIGRvdWJsZSB0
aW1lc3RhbXAgPSBkb21XaW5kb3cgPyBkb21XaW5kb3ctPm5vd1RpbWVzdGFtcCgpLm1pbGxpc2Vj
b25kcygpIDogMDsKIAogICAgIGF1dG8gbWV0cmljcyA9IG1fcGxheWVyID8gbV9wbGF5ZXItPnZp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIDogV1RGOjpudWxsb3B0OwogICAgIGlmICghbWV0
cmljcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI2MDU1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzM1LDkgKzczNSw5IEBAIFBlcmZvcm1hbmNlJiBET01XaW5kb3c6OnBlcmZvcm1hbmNlKCkgY28K
ICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKLWRvdWJsZSBET01XaW5kb3c6Om5vd1Rp
bWVzdGFtcCgpIGNvbnN0CitTZWNvbmRzIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGVyZm9ybWFuY2UoKS5ub3coKSAvIDEwMDAuOworICAgIHJldHVybiBT
ZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHBlcmZvcm1hbmNlKCkubm93KCkpOwogfQogCiBMb2Nh
dGlvbiYgRE9NV2luZG93Ojpsb2NhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFBl
cmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJs
ZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZWNvbmRzIG5vd1Rp
bWVzdGFtcCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGlu
Y3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDIxICsyNDQsMjEgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdERl
c3Ryb3llZAogICAgIG1fcm9vdCA9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXI6OmNyZWF0ZVRpbWVzdGFtcChET01IaWdoUmVzVGltZVN0YW1wJiB0aW1lc3RhbXApIGNv
bnN0CitPcHRpb25hbDxTZWNvbmRzPiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0
YW1wKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FsbGJhY2spCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBt
X2NhbGxiYWNrLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAg
ICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3Vt
ZW50LmRvbVdpbmRvdygpKSB7Ci0gICAgICAgIHRpbWVzdGFtcCA9ICB3aW5kb3ctPnBlcmZvcm1h
bmNlKCkubm93KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygpKQorICAgICAg
ICByZXR1cm4gd2luZG93LT5ub3dUaW1lc3RhbXAoKTsKKyAgICAKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjphcHBlbmRRdWV1ZWRFbnRy
eShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4mJiBlbnRyeSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgJKHJldmlzaW9uIDI2MDU1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPYnNlcnZhdGlvblRhcmdl
dHMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmF0aW9uVGFyZ2V0cy5zaXplKCk7IH0KICAgICB2
b2lkIHJvb3REZXN0cm95ZWQoKTsKIAotICAgIGJvb2wgY3JlYXRlVGltZXN0YW1wKERPTUhpZ2hS
ZXNUaW1lU3RhbXAmKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjcmVhdGVUaW1lc3Rh
bXAoKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlv
bk9ic2VydmVyRW50cnk+JiYpOwogICAgIHZvaWQgbm90aWZ5KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewog
ICAgICAgICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRv
dygpLT5ub3dUaW1lc3RhbXAoKTsKKyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBkb2N1bWVudC5k
b21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXND
b250cm9sbGVyID0gZG9jdW1lbnQudGltZWxpbmVzQ29udHJvbGxlcigpKQogICAgICAgICAgICAg
dGltZWxpbmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHModGltZXN0
YW1wKTsKICAgICAgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVwcy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA2NjYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTI0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBz
dGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp0aW1lc3RhbXAgY29uc3QpOgorCiAyMDIw
LTA0LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgSVBD
OjpEZWNvZGVyIHNob3VsZCB1c2UgY3JlYXRlKCkgcGF0dGVybgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3Jk
aW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCShyZXZpc2lv
biAyNjA1NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODAsNyArMTgwLDcgQEAgZG91YmxlIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnRpbWVzdGFtcAog
ICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IGRvY3VtZW50LT5kb21XaW5kb3coKSA/IGRvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0
YW1wKCkgOiBkb2N1bWVudC0+bW9ub3RvbmljVGltZXN0YW1wKCk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50LT5kb21XaW5kb3coKSA/IGRvY3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCku
c2Vjb25kcygpIDogZG9jdW1lbnQtPm1vbm90b25pY1RpbWVzdGFtcCgpOwogfQogCiB2b2lkIENv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OnN5bmNEaXNwbGF5U3RhdGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397542</attachid>
            <date>2020-04-24 22:58:00 -0700</date>
            <delta_ts>2020-04-25 00:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200424225758.patch</filename>
            <type>text/plain</type>
            <size>25237</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA0LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIERPTVdpbmRv
dzo6bm93VGltZXN0YW1wKCkgcmV0dXJuIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBhbmQgY2hh
bmdlCisgICAgICAgIHRoZSBjYWxsZXJzIGFjY29yZGluZ2x5LiBSZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMgaXMgYSBuZXcgdHlwZSBidXQgaXQncworICAgICAgICBqdXN0IGFuIGFsaWFzIG9mIHRo
ZSB0eXBlIFNlY29uZHMuIEl0IGluZGljYXRlcyB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZQorICAg
ICAgICBpcyBhIHdlYi1zYWZlIHNlY29uZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c3VzcGVuZEFuaW1hdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1cnJlbnRUaW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxs
VXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBhbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJbnRlcnNl
Y3Rpb25PYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6bm93VGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAg
ICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVJlbmRlcmluZyk6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZTo6bm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpub3dJblJl
ZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBjb25zdCk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5j
ZS5oOgorICAgICAgICAqIHBhZ2UvUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmg6IEFkZGVkLgor
CiAyMDIwLTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIGlQYWQ6ICJQb2NrZXQgQ2l0eSIgaW50ZXJhY3Rpb24gZG9lcyBub3Qgd29yayB3aXRo
IHRyYWNrcGFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NTAsNiAr
MTc1MCw3IEBACiAJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUIx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJCTU1NkM3QzRCMjIx
MjM5OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NkM3QzQ3MjIxMjM5NDIwMDlCMDZD
QSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTc2QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1h
Z2VGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTg0NzY1QTI0NTNGMzM0MDA5RjU1
MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEz
MzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFEMDkzRTI0MDg5NjM1MDBE
RTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODcz
Nyw2ICs4NzM4LDcgQEAKIAkJNTU2QzdDNDkyMjEyMzk0MzAwOUIwNkNBIC8qIFJlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJl
c29sdXRpb25TZWNvbmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RkNDQjIwNzZDMDY4MDBEMzVC
QjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQmFja2luZ1N0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA1Miw2ICsyMTA1NCw3IEBACiAJCQkJ
RTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJQ0Q5
QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVE
NkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAorCQkJCTU1ODQ3NjU4MjQ1M0FCQzIwMDlGNTUw
QyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAw
NzEwNjM4IC8qIFJlbW90ZURPTVdpbmRvdy5pZGwgKi8sCkBAIC0zMjQwMSw2ICszMjQwNCw3IEBA
CiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNFRUU0MzYxRjVGOEYyMTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTU4NDc2NUEyNDUzRjMzNDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTgzMUFFNEExNTQyMjVDOTAwRkUyNjQ0
IC8qIFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkI5OTk4RjE4MDNBRTcy
MDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAkocmV2aXNpb24g
MjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5l
OjpzdXNwZW5kQW5pbWF0aW9ucwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY2FjaGVk
Q3VycmVudFRpbWUpCi0gICAgICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBTZWNvbmRzKGxpdmVD
dXJyZW50VGltZSgpKTsKKyAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IGxpdmVDdXJyZW50
VGltZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMp
CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0U3VzcGVuZGVkKHRydWUpOwpAQCAtMjc0LDcgKzI3NCw3
IEBAIHVuc2lnbmVkIERvY3VtZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXYKICAgICByZXR1cm4g
Y291bnQ7CiB9CiAKLURPTUhpZ2hSZXNUaW1lU3RhbXAgRG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1
cnJlbnRUaW1lKCkgY29uc3QKK1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBEb2N1bWVudFRpbWVs
aW5lOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvY3VtZW50LT5k
b21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CkBAIC0yOTcsMTEgKzI5NywxMSBAQCBPcHRp
b25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpjdXJyCiAgICAgcmV0dXJuIG1fY2FjaGVk
Q3VycmVudFRpbWUudmFsdWUoKSAtIG1fb3JpZ2luVGltZTsKIH0KIAotdm9pZCBEb2N1bWVudFRp
bWVsaW5lOjpjYWNoZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgbmV3Q3VycmVudFRp
bWUpCit2b2lkIERvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUoUmVkdWNlZFJlc29s
dXRpb25TZWNvbmRzIG5ld0N1cnJlbnRUaW1lKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsK
IAotICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBTZWNvbmRzKG5ld0N1cnJlbnRUaW1lKTsKKyAg
ICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gbmV3Q3VycmVudFRpbWU7CiAgICAgLy8gV2Ugd2FudCB0
byBiZSBzdXJlIHRvIGtlZXAgdGhpcyB0aW1lIGNhY2hlZCB1bnRpbCB3ZSd2ZSBib3RoIGZpbmlz
aGVkIHJ1bm5pbmcgSlMgYW5kIGZpbmlzaGVkIHVwZGF0aW5nCiAgICAgLy8gYW5pbWF0aW9ucywg
c28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBhIHdoZW5J
ZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3luY3Jvbm91
c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjpzaG91bGRSdW5VcGRhdGVBbgogICAgIHJldHVybiAhbV9hbmltYXRpb25zLmlz
RW1wdHkoKSB8fCAhbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmlzRW1wdHkoKSB8fCAhbV9hY2Nl
bGVyYXRlZEFuaW1hdGlvbnNQZW5kaW5nUnVubmluZ1N0YXRlQ2hhbmdlLmlzRW1wdHkoKTsKIH0K
IAotRG9jdW1lbnRUaW1lbGluZTo6U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMg
RG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApCitEb2N1bWVudFRpbWVsaW5lOjpTaG91
bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyBEb2N1bWVudFRpbWVsaW5lOjpkb2N1bWVu
dFdpbGxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2VkUmVzb2x1dGlvblNlY29u
ZHMgdGltZXN0YW1wKQogewogICAgIC8vIFdlIG5lZWQgdG8gZnJlZXplIHRoZSBjdXJyZW50IHRp
bWUgZXZlbiBpZiBubyBhbmltYXRpb24gaXMgcnVubmluZy4KICAgICAvLyBkb2N1bWVudC50aW1l
bGluZS5jdXJyZW50VGltZSBtYXkgYmUgY2FsbGVkIGZyb20gYSByQUYgY2FsbGJhY2sgYW5kCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBbmltYXRpb25U
aW1lbGluZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmVPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgorI2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgpAQCAtNzQsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1
ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRCYXNlJik7CiAgICAgCiAgICAgZW51bSBj
bGFzcyBTaG91bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyA6IHVpbnQ4X3QgeyBZZXMs
IE5vIH07Ci0gICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgZG9jdW1lbnRX
aWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1RpbWVTdGFtcCk7Cisg
ICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgZG9jdW1lbnRXaWxsVXBkYXRl
QW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKICAgICB2
b2lkIHJlbW92ZVJlcGxhY2VkQW5pbWF0aW9ucygpOwogICAgIEFuaW1hdGlvbkV2ZW50cyBwcmVw
YXJlRm9yUGVuZGluZ0FuaW1hdGlvbkV2ZW50c0Rpc3BhdGNoKCk7CiAgICAgdm9pZCBkb2N1bWVu
dERpZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CkBAIC05Miw5ICs5Myw5IEBAIHBy
aXZhdGU6CiAgICAgRG9jdW1lbnRUaW1lbGluZShEb2N1bWVudCYsIFNlY29uZHMpOwogCiAgICAg
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7Ci0gICAgRE9N
SGlnaFJlc1RpbWVTdGFtcCBsaXZlQ3VycmVudFRpbWUoKSBjb25zdDsKKyAgICBSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMgbGl2ZUN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseVBl
bmRpbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKTsKLSAgICB2b2lkIGNhY2hlQ3VycmVudFRpbWUo
RE9NSGlnaFJlc1RpbWVTdGFtcCk7CisgICAgdm9pZCBjYWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcyk7CiAgICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUo
KTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoCiAgICAgICAgIG1fdGltZWxpbmVz
LmJlZ2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgpOwogfQogCi12b2lkIERvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBk
YXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVz
dGFtcCkKIHsKICAgICBBU1NFUlQoIW1fdGltZWxpbmVzLmhhc051bGxSZWZlcmVuY2VzKCkpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01IaWdoUmVzVGlt
ZVN0YW1wLmgiCisjaW5jbHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVk
ZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAgIHZvaWQgZGV0
YWNoRnJvbURvY3VtZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5k
RXZlbnRzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IEFuaW1hdGlvbnNUb1Byb2Nlc3MgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzcxLDcgKzYzNzEsNyBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbkNvCiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZXN1
bWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrcyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgRG9jdW1lbnQ6OnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzIHRpbWVzdGFtcCkKIHsKICAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIp
CiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CkBAIC03NjIyLDggKzc2MjIsOCBAQCB2
b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhCiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnMpIHsKICAgICAgICAgYm9v
bCBuZWVkTm90aWZ5ID0gZmFsc2U7Ci0gICAgICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0
YW1wOwotICAgICAgICBpZiAoIW9ic2VydmVyLT5jcmVhdGVUaW1lc3RhbXAodGltZXN0YW1wKSkK
KyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBvYnNlcnZlci0+bm93VGltZXN0YW1wKCk7CisgICAg
ICAgIGlmICghdGltZXN0YW1wKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAo
RWxlbWVudCogdGFyZ2V0IDogb2JzZXJ2ZXItPm9ic2VydmF0aW9uVGFyZ2V0cygpKSB7CiAgICAg
ICAgICAgICBhdXRvJiB0YXJnZXRSZWdpc3RyYXRpb25zID0gdGFyZ2V0LT5pbnRlcnNlY3Rpb25P
YnNlcnZlckRhdGFJZkV4aXN0cygpLT5yZWdpc3RyYXRpb25zOwpAQCAtNzY3Niw3ICs3Njc2LDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YQogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIG9ic2VydmVyLT5hcHBlbmRRdWV1ZWRFbnRyeShJbnRl
cnNlY3Rpb25PYnNlcnZlckVudHJ5OjpjcmVhdGUoewotICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXAsCisgICAgICAgICAgICAgICAgICAgICgqdGltZXN0YW1wKS5taWxsaXNlY29uZHMoKSwK
ICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWRSb290Qm91bmRzLAogICAgICAgICAgICAgICAg
ICAgICB7IHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC54KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50
UmVjdC55KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCgpLCB0YXJnZXRCb3VuZGlu
Z0NsaWVudFJlY3QuaGVpZ2h0KCkgfSwKICAgICAgICAgICAgICAgICAgICAgeyBjbGllbnRJbnRl
cnNlY3Rpb25SZWN0LngoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC55KCksIGNsaWVudEludGVy
c2VjdGlvblJlY3Qud2lkdGgoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSB9LApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgwLDcgKzEwODAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJh
Y2tzKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFj
a3MoKTsKIAotICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhE
T01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKIAogICAgIHZvaWQgd2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTQgKzE5MywxNCBAQCB2b2lkIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsCiAgICAgfQogfQogCi12b2lkIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhE
T01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNv
bHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgaWYgKCFtX2NhbGxiYWNrcy5zaXplKCkg
fHwgbV9zdXNwZW5kQ291bnQgfHwgIXJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoUkFGQ2FsbGJhY2tT
dGFydCwgUkFGQ2FsbGJhY2tFbmQpOwogCi0gICAgYXV0byBoaWdoUmVzTm93TXMgPSBzdGQ6OnJv
dW5kKDEwMDAgKiB0aW1lc3RhbXApOworICAgIGF1dG8gaGlnaFJlc05vd01zID0gdGltZXN0YW1w
Lm1pbGxpc2Vjb25kcygpOwogICAgIGlmIChtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPnF1aXJr
cygpLm5lZWRzTWlsbGlzZWNvbmRSZXNvbHV0aW9uRm9ySGlnaFJlc1RpbWVTdGFtcCgpKQogICAg
ICAgICBoaWdoUmVzTm93TXMgKz0gMC4xOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdQogICAgICAgICByZXR1cm47CiAKICAgICBT
ZWNvbmRzIGFuaW1hdGlvbkludGVydmFsID0gaW50ZXJ2YWwoKTsKLSAgICBTZWNvbmRzIHNjaGVk
dWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZhbCAtIFNlY29uZHMobV9kb2N1bWVu
dC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1l
c3RhbXApLCAwX3MpOworICAgIFNlY29uZHMgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1h
dGlvbkludGVydmFsIC0gKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKSAt
IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9zKTsKIAogICAgIGlmIChpc1Rocm90
dGxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBub3QgaWRlYWwgdG8gc25hcHNob3QgdGltZSBi
b3RoIGluIG5vdygpIGFuZCBub3dUaW1lc3RhbXAoKSwgdGhlIGxhdHRlciBvZiB3aGljaCBhbHNv
IGhhcyByZWR1Y2VkIHJlc29sdXRpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgQ2FsbGJhY2tJZCByZWdpc3RlckNh
bGxiYWNrKFJlZjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBj
YW5jZWxDYWxsYmFjayhDYWxsYmFja0lkKTsKLSAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApOworICAgIHZv
aWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMpOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAg
LTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAK
ICAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOwotICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25G
cmFtZVRpbWVzdGFtcCB7IDAgfTsKKyAgICBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbV9sYXN0
QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgeyAwIH07CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29u
PiBtX3Rocm90dGxpbmdSZWFzb25zOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEwLDcgKzcxMTAsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVJhdGVDaGFuZ2VSCiBSZWZQdHI8VmlkZW9QbGF5
YmFja1F1YWxpdHk+IEhUTUxNZWRpYUVsZW1lbnQ6OmdldFZpZGVvUGxheWJhY2tRdWFsaXR5KCkK
IHsKICAgICBSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cgPSBkb2N1bWVudCgpLmRvbVdpbmRv
dygpOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBkb21XaW5kb3cgPyAxMDAwICogZG9tV2luZG93
LT5ub3dUaW1lc3RhbXAoKSA6IDA7CisgICAgZG91YmxlIHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/
IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkubWlsbGlzZWNvbmRzKCkgOiAwOwogCiAgICAgYXV0
byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzKCkgOiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFtZXRyaWNzKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsOSArNzM1LDkgQEAgUGVyZm9y
bWFuY2UmIERPTVdpbmRvdzo6cGVyZm9ybWFuY2UoKSBjbwogICAgIHJldHVybiAqbV9wZXJmb3Jt
YW5jZTsKIH0KIAotZG91YmxlIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29uc3QKK1JlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcyBET01XaW5kb3c6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHBlcmZvcm1hbmNlKCkubm93KCkgLyAxMDAwLjsKKyAgICByZXR1cm4gcGVyZm9y
bWFuY2UoKS5ub3dJblJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcygpOwogfQogCiBMb2NhdGlvbiYg
RE9NV2luZG93Ojpsb2NhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlBvc3RNZXNzYWdlT3B0
aW9ucy5oIgorI2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oIgogI2luY2x1ZGUg
IlNjcm9sbFRvT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKQEAgLTM0OSw3ICszNTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFBlcmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMgbm93VGltZXN0YW1wKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgaW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMjEgKzI0NCwyMSBAQCB2b2lkIEludGVy
c2VjdGlvbk9ic2VydmVyOjpyb290RGVzdHJveWVkCiAgICAgbV9yb290ID0gbnVsbHB0cjsKIH0K
IAotYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wKERPTUhpZ2hSZXNU
aW1lU3RhbXAmIHRpbWVzdGFtcCkgY29uc3QKK09wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vj
b25kcz4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NhbGxiYWNrKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gbV9jYWxsYmFjay0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkgewot
ICAgICAgICB0aW1lc3RhbXAgPSAgd2luZG93LT5wZXJmb3JtYW5jZSgpLm5vdygpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+bm93
VGltZXN0YW1wKCk7CisgICAgCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogdm9pZCBJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9i
c2VydmVyRW50cnk+JiYgZW50cnkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9vYnNlcnZhdGlvblRhcmdldHMuc2l6ZSgpOyB9CiAgICAgdm9pZCByb290RGVzdHJveWVkKCk7
CiAKLSAgICBib29sIGNyZWF0ZVRpbWVzdGFtcChET01IaWdoUmVzVGltZVN0YW1wJikgY29uc3Q7
CisgICAgT3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzPiBub3dUaW1lc3RhbXAoKSBj
b25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnk+JiYpOwogICAgIHZvaWQgbm90aWZ5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5n
KCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAg
ICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRvdygpLT5u
b3dUaW1lc3RhbXAoKTsKKyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBkb2N1bWVudC5kb21XaW5k
b3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXNDb250cm9s
bGVyID0gZG9jdW1lbnQudGltZWxpbmVzQ29udHJvbGxlcigpKQogICAgICAgICAgICAgdGltZWxp
bmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHModGltZXN0YW1wKTsK
ICAgICAgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVwcy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsMTMg
QEAgdm9pZCBQZXJmb3JtYW5jZTo6Y29udGV4dERlc3Ryb3llZCgpCiAKIERPTUhpZ2hSZXNUaW1l
U3RhbXAgUGVyZm9ybWFuY2U6Om5vdygpIGNvbnN0CiB7CisgICAgcmV0dXJuIG5vd0luUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzKCkubWlsbGlzZWNvbmRzKCk7Cit9CisKK1JlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyBQZXJmb3JtYW5jZTo6bm93SW5SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMoKSBj
b25zdAorewogICAgIFNlY29uZHMgbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVP
cmlnaW47Ci0gICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNvbHV0aW9uKG5vdykubWlsbGlzZWNvbmRz
KCk7CisgICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNvbHV0aW9uKG5vdyk7CiB9CiAKIFNlY29uZHMg
UGVyZm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFNlY29uZHMgc2Vjb25kcykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCisjaW5jbHVkZSAiUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH5QZXJmb3JtYW5jZSgpOwogCiAg
ICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBub3coKSBjb25zdDsKKyAgICBSZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMgbm93SW5SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMoKSBjb25zdDsKIAogICAgIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdhdGlvbigpOwogICAgIFBlcmZvcm1hbmNlVGltaW5n
KiB0aW1pbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZWR1Y2VkUmVzb2x1
dGlvblNlY29uZHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBS
ZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgPSBTZWNvbmRzOworCit9CisKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjA2OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBzdGVwcyBzaG91
bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp0aW1lc3RhbXAgY29uc3QpOgorCiAyMDIwLTA0LTI0ICBE
aWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bRGVi
dWddIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBhZnRlciByMjYwMDYzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29v
cmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MCw3ICsxODAsNyBAQCBkb3VibGUgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6dGltZXN0YW1w
CiAgICAgYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gZG9jdW1lbnQtPmRvbVdpbmRvdygpID8gZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1l
c3RhbXAoKSA6IGRvY3VtZW50LT5tb25vdG9uaWNUaW1lc3RhbXAoKTsKKyAgICByZXR1cm4gZG9j
dW1lbnQtPmRvbVdpbmRvdygpID8gZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAo
KS5zZWNvbmRzKCkgOiBkb2N1bWVudC0+bW9ub3RvbmljVGltZXN0YW1wKCk7CiB9CiAKIHZvaWQg
Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397548</attachid>
            <date>2020-04-25 00:39:01 -0700</date>
            <delta_ts>2020-04-25 01:36:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200425003900.patch</filename>
            <type>text/plain</type>
            <size>25265</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA0LTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIERPTVdpbmRv
dzo6bm93VGltZXN0YW1wKCkgcmV0dXJuIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBhbmQgY2hh
bmdlCisgICAgICAgIHRoZSBjYWxsZXJzIGFjY29yZGluZ2x5LiBSZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMgaXMgYSBuZXcgdHlwZSBidXQgaXQncworICAgICAgICBqdXN0IGFuIGFsaWFzIG9mIHRo
ZSB0eXBlIFNlY29uZHMuIEl0IGluZGljYXRlcyB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZQorICAg
ICAgICBpcyBhIHdlYi1zYWZlIHNlY29uZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c3VzcGVuZEFuaW1hdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1cnJlbnRUaW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxs
VXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBhbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJbnRlcnNl
Y3Rpb25PYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6bm93VGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAg
ICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVJlbmRlcmluZyk6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZTo6bm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpub3dJblJl
ZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBjb25zdCk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5j
ZS5oOgorICAgICAgICAqIHBhZ2UvUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmg6IEFkZGVkLgor
CiAyMDIwLTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIGlQYWQ6ICJQb2NrZXQgQ2l0eSIgaW50ZXJhY3Rpb24gZG9lcyBub3Qgd29yayB3aXRo
IHRyYWNrcGFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NTAsNiAr
MTc1MCw3IEBACiAJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3RUIx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJCTU1NkM3QzRCMjIx
MjM5OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NkM3QzQ3MjIxMjM5NDIwMDlCMDZD
QSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTc2QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1h
Z2VGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTg0NzY1QTI0NTNGMzM0MDA5RjU1
MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEz
MzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFEMDkzRTI0MDg5NjM1MDBE
RTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODcz
Nyw2ICs4NzM4LDcgQEAKIAkJNTU2QzdDNDkyMjEyMzk0MzAwOUIwNkNBIC8qIFJlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJl
c29sdXRpb25TZWNvbmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RkNDQjIwNzZDMDY4MDBEMzVC
QjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQmFja2luZ1N0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA1Miw2ICsyMTA1NCw3IEBACiAJCQkJ
RTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJQ0Q5
QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVE
NkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAorCQkJCTU1ODQ3NjU4MjQ1M0FCQzIwMDlGNTUw
QyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJB
MDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAw
NzEwNjM4IC8qIFJlbW90ZURPTVdpbmRvdy5pZGwgKi8sCkBAIC0zMjQwMSw2ICszMjQwNCw3IEBA
CiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNFRUU0MzYxRjVGOEYyMTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTU4NDc2NUEyNDUzRjMzNDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTgzMUFFNEExNTQyMjVDOTAwRkUyNjQ0
IC8qIFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkI5OTk4RjE4MDNBRTcy
MDBEMDExMjEgLyogUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAkocmV2aXNpb24g
MjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5l
OjpzdXNwZW5kQW5pbWF0aW9ucwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY2FjaGVk
Q3VycmVudFRpbWUpCi0gICAgICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBTZWNvbmRzKGxpdmVD
dXJyZW50VGltZSgpKTsKKyAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IGxpdmVDdXJyZW50
VGltZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMp
CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0U3VzcGVuZGVkKHRydWUpOwpAQCAtMjc0LDcgKzI3NCw3
IEBAIHVuc2lnbmVkIERvY3VtZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXYKICAgICByZXR1cm4g
Y291bnQ7CiB9CiAKLURPTUhpZ2hSZXNUaW1lU3RhbXAgRG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1
cnJlbnRUaW1lKCkgY29uc3QKK1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBEb2N1bWVudFRpbWVs
aW5lOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvY3VtZW50LT5k
b21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiB9CkBAIC0yOTcsMTEgKzI5NywxMSBAQCBPcHRp
b25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpjdXJyCiAgICAgcmV0dXJuIG1fY2FjaGVk
Q3VycmVudFRpbWUudmFsdWUoKSAtIG1fb3JpZ2luVGltZTsKIH0KIAotdm9pZCBEb2N1bWVudFRp
bWVsaW5lOjpjYWNoZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgbmV3Q3VycmVudFRp
bWUpCit2b2lkIERvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUoUmVkdWNlZFJlc29s
dXRpb25TZWNvbmRzIG5ld0N1cnJlbnRUaW1lKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsK
IAotICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBTZWNvbmRzKG5ld0N1cnJlbnRUaW1lKTsKKyAg
ICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gbmV3Q3VycmVudFRpbWU7CiAgICAgLy8gV2Ugd2FudCB0
byBiZSBzdXJlIHRvIGtlZXAgdGhpcyB0aW1lIGNhY2hlZCB1bnRpbCB3ZSd2ZSBib3RoIGZpbmlz
aGVkIHJ1bm5pbmcgSlMgYW5kIGZpbmlzaGVkIHVwZGF0aW5nCiAgICAgLy8gYW5pbWF0aW9ucywg
c28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBhIHdoZW5J
ZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3luY3Jvbm91
c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjpzaG91bGRSdW5VcGRhdGVBbgogICAgIHJldHVybiAhbV9hbmltYXRpb25zLmlz
RW1wdHkoKSB8fCAhbV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmlzRW1wdHkoKSB8fCAhbV9hY2Nl
bGVyYXRlZEFuaW1hdGlvbnNQZW5kaW5nUnVubmluZ1N0YXRlQ2hhbmdlLmlzRW1wdHkoKTsKIH0K
IAotRG9jdW1lbnRUaW1lbGluZTo6U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMg
RG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApCitEb2N1bWVudFRpbWVsaW5lOjpTaG91
bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyBEb2N1bWVudFRpbWVsaW5lOjpkb2N1bWVu
dFdpbGxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2VkUmVzb2x1dGlvblNlY29u
ZHMgdGltZXN0YW1wKQogewogICAgIC8vIFdlIG5lZWQgdG8gZnJlZXplIHRoZSBjdXJyZW50IHRp
bWUgZXZlbiBpZiBubyBhbmltYXRpb24gaXMgcnVubmluZy4KICAgICAvLyBkb2N1bWVudC50aW1l
bGluZS5jdXJyZW50VGltZSBtYXkgYmUgY2FsbGVkIGZyb20gYSByQUYgY2FsbGJhY2sgYW5kCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBbmltYXRpb25U
aW1lbGluZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmVPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgorI2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgpAQCAtNzQsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1
ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRCYXNlJik7CiAgICAgCiAgICAgZW51bSBj
bGFzcyBTaG91bGRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyA6IHVpbnQ4X3QgeyBZZXMs
IE5vIH07Ci0gICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgZG9jdW1lbnRX
aWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1RpbWVTdGFtcCk7Cisg
ICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgZG9jdW1lbnRXaWxsVXBkYXRl
QW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKICAgICB2
b2lkIHJlbW92ZVJlcGxhY2VkQW5pbWF0aW9ucygpOwogICAgIEFuaW1hdGlvbkV2ZW50cyBwcmVw
YXJlRm9yUGVuZGluZ0FuaW1hdGlvbkV2ZW50c0Rpc3BhdGNoKCk7CiAgICAgdm9pZCBkb2N1bWVu
dERpZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CkBAIC05Miw5ICs5Myw5IEBAIHBy
aXZhdGU6CiAgICAgRG9jdW1lbnRUaW1lbGluZShEb2N1bWVudCYsIFNlY29uZHMpOwogCiAgICAg
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7Ci0gICAgRE9N
SGlnaFJlc1RpbWVTdGFtcCBsaXZlQ3VycmVudFRpbWUoKSBjb25zdDsKKyAgICBSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMgbGl2ZUN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseVBl
bmRpbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKTsKLSAgICB2b2lkIGNhY2hlQ3VycmVudFRpbWUo
RE9NSGlnaFJlc1RpbWVTdGFtcCk7CisgICAgdm9pZCBjYWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcyk7CiAgICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUo
KTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoCiAgICAgICAgIG1fdGltZWxpbmVz
LmJlZ2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgpOwogfQogCi12b2lkIERvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lc3RhbXApCit2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBk
YXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVz
dGFtcCkKIHsKICAgICBBU1NFUlQoIW1fdGltZWxpbmVzLmhhc051bGxSZWZlcmVuY2VzKCkpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01IaWdoUmVzVGlt
ZVN0YW1wLmgiCisjaW5jbHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVk
ZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwog
ICAgIHZvaWQgcmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYpOwogICAgIHZvaWQgZGV0
YWNoRnJvbURvY3VtZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5k
RXZlbnRzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IEFuaW1hdGlvbnNUb1Byb2Nlc3MgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzcxLDcgKzYzNzEsNyBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbkNvCiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZXN1
bWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrcyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgRG9jdW1lbnQ6OnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzIHRpbWVzdGFtcCkKIHsKICAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIp
CiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CkBAIC03NjIyLDggKzc2MjIsOCBAQCB2
b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhCiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnMpIHsKICAgICAgICAgYm9v
bCBuZWVkTm90aWZ5ID0gZmFsc2U7Ci0gICAgICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0
YW1wOwotICAgICAgICBpZiAoIW9ic2VydmVyLT5jcmVhdGVUaW1lc3RhbXAodGltZXN0YW1wKSkK
KyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBvYnNlcnZlci0+bm93VGltZXN0YW1wKCk7CisgICAg
ICAgIGlmICghdGltZXN0YW1wKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAo
RWxlbWVudCogdGFyZ2V0IDogb2JzZXJ2ZXItPm9ic2VydmF0aW9uVGFyZ2V0cygpKSB7CiAgICAg
ICAgICAgICBhdXRvJiB0YXJnZXRSZWdpc3RyYXRpb25zID0gdGFyZ2V0LT5pbnRlcnNlY3Rpb25P
YnNlcnZlckRhdGFJZkV4aXN0cygpLT5yZWdpc3RyYXRpb25zOwpAQCAtNzY3Niw3ICs3Njc2LDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YQogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIG9ic2VydmVyLT5hcHBlbmRRdWV1ZWRFbnRyeShJbnRl
cnNlY3Rpb25PYnNlcnZlckVudHJ5OjpjcmVhdGUoewotICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXAsCisgICAgICAgICAgICAgICAgICAgICgqdGltZXN0YW1wKS5taWxsaXNlY29uZHMoKSwK
ICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWRSb290Qm91bmRzLAogICAgICAgICAgICAgICAg
ICAgICB7IHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC54KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50
UmVjdC55KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCgpLCB0YXJnZXRCb3VuZGlu
Z0NsaWVudFJlY3QuaGVpZ2h0KCkgfSwKICAgICAgICAgICAgICAgICAgICAgeyBjbGllbnRJbnRl
cnNlY3Rpb25SZWN0LngoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC55KCksIGNsaWVudEludGVy
c2VjdGlvblJlY3Qud2lkdGgoKSwgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSB9LApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgwLDcgKzEwODAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJh
Y2tzKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFj
a3MoKTsKIAotICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhE
T01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKIAogICAgIHZvaWQgd2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTQgKzE5MywxNCBAQCB2b2lkIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsCiAgICAgfQogfQogCi12b2lkIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhE
T01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNv
bHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgaWYgKCFtX2NhbGxiYWNrcy5zaXplKCkg
fHwgbV9zdXNwZW5kQ291bnQgfHwgIXJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoUkFGQ2FsbGJhY2tT
dGFydCwgUkFGQ2FsbGJhY2tFbmQpOwogCi0gICAgYXV0byBoaWdoUmVzTm93TXMgPSBzdGQ6OnJv
dW5kKDEwMDAgKiB0aW1lc3RhbXApOworICAgIGF1dG8gaGlnaFJlc05vd01zID0gdGltZXN0YW1w
Lm1pbGxpc2Vjb25kcygpOwogICAgIGlmIChtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPnF1aXJr
cygpLm5lZWRzTWlsbGlzZWNvbmRSZXNvbHV0aW9uRm9ySGlnaFJlc1RpbWVTdGFtcCgpKQogICAg
ICAgICBoaWdoUmVzTm93TXMgKz0gMC4xOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdQogICAgICAgICByZXR1cm47CiAKICAgICBT
ZWNvbmRzIGFuaW1hdGlvbkludGVydmFsID0gaW50ZXJ2YWwoKTsKLSAgICBTZWNvbmRzIHNjaGVk
dWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZhbCAtIFNlY29uZHMobV9kb2N1bWVu
dC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1l
c3RhbXApLCAwX3MpOworICAgIFNlY29uZHMgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1h
dGlvbkludGVydmFsIC0gKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKSAt
IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9zKTsKIAogICAgIGlmIChpc1Rocm90
dGxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBub3QgaWRlYWwgdG8gc25hcHNob3QgdGltZSBi
b3RoIGluIG5vdygpIGFuZCBub3dUaW1lc3RhbXAoKSwgdGhlIGxhdHRlciBvZiB3aGljaCBhbHNv
IGhhcyByZWR1Y2VkIHJlc29sdXRpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgQ2FsbGJhY2tJZCByZWdpc3RlckNh
bGxiYWNrKFJlZjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBj
YW5jZWxDYWxsYmFjayhDYWxsYmFja0lkKTsKLSAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXApOworICAgIHZv
aWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMpOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAg
LTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAK
ICAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOwotICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25G
cmFtZVRpbWVzdGFtcCB7IDAgfTsKKyAgICBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbV9sYXN0
QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgeyAwIH07CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29u
PiBtX3Rocm90dGxpbmdSZWFzb25zOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEwLDcgKzcxMTAsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVJhdGVDaGFuZ2VSCiBSZWZQdHI8VmlkZW9QbGF5
YmFja1F1YWxpdHk+IEhUTUxNZWRpYUVsZW1lbnQ6OmdldFZpZGVvUGxheWJhY2tRdWFsaXR5KCkK
IHsKICAgICBSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cgPSBkb2N1bWVudCgpLmRvbVdpbmRv
dygpOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBkb21XaW5kb3cgPyAxMDAwICogZG9tV2luZG93
LT5ub3dUaW1lc3RhbXAoKSA6IDA7CisgICAgZG91YmxlIHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/
IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkubWlsbGlzZWNvbmRzKCkgOiAwOwogCiAgICAgYXV0
byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzKCkgOiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFtZXRyaWNzKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsOSArNzM1LDkgQEAgUGVyZm9y
bWFuY2UmIERPTVdpbmRvdzo6cGVyZm9ybWFuY2UoKSBjbwogICAgIHJldHVybiAqbV9wZXJmb3Jt
YW5jZTsKIH0KIAotZG91YmxlIERPTVdpbmRvdzo6bm93VGltZXN0YW1wKCkgY29uc3QKK1JlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcyBET01XaW5kb3c6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHBlcmZvcm1hbmNlKCkubm93KCkgLyAxMDAwLjsKKyAgICByZXR1cm4gcGVyZm9y
bWFuY2UoKS5ub3dJblJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcygpOwogfQogCiBMb2NhdGlvbiYg
RE9NV2luZG93Ojpsb2NhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlBvc3RNZXNzYWdlT3B0
aW9ucy5oIgorI2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oIgogI2luY2x1ZGUg
IlNjcm9sbFRvT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKQEAgLTM0OSw3ICszNTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFBlcmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMgbm93VGltZXN0YW1wKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgaW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMjEgKzI0NCwyMSBAQCB2b2lkIEludGVy
c2VjdGlvbk9ic2VydmVyOjpyb290RGVzdHJveWVkCiAgICAgbV9yb290ID0gbnVsbHB0cjsKIH0K
IAotYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wKERPTUhpZ2hSZXNU
aW1lU3RhbXAmIHRpbWVzdGFtcCkgY29uc3QKK09wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vj
b25kcz4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2NhbGxiYWNrKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gbV9jYWxsYmFjay0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkgewot
ICAgICAgICB0aW1lc3RhbXAgPSAgd2luZG93LT5wZXJmb3JtYW5jZSgpLm5vdygpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+bm93
VGltZXN0YW1wKCk7CisgICAgCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogdm9pZCBJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9i
c2VydmVyRW50cnk+JiYgZW50cnkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9vYnNlcnZhdGlvblRhcmdldHMuc2l6ZSgpOyB9CiAgICAgdm9pZCByb290RGVzdHJveWVkKCk7
CiAKLSAgICBib29sIGNyZWF0ZVRpbWVzdGFtcChET01IaWdoUmVzVGltZVN0YW1wJikgY29uc3Q7
CisgICAgT3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzPiBub3dUaW1lc3RhbXAoKSBj
b25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnk+JiYpOwogICAgIHZvaWQgbm90aWZ5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5n
KCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAg
ICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRvdygpLT5u
b3dUaW1lc3RhbXAoKTsKKyAgICAgICAgYXV0byB0aW1lc3RhbXAgPSBkb2N1bWVudC5kb21XaW5k
b3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXNDb250cm9s
bGVyID0gZG9jdW1lbnQudGltZWxpbmVzQ29udHJvbGxlcigpKQogICAgICAgICAgICAgdGltZWxp
bmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHModGltZXN0YW1wKTsK
ICAgICAgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVwcy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsMTMg
QEAgdm9pZCBQZXJmb3JtYW5jZTo6Y29udGV4dERlc3Ryb3llZCgpCiAKIERPTUhpZ2hSZXNUaW1l
U3RhbXAgUGVyZm9ybWFuY2U6Om5vdygpIGNvbnN0CiB7CisgICAgcmV0dXJuIG5vd0luUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzKCkubWlsbGlzZWNvbmRzKCk7Cit9CisKK1JlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyBQZXJmb3JtYW5jZTo6bm93SW5SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMoKSBj
b25zdAorewogICAgIFNlY29uZHMgbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVP
cmlnaW47Ci0gICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNvbHV0aW9uKG5vdykubWlsbGlzZWNvbmRz
KCk7CisgICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNvbHV0aW9uKG5vdyk7CiB9CiAKIFNlY29uZHMg
UGVyZm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFNlY29uZHMgc2Vjb25kcykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCisjaW5jbHVkZSAiUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH5QZXJmb3JtYW5jZSgpOwogCiAg
ICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBub3coKSBjb25zdDsKKyAgICBSZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMgbm93SW5SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMoKSBjb25zdDsKIAogICAgIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdhdGlvbigpOwogICAgIFBlcmZvcm1hbmNlVGltaW5n
KiB0aW1pbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZWR1Y2VkUmVzb2x1
dGlvblNlY29uZHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzID0gU2Vj
b25kczsKKworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYwNjkxKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0y
NCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbmRlcmluZyB1cGRhdGUgc3RlcHMgc2hvdWxkIHVzZSBTZWNvbmRzIGZvciB0aGUgdGltZXN0
YW1wcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6dGltZXN0
YW1wIGNvbnN0KToKKwogMjAyMC0wNC0yNCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtXUEVdW0RlYnVnXSBVbnJldmlld2VkLCBmaXggYnVpbGQgYWZ0
ZXIgcjI2MDA2MwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgZG91YmxlIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OnRpbWVzdGFtcAogICAgIGF1dG8qIGRvY3VtZW50ID0gbV9wYWdl
LmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKSA/IGRv
Y3VtZW50LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkgOiBkb2N1bWVudC0+bW9ub3Rvbmlj
VGltZXN0YW1wKCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKSA/IGRvY3VtZW50
LT5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkuc2Vjb25kcygpIDogZG9jdW1lbnQtPm1vbm90
b25pY1RpbWVzdGFtcCgpOwogfQogCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnN5bmNE
aXNwbGF5U3RhdGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397552</attachid>
            <date>2020-04-25 01:36:23 -0700</date>
            <delta_ts>2020-04-26 16:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200425013621.patch</filename>
            <type>text/plain</type>
            <size>25749</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA0LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIERPTVdpbmRv
dzo6bm93VGltZXN0YW1wKCkgcmV0dXJuIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBhbmQgY2hh
bmdlCisgICAgICAgIHRoZSBjYWxsZXJzIGFjY29yZGluZ2x5LiBSZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMgaXMgYSBuZXcgdHlwZSBidXQgaXQncworICAgICAgICBqdXN0IGFuIGFsaWFzIG9mIHRo
ZSB0eXBlIFNlY29uZHMuIEl0IGluZGljYXRlcyB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZQorICAg
ICAgICBpcyBhIHdlYi1zYWZlIHNlY29uZHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRpbWVsaW5lOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRpbWVsaW5lOjpsaXZlQ3VycmVudFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZTo6Y2FjaGVDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRpbWVsaW5lOjpkb2N1bWVudFdpbGxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyk6
CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMpOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucyk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAg
ICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpn
ZXRWaWRlb1BsYXliYWNrUXVhbGl0eSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpub3dUaW1lc3RhbXAgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm93VGltZXN0
YW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVh
dGVUaW1lc3RhbXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpub3cgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2U6Om5vd0luUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmg6CisgICAgICAgICogcGFnZS9SZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMuaDogQWRkZWQuCisKIDIwMjAtMDQtMjQgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgaVBhZDogIlBvY2tldCBDaXR5IiBpbnRl
cmFjdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggdHJhY2twYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtODQwLDYgKzg0MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwYWdlL1ByaW50Q29udGV4dC5oCiAgICAgcGFnZS9Qcm9jZXNzV2Fy
bWluZy5oCiAgICAgcGFnZS9RdWlya3MuaAorICAgIHBhZ2UvUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzLmgKICAgICBwYWdlL1JlbW90ZURPTVdpbmRvdy5oCiAgICAgcGFnZS9SZW1vdGVGcmFtZS5o
CiAgICAgcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYw
NTU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUwLDYgKzE3NTAsNyBAQAogCQk1NTVCODdFRDFDQUFGMEFC
MDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5oICovOyB9OwogCQk1NTZDN0M0QjIyMTIzOTk3MDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTZDN0M0NzIyMTIzOTQyMDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU3
NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJ
bWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTU4NDc2NUEyNDUzRjMzNDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU4NDc2
NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QTMzNkY5MUQ4MjFF
M0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdl
QmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRUEw
OUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5NDAyNDA4OTY0
MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAv
KiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg3MzcsNiArODczOCw3IEBACiAJCTU1NkM3QzQ5MjIx
MjM5NDMwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjIxRDg4QTcwODAwQ0NDMDRDIC8q
IEltYWdlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NzZBNTYzMUQ4OEE3
MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU4NDc2NTgy
NDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTU5N0ZDQ0IyMDc2QzA2ODAwRDM1QkIwIC8qIEdseXBoRGlzcGxheUxpc3RDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaERpc3BsYXlMaXN0Q2FjaGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3
IC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2
ZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY4MUQ4MjFFM0Mw
MDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZUJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjEwNTIsNiArMjEwNTQsNyBAQAogCQkJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQ
cm9jZXNzV2FybWluZy5oICovLAogCQkJCUNEOUE4N0Y5MjE1RDZDRjMwMDZGMTdCNSAvKiBRdWly
a3MuY3BwICovLAogCQkJCUNEOUE4N0ZCMjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuaCAqLywK
KwkJCQk1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRz
LmggKi8sCiAJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5j
cHAgKi8sCiAJCQkJNDZCOTUxOEUyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5o
ICovLAogCQkJCTQ2QkNCQkMzMjA4NTAwQTcwMDcxMDYzOCAvKiBSZW1vdGVET01XaW5kb3cuaWRs
ICovLApAQCAtMzI0MDEsNiArMzI0MDQsNyBAQAogCQkJCUJDNDM2OEU4MEMyMjZFMzIwMDVFRkI1
RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRDMDBDMjFFQzgg
LyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRUVFNDM2MUY1RjhGMjEw
MDE0QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1ODQ3NjVBMjQ1M0Yz
MzQwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDcgKzIz
Miw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c3VzcGVuZEFuaW1hdGlvbnMKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2NhY2hlZEN1cnJlbnRUaW1lKQotICAgICAgICBtX2NhY2hl
ZEN1cnJlbnRUaW1lID0gU2Vjb25kcyhsaXZlQ3VycmVudFRpbWUoKSk7CisgICAgICAgIG1fY2Fj
aGVkQ3VycmVudFRpbWUgPSBsaXZlQ3VycmVudFRpbWUoKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25zKQogICAgICAgICBhbmltYXRpb24tPnNldFN1c3Bl
bmRlZCh0cnVlKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB1bnNpZ25lZCBEb2N1bWVudFRpbWVsaW5l
OjpudW1iZXJPZkFjdGl2CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi1ET01IaWdoUmVzVGltZVN0
YW1wIERvY3VtZW50VGltZWxpbmU6OmxpdmVDdXJyZW50VGltZSgpIGNvbnN0CitSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMgRG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1cnJlbnRUaW1lKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpOwog
fQpAQCAtMjk3LDExICsyOTcsMTEgQEAgT3B0aW9uYWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGlu
ZTo6Y3VycgogICAgIHJldHVybiBtX2NhY2hlZEN1cnJlbnRUaW1lLnZhbHVlKCkgLSBtX29yaWdp
blRpbWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaW1lbGluZTo6Y2FjaGVDdXJyZW50VGltZShET01I
aWdoUmVzVGltZVN0YW1wIG5ld0N1cnJlbnRUaW1lKQordm9pZCBEb2N1bWVudFRpbWVsaW5lOjpj
YWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDdXJyZW50VGltZSkK
IHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAKLSAgICBtX2NhY2hlZEN1cnJlbnRUaW1lID0g
U2Vjb25kcyhuZXdDdXJyZW50VGltZSk7CisgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IG5ld0N1
cnJlbnRUaW1lOwogICAgIC8vIFdlIHdhbnQgdG8gYmUgc3VyZSB0byBrZWVwIHRoaXMgdGltZSBj
YWNoZWQgdW50aWwgd2UndmUgYm90aCBmaW5pc2hlZCBydW5uaW5nIEpTIGFuZCBmaW5pc2hlZCB1
cGRhdGluZwogICAgIC8vIGFuaW1hdGlvbnMsIHNvIHdlIHNjaGVkdWxlIHRoZSBpbnZhbGlkYXRp
b24gdGFzayBhbmQgcmVnaXN0ZXIgYSB3aGVuSWRsZSBjYWxsYmFjayBvbiB0aGUgVk0sIHdoaWNo
IHdpbGwKICAgICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5uaW5nLgpAQCAt
MzYxLDcgKzM2MSw3IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6c2hvdWxkUnVuVXBkYXRlQW4K
ICAgICByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ0FuaW1hdGlv
bkV2ZW50cy5pc0VtcHR5KCkgfHwgIW1fYWNjZWxlcmF0ZWRBbmltYXRpb25zUGVuZGluZ1J1bm5p
bmdTdGF0ZUNoYW5nZS5pc0VtcHR5KCk7CiB9CiAKLURvY3VtZW50VGltZWxpbmU6OlNob3VsZFVw
ZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzIERvY3VtZW50VGltZWxpbmU6OmRvY3VtZW50V2ls
bFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0
YW1wKQorRG9jdW1lbnRUaW1lbGluZTo6U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMgRG9jdW1lbnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRF
dmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVzdGFtcCkKIHsKICAgICAvLyBXZSBu
ZWVkIHRvIGZyZWV6ZSB0aGUgY3VycmVudCB0aW1lIGV2ZW4gaWYgbm8gYW5pbWF0aW9uIGlzIHJ1
bm5pbmcuCiAgICAgLy8gZG9jdW1lbnQudGltZWxpbmUuY3VycmVudFRpbWUgbWF5IGJlIGNhbGxl
ZCBmcm9tIGEgckFGIGNhbGxiYWNrIGFuZApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZS5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uVGltZWxpbmUuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFRpbWVsaW5lT3B0aW9ucy5oIgogI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKKyNpbmNs
dWRlICJSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTc0LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KEFuaW1hdGlvbkV2
ZW50QmFzZSYpOwogICAgIAogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMgOiB1aW50OF90IHsgWWVzLCBObyB9OwotICAgIFNob3VsZFVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzIGRvY3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKERPTUhpZ2hSZXNUaW1lU3RhbXApOworICAgIFNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRT
ZW5kRXZlbnRzIGRvY3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAgICAgdm9pZCByZW1vdmVSZXBsYWNlZEFuaW1hdGlvbnMo
KTsKICAgICBBbmltYXRpb25FdmVudHMgcHJlcGFyZUZvclBlbmRpbmdBbmltYXRpb25FdmVudHNE
aXNwYXRjaCgpOwogICAgIHZvaWQgZG9jdW1lbnREaWRVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2
ZW50cygpOwpAQCAtOTIsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIERvY3VtZW50VGltZWxpbmUo
RG9jdW1lbnQmLCBTZWNvbmRzKTsKIAogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciog
Y29udHJvbGxlcigpIGNvbnN0OwotICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbGl2ZUN1cnJlbnRU
aW1lKCkgY29uc3Q7CisgICAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIGxpdmVDdXJyZW50VGlt
ZSgpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zKCk7
Ci0gICAgdm9pZCBjYWNoZUN1cnJlbnRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXApOworICAgIHZv
aWQgY2FjaGVDdXJyZW50VGltZShSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMpOwogICAgIHZvaWQg
bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCk7CiAgICAgdm9pZCBzY2hlZHVsZUludmFsaWRh
dGlvblRhc2tJZk5lZWRlZCgpOwogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9u
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6
OmRldGFjaAogICAgICAgICBtX3RpbWVsaW5lcy5iZWdpbigpLT5kZXRhY2hGcm9tRG9jdW1lbnQo
KTsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlv
bnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZXN0YW1wKQordm9pZCBEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJl
ZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVs
aW5lcy5oYXNOdWxsUmVmZXJlbmNlcygpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAkocmV2aXNpb24g
MjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVTdGFtcC5oIgorI2luY2x1ZGUgIlJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcy5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRp
bWVsaW5lKERvY3VtZW50VGltZWxpbmUmKTsKICAgICB2b2lkIHJlbW92ZVRpbWVsaW5lKERvY3Vt
ZW50VGltZWxpbmUmKTsKICAgICB2b2lkIGRldGFjaEZyb21Eb2N1bWVudCgpOwotICAgIHZvaWQg
dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoRE9NSGlnaFJlc1RpbWVTdGFtcCk7CisgICAg
dm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2VkUmVzb2x1dGlvblNlY29u
ZHMpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbmltYXRpb25zVG9Qcm9jZXNzIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSw3ICs2MzcxLDcgQEAg
dm9pZCBEb2N1bWVudDo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25DbwogICAgICAgICBtX3Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCB0
aW1lc3RhbXApCit2b2lkIERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgaWYgKG1f
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci0+c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyh0aW1lc3Rh
bXApOwpAQCAtNzYyMiw4ICs3NjIyLDggQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSW50ZXJzZWN0
aW9uT2JzZXJ2YQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1faW50ZXJzZWN0
aW9uT2JzZXJ2ZXJzKSB7CiAgICAgICAgIGJvb2wgbmVlZE5vdGlmeSA9IGZhbHNlOwotICAgICAg
ICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcDsKLSAgICAgICAgaWYgKCFvYnNlcnZlci0+
Y3JlYXRlVGltZXN0YW1wKHRpbWVzdGFtcCkpCisgICAgICAgIGF1dG8gdGltZXN0YW1wID0gb2Jz
ZXJ2ZXItPm5vd1RpbWVzdGFtcCgpOworICAgICAgICBpZiAoIXRpbWVzdGFtcCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBmb3IgKEVsZW1lbnQqIHRhcmdldCA6IG9ic2VydmVyLT5v
YnNlcnZhdGlvblRhcmdldHMoKSkgewogICAgICAgICAgICAgYXV0byYgdGFyZ2V0UmVnaXN0cmF0
aW9ucyA9IHRhcmdldC0+aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKS0+cmVnaXN0
cmF0aW9uczsKQEAgLTc2NzYsNyArNzY3Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVy
c2VjdGlvbk9ic2VydmEKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBvYnNl
cnZlci0+YXBwZW5kUXVldWVkRW50cnkoSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6Y3JlYXRl
KHsKLSAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAo
KnRpbWVzdGFtcCkubWlsbGlzZWNvbmRzKCksCiAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVk
Um9vdEJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgeyB0YXJnZXRCb3VuZGluZ0NsaWVudFJl
Y3QueCgpLCB0YXJnZXRCb3VuZGluZ0NsaWVudFJlY3QueSgpLCB0YXJnZXRCb3VuZGluZ0NsaWVu
dFJlY3Qud2lkdGgoKSwgdGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmhlaWdodCgpIH0sCiAgICAg
ICAgICAgICAgICAgICAgIHsgY2xpZW50SW50ZXJzZWN0aW9uUmVjdC54KCksIGNsaWVudEludGVy
c2VjdGlvblJlY3QueSgpLCBjbGllbnRJbnRlcnNlY3Rpb25SZWN0LndpZHRoKCksIGNsaWVudElu
dGVyc2VjdGlvblJlY3QuaGVpZ2h0KCkgfSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHNlcnZpY2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCk7CisgICAgdm9p
ZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcyk7CiAKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3Bs
YXlJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDE0ICsxOTMsMTQgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbAog
ICAgIH0KIH0KIAotdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXAp
Cit2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQogewog
ICAgIGlmICghbV9jYWxsYmFja3Muc2l6ZSgpIHx8IG1fc3VzcGVuZENvdW50IHx8ICFyZXF1ZXN0
QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNlU2Nv
cGUgdHJhY2luZ1Njb3BlKFJBRkNhbGxiYWNrU3RhcnQsIFJBRkNhbGxiYWNrRW5kKTsKIAotICAg
IGF1dG8gaGlnaFJlc05vd01zID0gc3RkOjpyb3VuZCgxMDAwICogdGltZXN0YW1wKTsKKyAgICBh
dXRvIGhpZ2hSZXNOb3dNcyA9IHRpbWVzdGFtcC5taWxsaXNlY29uZHMoKTsKICAgICBpZiAobV9k
b2N1bWVudCAmJiBtX2RvY3VtZW50LT5xdWlya3MoKS5uZWVkc01pbGxpc2Vjb25kUmVzb2x1dGlv
bkZvckhpZ2hSZXNUaW1lU3RhbXAoKSkKICAgICAgICAgaGlnaFJlc05vd01zICs9IDAuMTsKIApA
QCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hl
ZHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9IGlu
dGVydmFsKCk7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0gc3RkOjptYXgoYW5pbWF0aW9u
SW50ZXJ2YWwgLSBTZWNvbmRzKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAo
KSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9zKTsKKyAgICBTZWNvbmRzIHNj
aGVkdWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZhbCAtIChtX2RvY3VtZW50LT5k
b21XaW5kb3coKS0+bm93VGltZXN0YW1wKCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFt
cCksIDBfcyk7CiAKICAgICBpZiAoaXNUaHJvdHRsZWQoKSkgewogICAgICAgICAvLyBGSVhNRTog
bm90IGlkZWFsIHRvIHNuYXBzaG90IHRpbWUgYm90aCBpbiBub3coKSBhbmQgbm93VGltZXN0YW1w
KCksIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggYWxzbyBoYXMgcmVkdWNlZCByZXNvbHV0aW9uLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
aAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
IAogICAgIENhbGxiYWNrSWQgcmVnaXN0ZXJDYWxsYmFjayhSZWY8UmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgY2FuY2VsQ2FsbGJhY2soQ2FsbGJhY2tJZCk7Ci0g
ICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKERPTUhpZ2hSZXNU
aW1lU3RhbXAgdGltZXN0YW1wKTsKKyAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKIAogICAgIHZvaWQgc3VzcGVu
ZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAg
aW50IG1fc3VzcGVuZENvdW50IHsgMCB9OwogCiAgICAgVGltZXIgbV9hbmltYXRpb25UaW1lcjsK
LSAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgeyAwIH07CisgICAgUmVk
dWNlZFJlc29sdXRpb25TZWNvbmRzIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wIHsgMCB9
OwogCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAg
ICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbV90aHJvdHRsaW5nUmVhc29uczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjYwNTU5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzExMCw3ICs3MTEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVS
YXRlQ2hhbmdlUgogUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFsaXR5PiBIVE1MTWVkaWFFbGVtZW50
OjpnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgpCiB7CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gZG9t
V2luZG93ID0gZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0g
ZG9tV2luZG93ID8gMTAwMCAqIGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkgOiAwOworICAgIGRv
dWJsZSB0aW1lc3RhbXAgPSBkb21XaW5kb3cgPyBkb21XaW5kb3ctPm5vd1RpbWVzdGFtcCgpLm1p
bGxpc2Vjb25kcygpIDogMDsKIAogICAgIGF1dG8gbWV0cmljcyA9IG1fcGxheWVyID8gbV9wbGF5
ZXItPnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIDogV1RGOjpudWxsb3B0OwogICAgIGlm
ICghbWV0cmljcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDI2
MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzM1LDkgKzczNSw5IEBAIFBlcmZvcm1hbmNlJiBET01XaW5kb3c6OnBlcmZvcm1hbmNl
KCkgY28KICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKLWRvdWJsZSBET01XaW5kb3c6
Om5vd1RpbWVzdGFtcCgpIGNvbnN0CitSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgRE9NV2luZG93
Ojpub3dUaW1lc3RhbXAoKSBjb25zdAogewotICAgIHJldHVybiBwZXJmb3JtYW5jZSgpLm5vdygp
IC8gMTAwMC47CisgICAgcmV0dXJuIHBlcmZvcm1hbmNlKCkubm93SW5SZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMoKTsKIH0KIAogTG9jYXRpb24mIERPTVdpbmRvdzo6bG9jYXRpb24oKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAu
aCIKICNpbmNsdWRlICJQb3N0TWVzc2FnZU9wdGlvbnMuaCIKKyNpbmNsdWRlICJSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMuaCIKICNpbmNsdWRlICJTY3JvbGxUb09wdGlvbnMuaCIKICNpbmNsdWRl
ICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCkBAIC0zNDksNyAr
MzUwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBQZXJmb3JtYW5jZSYgcGVyZm9ybWFuY2Uo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbm93VGltZXN0YW1wKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIG5vd1RpbWVzdGFt
cCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGluY3JlbWVu
dFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0LDIxICsyNDQsMjEgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdERlc3Ryb3ll
ZAogICAgIG1fcm9vdCA9IG51bGxwdHI7CiB9CiAKLWJvb2wgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
OmNyZWF0ZVRpbWVzdGFtcChET01IaWdoUmVzVGltZVN0YW1wJiB0aW1lc3RhbXApIGNvbnN0CitP
cHRpb25hbDxSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHM+IEludGVyc2VjdGlvbk9ic2VydmVyOjpu
b3dUaW1lc3RhbXAoKSBjb25zdAogewogICAgIGlmICghbV9jYWxsYmFjaykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0byogY29u
dGV4dCA9IG1fY2FsbGJhY2stPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICBpZiAoYXV0byogd2luZG93
ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpIHsKLSAgICAgICAgdGltZXN0YW1wID0gIHdpbmRvdy0+
cGVyZm9ybWFuY2UoKS5ub3coKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCkp
CisgICAgICAgIHJldHVybiB3aW5kb3ctPm5vd1RpbWVzdGFtcCgpOworICAgIAorICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFwcGVuZFF1
ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiYmIGVudHJ5KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjYw
NTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc09ic2VydmF0
aW9uVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2YXRpb25UYXJnZXRzLnNpemUoKTsg
fQogICAgIHZvaWQgcm9vdERlc3Ryb3llZCgpOwogCi0gICAgYm9vbCBjcmVhdGVUaW1lc3RhbXAo
RE9NSGlnaFJlc1RpbWVTdGFtcCYpIGNvbnN0OworICAgIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcz4gbm93VGltZXN0YW1wKCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1ZXVl
ZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiYmKTsKICAgICB2b2lkIG5vdGlm
eSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM5LDcgKzEzMzksNyBA
QCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgZm9yRWFjaERvY3VtZW50KFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC5kb21XaW5kb3coKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3Rh
bXAgPSBkb2N1bWVudC5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CisgICAgICAgIGF1dG8g
dGltZXN0YW1wID0gZG9jdW1lbnQuZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpOwogICAgICAg
ICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IGRvY3VtZW50LnRpbWVsaW5lc0NvbnRy
b2xsZXIoKSkKICAgICAgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0ZUFuaW1hdGlv
bnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7CiAgICAgICAgIC8vIEZJWE1FOiBSdW4gdGhlIGZ1
bGxzY3JlZW4gc3RlcHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkocmV2
aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDEzIEBAIHZvaWQgUGVyZm9ybWFuY2U6OmNvbnRleHRE
ZXN0cm95ZWQoKQogCiBET01IaWdoUmVzVGltZVN0YW1wIFBlcmZvcm1hbmNlOjpub3coKSBjb25z
dAogeworICAgIHJldHVybiBub3dJblJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcygpLm1pbGxpc2Vj
b25kcygpOworfQorCitSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgUGVyZm9ybWFuY2U6Om5vd0lu
UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKCkgY29uc3QKK3sKICAgICBTZWNvbmRzIG5vdyA9IE1v
bm90b25pY1RpbWU6Om5vdygpIC0gbV90aW1lT3JpZ2luOwotICAgIHJldHVybiByZWR1Y2VUaW1l
UmVzb2x1dGlvbihub3cpLm1pbGxpc2Vjb25kcygpOworICAgIHJldHVybiByZWR1Y2VUaW1lUmVz
b2x1dGlvbihub3cpOwogfQogCiBTZWNvbmRzIFBlcmZvcm1hbmNlOjpyZWR1Y2VUaW1lUmVzb2x1
dGlvbihTZWNvbmRzIHNlY29uZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCShy
ZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgor
I2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw2ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB+UGVyZm9ybWFuY2UoKTsKIAogICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbm93KCkg
Y29uc3Q7CisgICAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIG5vd0luUmVkdWNlZFJlc29sdXRp
b25TZWNvbmRzKCkgY29uc3Q7CiAKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIG5hdmlnYXRp
b24oKTsKICAgICBQZXJmb3JtYW5jZVRpbWluZyogdGltaW5nKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIFJl
ZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyA9IFNlY29uZHM7CisKK30KKwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDY5NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5kZXJpbmcgdXBkYXRlIHN0ZXBzIHNob3Vs
ZCB1c2UgU2Vjb25kcyBmb3IgdGhlIHRpbWVzdGFtcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OnRpbWVzdGFtcCBjb25zdCk6CisKIDIwMjAtMDQtMjQgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtEZWJ1
Z10gVW5yZXZpZXdlZCwgZml4IGJ1aWxkIGFmdGVyIHIyNjAwNjMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29y
ZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNp
b24gMjYwNTU5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgwLDcgKzE4MCw3IEBAIGRvdWJsZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp0aW1lc3RhbXAK
ICAgICBhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBkb2N1bWVudC0+ZG9tV2luZG93KCkgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVz
dGFtcCgpIDogZG9jdW1lbnQtPm1vbm90b25pY1RpbWVzdGFtcCgpOworICAgIHJldHVybiBkb2N1
bWVudC0+ZG9tV2luZG93KCkgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgp
LnNlY29uZHMoKSA6IGRvY3VtZW50LT5tb25vdG9uaWNUaW1lc3RhbXAoKTsKIH0KIAogdm9pZCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jRGlzcGxheVN0YXRlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397634</attachid>
            <date>2020-04-26 16:43:51 -0700</date>
            <delta_ts>2020-04-28 12:37:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200426164350.patch</filename>
            <type>text/plain</type>
            <size>25743</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA0LTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgTWFrZSBET01XaW5kb3c6
Om5vd1RpbWVzdGFtcCgpIHJldHVybiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgYW5kIGNoYW5n
ZQorICAgICAgICB0aGUgY2FsbGVycyBhY2NvcmRpbmdseS4gUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzIGlzIGEgbmV3IHR5cGUgYnV0IGl0J3MKKyAgICAgICAganVzdCBhbiBhbGlhcyBvZiB0aGUg
dHlwZSBTZWNvbmRzLiBJdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUKKyAgICAg
ICAgaXMgYSB3ZWItc2FmZSBzZWNvbmRzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6bGl2ZUN1cnJlbnRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaW1lbGluZTo6ZG9jdW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgor
ICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRz
KToKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2
aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0
VmlkZW9QbGF5YmFja1F1YWxpdHkpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6bm93VGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFt
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRl
VGltZXN0YW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9i
c2VydmVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlOjpub3dJblJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAqIHBhZ2UvUmVkdWNlZFJlc29s
dXRpb25TZWNvbmRzLmg6IEFkZGVkLgorCiAyMDIwLTA0LTI0ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIGlQYWQ6ICJQb2NrZXQgQ2l0eSIgaW50ZXJh
Y3Rpb24gZG9lcyBub3Qgd29yayB3aXRoIHRyYWNrcGFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTg0MCw2ICs4NDAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9QcmludENvbnRleHQuaAogICAgIHBhZ2UvUHJvY2Vzc1dhcm1p
bmcuaAogICAgIHBhZ2UvUXVpcmtzLmgKKyAgICBwYWdlL1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oCiAgICAgcGFnZS9SZW1vdGVET01XaW5kb3cuaAogICAgIHBhZ2UvUmVtb3RlRnJhbWUuaAog
ICAgIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MDU1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTc1MCw2ICsxNzUwLDcgQEAKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAw
MzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVy
Q0cuaCAqLzsgfTsKIAkJNTU2QzdDNEIyMjEyMzk5NzAwOUIwNkNBIC8qIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU2QzdDNDcyMjEyMzk0MjAwOUIwNkNBIC8qIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1NzZB
NTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1h
Z2VGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1ODQ3NjVBMjQ1M0YzMzQwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1ODQ3NjU4
MjQ1M0FCQzIwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUEzMzZGOTFEODIxRTND
MDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJh
Y2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlG
NzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QUQwOTQwMjQwODk2NDAw
MERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyog
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC04NzM3LDYgKzg3MzgsNyBAQAogCQk1NTZDN0M0OTIyMTIz
OTQzMDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJ
bWFnZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTc2QTU2MzFEODhBNzA4
MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1ODQ3NjU4MjQ1
M0FCQzIwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1OTdGQ0NCMjA3NkMwNjgwMEQzNUJCMCAvKiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAv
KiBOYXRpdmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJ
bWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGODFEODIxRTNDMDAy
MkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxMDUyLDYgKzIxMDU0LDcgQEAKIAkJCQlFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJv
Y2Vzc1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtz
LmNwcCAqLywKIAkJCQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmggKi8sCisJ
CQkJNTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5o
ICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3Bw
ICovLAogCQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAq
LywKIAkJCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAq
LywKQEAgLTMyNDAxLDYgKzMyNDA0LDcgQEAKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYg
LyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8q
IFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0VFRTQzNjFGNUY4RjIxMDAx
NEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTg0NzY1QTI0NTNGMzM0
MDA5RjU1MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5ODMxQUU0QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIs
NyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnN1c3BlbmRBbmltYXRpb25zCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9jYWNoZWRDdXJyZW50VGltZSkKLSAgICAgICAgbV9jYWNoZWRD
dXJyZW50VGltZSA9IFNlY29uZHMobGl2ZUN1cnJlbnRUaW1lKCkpOworICAgICAgICBtX2NhY2hl
ZEN1cnJlbnRUaW1lID0gbGl2ZUN1cnJlbnRUaW1lKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykKICAgICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5k
ZWQodHJ1ZSk7CkBAIC0yNzQsNyArMjc0LDcgQEAgdW5zaWduZWQgRG9jdW1lbnRUaW1lbGluZTo6
bnVtYmVyT2ZBY3RpdgogICAgIHJldHVybiBjb3VudDsKIH0KIAotRE9NSGlnaFJlc1RpbWVTdGFt
cCBEb2N1bWVudFRpbWVsaW5lOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAorUmVkdWNlZFJlc29s
dXRpb25TZWNvbmRzIERvY3VtZW50VGltZWxpbmU6OmxpdmVDdXJyZW50VGltZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKTsKIH0K
QEAgLTI5NywxMSArMjk3LDExIEBAIE9wdGlvbmFsPFNlY29uZHM+IERvY3VtZW50VGltZWxpbmU6
OmN1cnIKICAgICByZXR1cm4gbV9jYWNoZWRDdXJyZW50VGltZS52YWx1ZSgpIC0gbV9vcmlnaW5U
aW1lOwogfQogCi12b2lkIERvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUoRE9NSGln
aFJlc1RpbWVTdGFtcCBuZXdDdXJyZW50VGltZSkKK3ZvaWQgRG9jdW1lbnRUaW1lbGluZTo6Y2Fj
aGVDdXJyZW50VGltZShSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbmV3Q3VycmVudFRpbWUpCiB7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwogCi0gICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IFNl
Y29uZHMobmV3Q3VycmVudFRpbWUpOworICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBuZXdDdXJy
ZW50VGltZTsKICAgICAvLyBXZSB3YW50IHRvIGJlIHN1cmUgdG8ga2VlcCB0aGlzIHRpbWUgY2Fj
aGVkIHVudGlsIHdlJ3ZlIGJvdGggZmluaXNoZWQgcnVubmluZyBKUyBhbmQgZmluaXNoZWQgdXBk
YXRpbmcKICAgICAvLyBhbmltYXRpb25zLCBzbyB3ZSBzY2hlZHVsZSB0aGUgaW52YWxpZGF0aW9u
IHRhc2sgYW5kIHJlZ2lzdGVyIGEgd2hlbklkbGUgY2FsbGJhY2sgb24gdGhlIFZNLCB3aGljaCB3
aWxsCiAgICAgLy8gZmlyZSBzeW5jcm9ub3VzbHkgaWYgbm8gSlMgaXMgcnVubmluZy4KQEAgLTM2
MSw3ICszNjEsNyBAQCBib29sIERvY3VtZW50VGltZWxpbmU6OnNob3VsZFJ1blVwZGF0ZUFuCiAg
ICAgcmV0dXJuICFtX2FuaW1hdGlvbnMuaXNFbXB0eSgpIHx8ICFtX3BlbmRpbmdBbmltYXRpb25F
dmVudHMuaXNFbXB0eSgpIHx8ICFtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRpbmdSdW5uaW5n
U3RhdGVDaGFuZ2UuaXNFbXB0eSgpOwogfQogCi1Eb2N1bWVudFRpbWVsaW5lOjpTaG91bGRVcGRh
dGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyBEb2N1bWVudFRpbWVsaW5lOjpkb2N1bWVudFdpbGxV
cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFt
cCkKK0RvY3VtZW50VGltZWxpbmU6OlNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRz
IERvY3VtZW50VGltZWxpbmU6OmRvY3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAgLy8gV2UgbmVl
ZCB0byBmcmVlemUgdGhlIGN1cnJlbnQgdGltZSBldmVuIGlmIG5vIGFuaW1hdGlvbiBpcyBydW5u
aW5nLgogICAgIC8vIGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lIG1heSBiZSBjYWxsZWQg
ZnJvbSBhIHJBRiBjYWxsYmFjayBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmUuaAkocmV2aXNpb24gMjYwNTU5KQorKysgU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
aW1lbGluZU9wdGlvbnMuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCisjaW5jbHVk
ZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC03NCw3ICs3NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVucXVldWVBbmltYXRpb25FdmVudChBbmltYXRpb25FdmVu
dEJhc2UmKTsKICAgICAKICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRT
ZW5kRXZlbnRzIDogdWludDhfdCB7IFllcywgTm8gfTsKLSAgICBTaG91bGRVcGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50cyBkb2N1bWVudFdpbGxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICBTaG91bGRVcGRhdGVBbmltYXRpb25zQW5kU2Vu
ZEV2ZW50cyBkb2N1bWVudFdpbGxVcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMpOwogICAgIHZvaWQgcmVtb3ZlUmVwbGFjZWRBbmltYXRpb25zKCk7
CiAgICAgQW5pbWF0aW9uRXZlbnRzIHByZXBhcmVGb3JQZW5kaW5nQW5pbWF0aW9uRXZlbnRzRGlz
cGF0Y2goKTsKICAgICB2b2lkIGRvY3VtZW50RGlkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMoKTsKQEAgLTkyLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudFRpbWVsaW5lKERv
Y3VtZW50JiwgU2Vjb25kcyk7CiAKICAgICBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIqIGNv
bnRyb2xsZXIoKSBjb25zdDsKLSAgICBET01IaWdoUmVzVGltZVN0YW1wIGxpdmVDdXJyZW50VGlt
ZSgpIGNvbnN0OworICAgIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBsaXZlQ3VycmVudFRpbWUo
KSBjb25zdDsKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpOwot
ICAgIHZvaWQgY2FjaGVDdXJyZW50VGltZShET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lk
IGNhY2hlQ3VycmVudFRpbWUoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKICAgICB2b2lkIG1h
eWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpOwogICAgIHZvaWQgc2NoZWR1bGVJbnZhbGlkYXRp
b25UYXNrSWZOZWVkZWQoKTsKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpk
ZXRhY2gKICAgICAgICAgbV90aW1lbGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURvY3VtZW50KCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25z
QW5kU2VuZEV2ZW50cyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3ZvaWQgRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1
Y2VkUmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQogewogICAgIEFTU0VSVCghbV90aW1lbGlu
ZXMuaGFzTnVsbFJlZmVyZW5jZXMoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDI2
MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIKKyNpbmNsdWRlICJSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMuaCIKICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaW1l
bGluZShEb2N1bWVudFRpbWVsaW5lJik7CiAgICAgdm9pZCByZW1vdmVUaW1lbGluZShEb2N1bWVu
dFRpbWVsaW5lJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKLSAgICB2b2lkIHVw
ZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hSZXNUaW1lU3RhbXApOworICAgIHZv
aWQgdXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRz
KTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQW5pbWF0aW9uc1RvUHJvY2VzcyB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNzEsNyArNjM3MSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ28KICAgICAgICAgbV9zY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXItPnJlc3VtZSgpOwogfQogCi12b2lkIERvY3VtZW50OjpzZXJ2
aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGlt
ZXN0YW1wKQordm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQogewogICAgIGlmIChtX3Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKICAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1w
KTsKQEAgLTc2MjIsOCArNzYyMiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlv
bk9ic2VydmEKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX2ludGVyc2VjdGlv
bk9ic2VydmVycykgewogICAgICAgICBib29sIG5lZWROb3RpZnkgPSBmYWxzZTsKLSAgICAgICAg
RE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lc3RhbXA7Ci0gICAgICAgIGlmICghb2JzZXJ2ZXItPmNy
ZWF0ZVRpbWVzdGFtcCh0aW1lc3RhbXApKQorICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IG9ic2Vy
dmVyLT5ub3dUaW1lc3RhbXAoKTsKKyAgICAgICAgaWYgKCF0aW1lc3RhbXApCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgZm9yIChFbGVtZW50KiB0YXJnZXQgOiBvYnNlcnZlci0+b2Jz
ZXJ2YXRpb25UYXJnZXRzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHRhcmdldFJlZ2lzdHJhdGlv
bnMgPSB0YXJnZXQtPmludGVyc2VjdGlvbk9ic2VydmVyRGF0YUlmRXhpc3RzKCktPnJlZ2lzdHJh
dGlvbnM7CkBAIC03Njc2LDcgKzc2NzYsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNl
Y3Rpb25PYnNlcnZhCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgb2JzZXJ2
ZXItPmFwcGVuZFF1ZXVlZEVudHJ5KEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OmNyZWF0ZSh7
Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgdGlt
ZXN0YW1wLT5taWxsaXNlY29uZHMoKSwKICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWRSb290
Qm91bmRzLAogICAgICAgICAgICAgICAgICAgICB7IHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC54
KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC55KCksIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVj
dC53aWR0aCgpLCB0YXJnZXRCb3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0KCkgfSwKICAgICAgICAg
ICAgICAgICAgICAgeyBjbGllbnRJbnRlcnNlY3Rpb25SZWN0LngoKSwgY2xpZW50SW50ZXJzZWN0
aW9uUmVjdC55KCksIGNsaWVudEludGVyc2VjdGlvblJlY3Qud2lkdGgoKSwgY2xpZW50SW50ZXJz
ZWN0aW9uUmVjdC5oZWlnaHQoKSB9LApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgwLDcgKzEwODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKIAotICAgIHZvaWQgc2VydmljZVJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrcyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzKTsKIAogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlE
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTQg
KzE5MywxNCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsCiAgICAg
fQogfQogCi12b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrcyhET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCkKK3Zv
aWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCiB7CiAgICAg
aWYgKCFtX2NhbGxiYWNrcy5zaXplKCkgfHwgbV9zdXNwZW5kQ291bnQgfHwgIXJlcXVlc3RBbmlt
YXRpb25GcmFtZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2VTY29wZSB0
cmFjaW5nU2NvcGUoUkFGQ2FsbGJhY2tTdGFydCwgUkFGQ2FsbGJhY2tFbmQpOwogCi0gICAgYXV0
byBoaWdoUmVzTm93TXMgPSBzdGQ6OnJvdW5kKDEwMDAgKiB0aW1lc3RhbXApOworICAgIGF1dG8g
aGlnaFJlc05vd01zID0gdGltZXN0YW1wLm1pbGxpc2Vjb25kcygpOwogICAgIGlmIChtX2RvY3Vt
ZW50ICYmIG1fZG9jdW1lbnQtPnF1aXJrcygpLm5lZWRzTWlsbGlzZWNvbmRSZXNvbHV0aW9uRm9y
SGlnaFJlc1RpbWVTdGFtcCgpKQogICAgICAgICBoaWdoUmVzTm93TXMgKz0gMC4xOwogCkBAIC0y
NzMsNyArMjczLDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdQog
ICAgICAgICByZXR1cm47CiAKICAgICBTZWNvbmRzIGFuaW1hdGlvbkludGVydmFsID0gaW50ZXJ2
YWwoKTsKLSAgICBTZWNvbmRzIHNjaGVkdWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRl
cnZhbCAtIFNlY29uZHMobV9kb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpIC0g
bV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3MpOworICAgIFNlY29uZHMgc2NoZWR1
bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKG1fZG9jdW1lbnQtPmRvbVdp
bmRvdygpLT5ub3dUaW1lc3RhbXAoKSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwg
MF9zKTsKIAogICAgIGlmIChpc1Rocm90dGxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBub3Qg
aWRlYWwgdG8gc25hcHNob3QgdGltZSBib3RoIGluIG5vdygpIGFuZCBub3dUaW1lc3RhbXAoKSwg
dGhlIGxhdHRlciBvZiB3aGljaCBhbHNvIGhhcyByZWR1Y2VkIHJlc29sdXRpb24uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCShy
ZXZpc2lvbiAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAg
ICAgQ2FsbGJhY2tJZCByZWdpc3RlckNhbGxiYWNrKFJlZjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjaz4mJik7CiAgICAgdm9pZCBjYW5jZWxDYWxsYmFjayhDYWxsYmFja0lkKTsKLSAgICB2
b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoRE9NSGlnaFJlc1RpbWVT
dGFtcCB0aW1lc3RhbXApOworICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMpOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7
CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9zdXNwZW5kQ291bnQgeyAwIH07CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOwotICAg
IGRvdWJsZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCB7IDAgfTsKKyAgICBSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgeyAwIH07CiAK
ICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgIE9w
dGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBtX3Rocm90dGxpbmdSZWFzb25zOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MTEwLDcgKzcxMTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVJhdGVD
aGFuZ2VSCiBSZWZQdHI8VmlkZW9QbGF5YmFja1F1YWxpdHk+IEhUTUxNZWRpYUVsZW1lbnQ6Omdl
dFZpZGVvUGxheWJhY2tRdWFsaXR5KCkKIHsKICAgICBSZWZQdHI8RE9NV2luZG93PiBkb21XaW5k
b3cgPSBkb2N1bWVudCgpLmRvbVdpbmRvdygpOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBkb21X
aW5kb3cgPyAxMDAwICogZG9tV2luZG93LT5ub3dUaW1lc3RhbXAoKSA6IDA7CisgICAgZG91Ymxl
IHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCkubWlsbGlz
ZWNvbmRzKCkgOiAwOwogCiAgICAgYXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+
dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFt
ZXRyaWNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjYwNTU5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MzUsOSArNzM1LDkgQEAgUGVyZm9ybWFuY2UmIERPTVdpbmRvdzo6cGVyZm9ybWFuY2UoKSBj
bwogICAgIHJldHVybiAqbV9wZXJmb3JtYW5jZTsKIH0KIAotZG91YmxlIERPTVdpbmRvdzo6bm93
VGltZXN0YW1wKCkgY29uc3QKK1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBET01XaW5kb3c6Om5v
d1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBlcmZvcm1hbmNlKCkubm93KCkgLyAx
MDAwLjsKKyAgICByZXR1cm4gcGVyZm9ybWFuY2UoKS5ub3dJblJlZHVjZWRSZXNvbHV0aW9uU2Vj
b25kcygpOwogfQogCiBMb2NhdGlvbiYgRE9NV2luZG93Ojpsb2NhdGlvbigpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgog
I2luY2x1ZGUgIlBvc3RNZXNzYWdlT3B0aW9ucy5oIgorI2luY2x1ZGUgIlJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcy5oIgogI2luY2x1ZGUgIlNjcm9sbFRvT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTM0OSw3ICszNTAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFBlcmZvcm1hbmNlJiBwZXJmb3JtYW5jZSgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBub3dUaW1lc3RhbXAoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbm93VGltZXN0YW1wKCkg
Y29uc3Q7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgaW5jcmVtZW50U2Ny
b2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlci5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
MjEgKzI0NCwyMSBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjpyb290RGVzdHJveWVkCiAg
ICAgbV9yb290ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3Jl
YXRlVGltZXN0YW1wKERPTUhpZ2hSZXNUaW1lU3RhbXAmIHRpbWVzdGFtcCkgY29uc3QKK09wdGlv
bmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1Rp
bWVzdGFtcCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxiYWNrKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBjb250ZXh0
ID0gbV9jYWxsYmFjay0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgIGlmIChhdXRvKiB3aW5kb3cgPSBk
b2N1bWVudC5kb21XaW5kb3coKSkgewotICAgICAgICB0aW1lc3RhbXAgPSAgd2luZG93LT5wZXJm
b3JtYW5jZSgpLm5vdygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkKKyAg
ICAgICAgcmV0dXJuIHdpbmRvdy0+bm93VGltZXN0YW1wKCk7CisgICAgCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIH0KIAogdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVk
RW50cnkoUmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+JiYgZW50cnkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCShyZXZpc2lvbiAyNjA1NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT2JzZXJ2YXRpb25U
YXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZhdGlvblRhcmdldHMuc2l6ZSgpOyB9CiAg
ICAgdm9pZCByb290RGVzdHJveWVkKCk7CiAKLSAgICBib29sIGNyZWF0ZVRpbWVzdGFtcChET01I
aWdoUmVzVGltZVN0YW1wJikgY29uc3Q7CisgICAgT3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzPiBub3dUaW1lc3RhbXAoKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVldWVkRW50
cnkoUmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+JiYpOwogICAgIHZvaWQgbm90aWZ5KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZv
aWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3Vt
ZW50JiBkb2N1bWVudCkgewogICAgICAgICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBET01IaWdoUmVzVGltZVN0YW1wIHRpbWVzdGFtcCA9
IGRvY3VtZW50LmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKTsKKyAgICAgICAgYXV0byB0aW1l
c3RhbXAgPSBkb2N1bWVudC5kb21XaW5kb3coKS0+bm93VGltZXN0YW1wKCk7CiAgICAgICAgIGlm
IChhdXRvKiB0aW1lbGluZXNDb250cm9sbGVyID0gZG9jdW1lbnQudGltZWxpbmVzQ29udHJvbGxl
cigpKQogICAgICAgICAgICAgdGltZWxpbmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHModGltZXN0YW1wKTsKICAgICAgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNj
cmVlbiBzdGVwcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCShyZXZpc2lv
biAyNjA1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsOCArNzQsMTMgQEAgdm9pZCBQZXJmb3JtYW5jZTo6Y29udGV4dERlc3Ry
b3llZCgpCiAKIERPTUhpZ2hSZXNUaW1lU3RhbXAgUGVyZm9ybWFuY2U6Om5vdygpIGNvbnN0CiB7
CisgICAgcmV0dXJuIG5vd0luUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKCkubWlsbGlzZWNvbmRz
KCk7Cit9CisKK1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBQZXJmb3JtYW5jZTo6bm93SW5SZWR1
Y2VkUmVzb2x1dGlvblNlY29uZHMoKSBjb25zdAorewogICAgIFNlY29uZHMgbm93ID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW47Ci0gICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNv
bHV0aW9uKG5vdykubWlsbGlzZWNvbmRzKCk7CisgICAgcmV0dXJuIHJlZHVjZVRpbWVSZXNvbHV0
aW9uKG5vdyk7CiB9CiAKIFNlY29uZHMgUGVyZm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9u
KFNlY29uZHMgc2Vjb25kcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgJKHJldmlz
aW9uIDI2MDU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCisjaW5j
bHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgog
ICAgIH5QZXJmb3JtYW5jZSgpOwogCiAgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBub3coKSBjb25z
dDsKKyAgICBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbm93SW5SZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMoKSBjb25zdDsKIAogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdhdGlvbigp
OwogICAgIFBlcmZvcm1hbmNlVGltaW5nKiB0aW1pbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1JlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgUmVkdWNl
ZFJlc29sdXRpb25TZWNvbmRzID0gU2Vjb25kczsKKworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjYwNjk1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0wNC0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmRlcmluZyB1cGRhdGUgc3RlcHMgc2hvdWxkIHVz
ZSBTZWNvbmRzIGZvciB0aGUgdGltZXN0YW1wcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVs
IEJhdGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OnRpbWVzdGFtcCBjb25zdCk6CisKIDIwMjAtMDQtMjQgIERpZWdvIFBp
bm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtEZWJ1Z10gVW5y
ZXZpZXdlZCwgZml4IGJ1aWxkIGFmdGVyIHIyNjAwNjMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjYw
NTU5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcg
KzE4MCw3IEBAIGRvdWJsZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjp0aW1lc3RhbXAKICAgICBh
dXRvKiBkb2N1bWVudCA9IG1fcGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBkb2N1
bWVudC0+ZG9tV2luZG93KCkgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgp
IDogZG9jdW1lbnQtPm1vbm90b25pY1RpbWVzdGFtcCgpOworICAgIHJldHVybiBkb2N1bWVudC0+
ZG9tV2luZG93KCkgPyBkb2N1bWVudC0+ZG9tV2luZG93KCktPm5vd1RpbWVzdGFtcCgpLnNlY29u
ZHMoKSA6IGRvY3VtZW50LT5tb25vdG9uaWNUaW1lc3RhbXAoKTsKIH0KIAogdm9pZCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpzeW5jRGlzcGxheVN0YXRlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397873</attachid>
            <date>2020-04-28 12:37:48 -0700</date>
            <delta_ts>2020-04-28 17:33:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200428123747.patch</filename>
            <type>text/plain</type>
            <size>12133</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA4MzgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBzdGVw
cyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG1ldGhvZCBTZWNvbmRzOjpy
b3VuZGVkTWlsbGlzZWNvbmRzKCkgd2hpY2ggc2hvdWxkIGJlIHVzZWQgd2hlbgorICAgICAgICBl
eHBvc2luZyBhIHRpbWVzdGFtcCB0byBKYXZhU2NyaXB0LgorCisgICAgICAgICogd3RmL1NlY29u
ZHMuaDoKKwogMjAyMC0wNC0yNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQg
YXR0cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2Vj
b25kcy5oCShyZXZpc2lvbiAyNjA3OTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgZG91
YmxlIG1pY3Jvc2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1pbGxpc2Vjb25kcygpICogMTAwMDsg
fQogICAgIGNvbnN0ZXhwciBkb3VibGUgbmFub3NlY29uZHMoKSBjb25zdCB7IHJldHVybiBtaWNy
b3NlY29uZHMoKSAqIDEwMDA7IH0KIAorICAgIGRvdWJsZSByb3VuZGVkTWlsbGlzZWNvbmRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gbWlsbGlzZWNvbmRzID0gc3RkOjpyb3VuZCh0aGlz
LT5taWNyb3NlY29uZHMoKSkgLyAxMDAwOworICAgICAgICBpZiAobWlsbGlzZWNvbmRzID09IC0w
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtaWxsaXNlY29uZHM7Cisg
ICAgfQorCiAgICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgU2Vjb25kcyBpcyBoZWxkIGluIGRvdWJs
ZS4gSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiByYW5nZSBvZiA1M2JpdCBpbnRlZ2VyLCB0aGUgcmVz
dWx0IG1heSBub3QgYmUgcHJlY2lzZS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIG1pbnV0
ZXNBcygpIGNvbnN0IHsgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwg
IiIpOyByZXR1cm4gY2xhbXBUb0FjY2VwdGluZzY0PFQ+KG1pbnV0ZXMoKSk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIHNlY29uZHNBcygpIGNvbnN0IHsgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIiIpOyByZXR1cm4gY2xhbXBUb0FjY2VwdGluZzY0PFQ+
KHNlY29uZHMoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDgzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIw
LTA0LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBzdGVwcyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0
aW1lc3RhbXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTA5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCb3RoIFdlYkFuaW1hdGlvbiBEb2N1bWVudExpbmUgY3VycmVudFRpbWUgYW5kIHJBRiBjYWxs
YmFjayB0aW1lc3RhbXAKKyAgICAgICAgc2hvdWxkIGJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3Qg
bWlsbGlzZWNvbmRzLiBUaGlzIHdhcyB0aGUgYmVoYXZpb3IKKyAgICAgICAgYmVmb3JlIHIyNjA3
MzYgd2hlcmUgdGhlIHJvdW5kaW5nIGluIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFja3MoKQorICAgICAgICB3YXMgcmVtb3ZlZC4KKworICAgICAgICBTaW5jZSBhbGwgdGhlIERv
Y3VtZW50TGluZSBjdXJyZW50VGltZSBhbmQgckFGIGNhbGxiYWNrIHRpbWVzdGFtcCBhcmUgbm93
CisgICAgICAgIGluIFNlY29uZHMsIHRoZSBmaXggaXMgdG8gYWRkIHRoZSBtZXRob2QgU2Vjb25k
czo6cm91bmRlZE1pbGxpc2Vjb25kcygpCisgICAgICAgIHdoaWNoIHdpbGwgcmVwbGFjZSBzZWNv
bmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgpLiBUaGUgbmV3IG1ldGhvZCB3aWxsCisgICAgICAg
IGJlIHVzZWQgZnJvbSBub3cgb24gd2hlbiBleHBvc2luZyB0aGUgdGltZXN0YW1wcyB0byBKYXZh
U2NyaXB0LgorCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q6OmdldFRpbWluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nIGNvbnN0KToKKyAg
ICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25QbGF5YmFja0V2ZW50OjpiaW5kaW5nc0N1cnJlbnRUaW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzVGlt
ZWxpbmVUaW1lIGNvbnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVu
dFRpbWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToK
KyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkFuaW1hdGlvbjo6c3RhcnRUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSBjb25zdCk6CisgICAgICAgICogYW5pbWF0aW9u
L1dlYkFuaW1hdGlvblV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6c2Vjb25kc1RvV2Vi
QW5pbWF0aW9uc0FQSVRpbWUpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKwogMjAy
MC0wNC0yOCAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBO
dWxscHRyIGNyYXNoIGluIEVkaXRDb21tYW5kOjpFZGl0Q29tbWFuZCB2aWEgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlbW92ZU5vZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25FZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25FZmZlY3QuY3BwCShyZXZpc2lvbiAyNjA3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUz
LDE1IEBAIEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJpbmRpbmcKIEVmZmVjdFRp
bWluZyBBbmltYXRpb25FZmZlY3Q6OmdldFRpbWluZygpIGNvbnN0CiB7CiAgICAgRWZmZWN0VGlt
aW5nIHRpbWluZzsKLSAgICB0aW1pbmcuZGVsYXkgPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJ
VGltZShtX2RlbGF5KTsKLSAgICB0aW1pbmcuZW5kRGVsYXkgPSBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZShtX2VuZERlbGF5KTsKKyAgICB0aW1pbmcuZGVsYXkgPSBtX2RlbGF5LnJvdW5k
ZWRNaWxsaXNlY29uZHMoKTsKKyAgICB0aW1pbmcuZW5kRGVsYXkgPSBtX2VuZERlbGF5LnJvdW5k
ZWRNaWxsaXNlY29uZHMoKTsKICAgICB0aW1pbmcuZmlsbCA9IG1fZmlsbDsKICAgICB0aW1pbmcu
aXRlcmF0aW9uU3RhcnQgPSBtX2l0ZXJhdGlvblN0YXJ0OwogICAgIHRpbWluZy5pdGVyYXRpb25z
ID0gbV9pdGVyYXRpb25zOwogICAgIGlmIChtX2l0ZXJhdGlvbkR1cmF0aW9uID09IDBfcykKICAg
ICAgICAgdGltaW5nLmR1cmF0aW9uID0gImF1dG8iOwogICAgIGVsc2UKLSAgICAgICAgdGltaW5n
LmR1cmF0aW9uID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9pdGVyYXRpb25EdXJh
dGlvbik7CisgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IG1faXRlcmF0aW9uRHVyYXRpb24ucm91
bmRlZE1pbGxpc2Vjb25kcygpOwogICAgIHRpbWluZy5kaXJlY3Rpb24gPSBtX2RpcmVjdGlvbjsK
ICAgICB0aW1pbmcuZWFzaW5nID0gbV90aW1pbmdGdW5jdGlvbi0+Y3NzVGV4dCgpOwogICAgIHJl
dHVybiB0aW1pbmc7CkBAIC0xOTYsNyArMTk2LDcgQEAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5p
bWF0aW9uRWZmZWN0OjpnZQogICAgICAgICAgICAgb3ZlcmFsbFByb2dyZXNzID0gcGhhc2UgPT0g
QW5pbWF0aW9uRWZmZWN0UGhhc2U6OkJlZm9yZSA/IDAgOiBtX2l0ZXJhdGlvbnM7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGxldCBvdmVyYWxsIHByb2dyZXNz
IGJlIHRoZSByZXN1bHQgb2YgY2FsY3VsYXRpbmcgYWN0aXZlIHRpbWUgLyBpdGVyYXRpb24gZHVy
YXRpb24uCi0gICAgICAgICAgICBvdmVyYWxsUHJvZ3Jlc3MgPSBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZSgqYWN0aXZlVGltZSkgLyBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSht
X2l0ZXJhdGlvbkR1cmF0aW9uKTsKKyAgICAgICAgICAgIG92ZXJhbGxQcm9ncmVzcyA9IGFjdGl2
ZVRpbWUtPnJvdW5kZWRNaWxsaXNlY29uZHMoKSAvIG1faXRlcmF0aW9uRHVyYXRpb24ucm91bmRl
ZE1pbGxpc2Vjb25kcygpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gMy4gUmV0dXJuIHRoZSBy
ZXN1bHQgb2YgY2FsY3VsYXRpbmcgb3ZlcmFsbCBwcm9ncmVzcyArIGl0ZXJhdGlvbiBzdGFydC4K
QEAgLTMzMywxOCArMzMzLDE4IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVj
dDo6Z2UKICAgICB9KCk7CiAKICAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWlu
ZzsKLSAgICBjb21wdXRlZFRpbWluZy5kZWxheSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElU
aW1lKG1fZGVsYXkpOwotICAgIGNvbXB1dGVkVGltaW5nLmVuZERlbGF5ID0gc2Vjb25kc1RvV2Vi
QW5pbWF0aW9uc0FQSVRpbWUobV9lbmREZWxheSk7CisgICAgY29tcHV0ZWRUaW1pbmcuZGVsYXkg
PSBtX2RlbGF5LnJvdW5kZWRNaWxsaXNlY29uZHMoKTsKKyAgICBjb21wdXRlZFRpbWluZy5lbmRE
ZWxheSA9IG1fZW5kRGVsYXkucm91bmRlZE1pbGxpc2Vjb25kcygpOwogICAgIGNvbXB1dGVkVGlt
aW5nLmZpbGwgPSBtX2ZpbGwgPT0gRmlsbE1vZGU6OkF1dG8gPyBGaWxsTW9kZTo6Tm9uZSA6IG1f
ZmlsbDsKICAgICBjb21wdXRlZFRpbWluZy5pdGVyYXRpb25TdGFydCA9IG1faXRlcmF0aW9uU3Rh
cnQ7CiAgICAgY29tcHV0ZWRUaW1pbmcuaXRlcmF0aW9ucyA9IG1faXRlcmF0aW9uczsKLSAgICBj
b21wdXRlZFRpbWluZy5kdXJhdGlvbiA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKG1f
aXRlcmF0aW9uRHVyYXRpb24pOworICAgIGNvbXB1dGVkVGltaW5nLmR1cmF0aW9uID0gbV9pdGVy
YXRpb25EdXJhdGlvbi5yb3VuZGVkTWlsbGlzZWNvbmRzKCk7CiAgICAgY29tcHV0ZWRUaW1pbmcu
ZGlyZWN0aW9uID0gbV9kaXJlY3Rpb247CiAgICAgY29tcHV0ZWRUaW1pbmcuZWFzaW5nID0gbV90
aW1pbmdGdW5jdGlvbi0+Y3NzVGV4dCgpOwotICAgIGNvbXB1dGVkVGltaW5nLmVuZFRpbWUgPSBz
ZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShtX2VuZFRpbWUpOwotICAgIGNvbXB1dGVkVGlt
aW5nLmFjdGl2ZUR1cmF0aW9uID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9hY3Rp
dmVEdXJhdGlvbik7CisgICAgY29tcHV0ZWRUaW1pbmcuZW5kVGltZSA9IG1fZW5kVGltZS5yb3Vu
ZGVkTWlsbGlzZWNvbmRzKCk7CisgICAgY29tcHV0ZWRUaW1pbmcuYWN0aXZlRHVyYXRpb24gPSBt
X2FjdGl2ZUR1cmF0aW9uLnJvdW5kZWRNaWxsaXNlY29uZHMoKTsKICAgICBpZiAoYmFzaWNFZmZl
Y3RUaW1pbmcubG9jYWxUaW1lKQotICAgICAgICBjb21wdXRlZFRpbWluZy5sb2NhbFRpbWUgPSBz
ZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqYmFzaWNFZmZlY3RUaW1pbmcubG9jYWxUaW1l
KTsKKyAgICAgICAgY29tcHV0ZWRUaW1pbmcubG9jYWxUaW1lID0gYmFzaWNFZmZlY3RUaW1pbmcu
bG9jYWxUaW1lLT5yb3VuZGVkTWlsbGlzZWNvbmRzKCk7CiAgICAgY29tcHV0ZWRUaW1pbmcuc2lt
cGxlSXRlcmF0aW9uUHJvZ3Jlc3MgPSBzaW1wbGVJdGVyYXRpb25Qcm9ncmVzczsKICAgICBjb21w
dXRlZFRpbWluZy5wcm9ncmVzcyA9IHRyYW5zZm9ybWVkUHJvZ3Jlc3M7CiAgICAgY29tcHV0ZWRU
aW1pbmcuY3VycmVudEl0ZXJhdGlvbiA9IGN1cnJlbnRJdGVyYXRpb247CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwCShy
ZXZpc2lvbiAyNjA3OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxh
eWJhY2tFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE0ICs1OSwxNCBAQCBPcHRpb25h
bDxkb3VibGU+IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRU
aW1lKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShtX2N1cnJlbnRUaW1lLnZhbHVlKCkpOworICAgIHJldHVybiBt
X2N1cnJlbnRUaW1lLT5yb3VuZGVkTWlsbGlzZWNvbmRzKCk7CiB9CiAKIE9wdGlvbmFsPGRvdWJs
ZT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NUaW1lbGluZVRpbWUoKSBjb25zdAog
ewotICAgIGlmICghdGltZWxpbmVUaW1lKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKHRpbWVsaW5lVGltZSgp
LnZhbHVlKCkpOworICAgIGlmIChhdXRvIHRpbWUgPSB0aW1lbGluZVRpbWUoKSkKKyAgICAgICAg
cmV0dXJuIHRpbWUtPnJvdW5kZWRNaWxsaXNlY29uZHMoKTsKKyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAJKHJldmlzaW9uIDI2MDc5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDEwICs5Myw5IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUFu
aW1hdGlvbigKIAogT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25UaW1lbGluZTo6YmluZGluZ3ND
dXJyZW50VGltZSgpCiB7Ci0gICAgYXV0byB0aW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAo
IXRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHNlY29uZHNU
b1dlYkFuaW1hdGlvbnNBUElUaW1lKCp0aW1lKTsKKyAgICBpZiAoYXV0byB0aW1lID0gY3VycmVu
dFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIHRpbWUtPnJvdW5kZWRNaWxsaXNlY29uZHMoKTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjphbmlt
YXRpb25XYXNBZGRlZFRvRWxlbWVudChXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgRWxlbWVudCYg
ZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1h
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjYwNzk1KQorKysgU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmUKICAgICBp
ZiAoIW1fb3duaW5nRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB0aW1lID0g
c2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoZWxhcHNlZFRpbWUpIC8gMTAwMDsKKyAgICBh
dXRvIHRpbWUgPSBlbGFwc2VkVGltZS5yb3VuZGVkTWlsbGlzZWNvbmRzKCkgLyAxMDAwOwogICAg
IGNvbnN0IGF1dG8mIHBzZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVG
b3JFdmVudHMobV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKTsKICAgICBhdXRvIHRpbWVsaW5l
VGltZSA9IHRpbWVsaW5lKCkgPyB0aW1lbGluZSgpLT5jdXJyZW50VGltZSgpIDogV1RGOjpudWxs
b3B0OwogICAgIGF1dG8gZXZlbnQgPSBjcmVhdGVFdmVudChldmVudFR5cGUsIHRpbWUsIHBzZXVk
b0lkLCB0aW1lbGluZVRpbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDcgQEAgT3B0
aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OnN0YXJ0VGltZQogewogICAgIGlmICghbV9zdGFy
dFRpbWUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHNlY29uZHNU
b1dlYkFuaW1hdGlvbnNBUElUaW1lKG1fc3RhcnRUaW1lLnZhbHVlKCkpOworICAgIHJldHVybiBt
X3N0YXJ0VGltZS0+cm91bmRlZE1pbGxpc2Vjb25kcygpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlv
bjo6c2V0QmluZGluZ3NTdGFydFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUpCkBAIC0z
NjMsMTAgKzM2Myw5IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRTdGFydFRpbWUoT3B0aW9uYWwK
IAogT3B0aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzQ3VycmVudFRpbWUoKSBj
b25zdAogewotICAgIGF1dG8gdGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKCF0aW1lKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmlt
YXRpb25zQVBJVGltZSh0aW1lLnZhbHVlKCkpOworICAgIGlmIChhdXRvIHRpbWUgPSBjdXJyZW50
VGltZSgpKQorICAgICAgICByZXR1cm4gdGltZS0+cm91bmRlZE1pbGxpc2Vjb25kcygpOworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlv
bjo6c2V0QmluZGluZ3NDdXJyZW50VGltZShPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRUaW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRp
ZXMuaAkocmV2aXNpb24gMjYwNzk1KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvblV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMCArMzQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRpb25MaXN0OwogY2xhc3MgV2ViQW5pbWF0aW9u
OwogCi1pbmxpbmUgZG91YmxlIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGNvbnN0IFNl
Y29uZHMgdGltZSkKLXsKLSAgICAvLyBQcmVjaXNpb24gb2YgdGltZSB2YWx1ZXMKLSAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jcHJlY2lzaW9uLW9mLXRp
bWUtdmFsdWVzCi0KLSAgICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGltZSB2
YWx1ZXMgaXMgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGhvd2V2ZXIsIGl0IGlzIFJFQ09NTUVO
REVEIHRoYXQgdXNlcgotICAgIC8vIGFnZW50cyBiZSBhYmxlIHRvIHJlcHJlc2VudCBpbnB1dCB0
aW1lIHZhbHVlcyB3aXRoIG1pY3Jvc2Vjb25kIHByZWNpc2lvbiBzbyB0aGF0IGEgdGltZSB2YWx1
ZSAod2hpY2ggbm9taW5hbGx5Ci0gICAgLy8gcmVwcmVzZW50cyBtaWxsaXNlY29uZHMpIG9mIDAu
MDAxIGlzIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIDAuMC4KLSAgICBhdXRvIHJvdW5kZWRUaW1lID0g
c3RkOjpyb3VuZCh0aW1lLm1pY3Jvc2Vjb25kcygpKSAvIDEwMDA7Ci0gICAgaWYgKHJvdW5kZWRU
aW1lID09IC0wKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcm91bmRlZFRpbWU7Ci19
Ci0KIGNvbnN0IGF1dG8gdGltZUVwc2lsb24gPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDAu
MDAxKTsKIAogYm9vbCBjb21wYXJlQW5pbWF0aW9uc0J5Q29tcG9zaXRlT3JkZXIoV2ViQW5pbWF0
aW9uJiwgV2ViQW5pbWF0aW9uJiwgY29uc3QgQW5pbWF0aW9uTGlzdCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI2MDc5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpYwogCiAgICAgVHJhY2VTY29wZSB0cmFjaW5n
U2NvcGUoUkFGQ2FsbGJhY2tTdGFydCwgUkFGQ2FsbGJhY2tFbmQpOwogCi0gICAgYXV0byBoaWdo
UmVzTm93TXMgPSB0aW1lc3RhbXAubWlsbGlzZWNvbmRzKCk7CisgICAgYXV0byBoaWdoUmVzTm93
TXMgPSB0aW1lc3RhbXAucm91bmRlZE1pbGxpc2Vjb25kcygpOwogICAgIGlmIChtX2RvY3VtZW50
ICYmIG1fZG9jdW1lbnQtPnF1aXJrcygpLm5lZWRzTWlsbGlzZWNvbmRSZXNvbHV0aW9uRm9ySGln
aFJlc1RpbWVTdGFtcCgpKQogICAgICAgICBoaWdoUmVzTm93TXMgKz0gMC4xOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397912</attachid>
            <date>2020-04-28 17:33:36 -0700</date>
            <delta_ts>2023-05-10 12:37:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210990-20200428173335.patch</filename>
            <type>text/plain</type>
            <size>6318</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA4NTcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIHVwZGF0ZSBzdGVw
cyBzaG91bGQgdXNlIFNlY29uZHMgZm9yIHRoZSB0aW1lc3RhbXBzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA5OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG1ldGhvZCBTZWNvbmRzOjpy
b3VuZGVkTWlsbGlzZWNvbmRzKCkgd2hpY2ggc2hvdWxkIGJlIHVzZWQgd2hlbgorICAgICAgICBl
eHBvc2luZyBhIHRpbWVzdGFtcCB0byBKYXZhU2NyaXB0LgorCisgICAgICAgICogd3RmL1NlY29u
ZHMuaDoKKwogMjAyMC0wNC0yNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQg
YXR0cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2Vj
b25kcy5oCShyZXZpc2lvbiAyNjA4NTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIGNvbnN0ZXhwciBkb3Vi
bGUgbWljcm9zZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gbWlsbGlzZWNvbmRzKCkgKiAxMDAwOyB9
CiAgICAgY29uc3RleHByIGRvdWJsZSBuYW5vc2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1pY3Jv
c2Vjb25kcygpICogMTAwMDsgfQogCisgICAgZG91YmxlIHJvdW5kZWRNaWxsaXNlY29uZHMoKSBj
b25zdCB7IHJldHVybiBzdGQ6OnJvdW5kKG1pY3Jvc2Vjb25kcygpKSAvIDEwMDA7IH0KKwogICAg
IC8vIEtlZXAgaW4gbWluZCB0aGF0IFNlY29uZHMgaXMgaGVsZCBpbiBkb3VibGUuIElmIHRoZSB2
YWx1ZSBpcyBub3QgaW4gcmFuZ2Ugb2YgNTNiaXQgaW50ZWdlciwgdGhlIHJlc3VsdCBtYXkgbm90
IGJlIHByZWNpc2UuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBtaW51dGVzQXMoKSBjb25z
dCB7IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICIiKTsgcmV0dXJu
IGNsYW1wVG9BY2NlcHRpbmc2NDxUPihtaW51dGVzKCkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVCBzZWNvbmRzQXMoKSBjb25zdCB7IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3Jh
bDxUPjo6dmFsdWUsICIiKTsgcmV0dXJuIGNsYW1wVG9BY2NlcHRpbmc2NDxUPihzZWNvbmRzKCkp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNC0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmRl
cmluZyB1cGRhdGUgc3RlcHMgc2hvdWxkIHVzZSBTZWNvbmRzIGZvciB0aGUgdGltZXN0YW1wcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwOTkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBXZWJB
bmltYXRpb24gRG9jdW1lbnRMaW5lIGN1cnJlbnRUaW1lIGFuZCByQUYgY2FsbGJhY2sgdGltZXN0
YW1wCisgICAgICAgIHNob3VsZCBiZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pbGxpc2Vjb25k
cy4gVGhpcyB3YXMgdGhlIGJlaGF2aW9yCisgICAgICAgIGJlZm9yZSByMjYwNzM2IHdoZXJlIHRo
ZSByb3VuZGluZyBpbiBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCkKKyAg
ICAgICAgd2FzIHJlbW92ZWQuCisKKyAgICAgICAgU2luY2UgdGhlIERvY3VtZW50TGluZSBjdXJy
ZW50VGltZSBhbmQgckFGIGNhbGxiYWNrIHRpbWVzdGFtcCBhcmUgbm93CisgICAgICAgIGluIFNl
Y29uZHMsIHRoZSBmaXggaXMgdG8gYWRkIHRoZSBtZXRob2QgU2Vjb25kczo6cm91bmRlZE1pbGxp
c2Vjb25kcygpCisgICAgICAgIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBzZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCkgYW5kCisgICAgICAgIHNlY29uZHNUb1dlYkFuaW1hdGlv
bnNBUElUaW1lKCkuCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRp
bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpzdGFydFRpbWUgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlv
bi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNlY29uZHNUb1dl
YkFuaW1hdGlvbnNBUElUaW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyk6CisKIDIwMjAtMDQtMjgg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybml6ZSBF
bmRQb2ludHNBZGp1c3RtZW50TW9kZSBlbnVtZXJhdGlvbiBhbmQgZml4IG1pc3NwZWxsZWQgZW51
bWVyYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuY3BwCShyZXZpc2lvbiAyNjA4NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUFuaW1hdGlvbigKICAgICB9CiB9CiAKLU9wdGlv
bmFsPGRvdWJsZT4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQorT3B0
aW9uYWw8RE9NSGlnaFJlc1RpbWVTdGFtcD4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3Vy
cmVudFRpbWUoKQogewogICAgIGF1dG8gdGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCF0
aW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAJKHJl
dmlzaW9uIDI2MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBXZWJBbmltYXRpb246
OmVmZmVjdFRhcmdldERpZENoYW5nZQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGFyZ2V0KCp0aGlzKTsKIH0KIAotT3B0aW9uYWw8ZG91
YmxlPiBXZWJBbmltYXRpb246OnN0YXJ0VGltZSgpIGNvbnN0CitPcHRpb25hbDxET01IaWdoUmVz
VGltZVN0YW1wPiBXZWJBbmltYXRpb246OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3N0YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgJKHJldmlzaW9u
IDI2MDg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CkBA
IC0zNCw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuaW1hdGlvbkxpc3Q7
CiBjbGFzcyBXZWJBbmltYXRpb247CiAKLWlubGluZSBkb3VibGUgc2Vjb25kc1RvV2ViQW5pbWF0
aW9uc0FQSVRpbWUoY29uc3QgU2Vjb25kcyB0aW1lKQoraW5saW5lIERPTUhpZ2hSZXNUaW1lU3Rh
bXAgc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoY29uc3QgU2Vjb25kcyB0aW1lKQogewog
ICAgIC8vIFByZWNpc2lvbiBvZiB0aW1lIHZhbHVlcwogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNwcmVjaXNpb24tb2YtdGltZS12YWx1ZXMKQEAgLTQy
LDcgKzQzLDcgQEAgaW5saW5lIGRvdWJsZSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVAogICAg
IC8vIFRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aW1lIHZhbHVlcyBpcyBpbXBsZW1l
bnRhdGlvbiBkZXBlbmRlbnQgaG93ZXZlciwgaXQgaXMgUkVDT01NRU5ERUQgdGhhdCB1c2VyCiAg
ICAgLy8gYWdlbnRzIGJlIGFibGUgdG8gcmVwcmVzZW50IGlucHV0IHRpbWUgdmFsdWVzIHdpdGgg
bWljcm9zZWNvbmQgcHJlY2lzaW9uIHNvIHRoYXQgYSB0aW1lIHZhbHVlICh3aGljaCBub21pbmFs
bHkKICAgICAvLyByZXByZXNlbnRzIG1pbGxpc2Vjb25kcykgb2YgMC4wMDEgaXMgZGlzdGluZ3Vp
c2hhYmxlIGZyb20gMC4wLgotICAgIGF1dG8gcm91bmRlZFRpbWUgPSBzdGQ6OnJvdW5kKHRpbWUu
bWljcm9zZWNvbmRzKCkpIC8gMTAwMDsKKyAgICBhdXRvIHJvdW5kZWRUaW1lID0gdGltZS5yb3Vu
ZGVkTWlsbGlzZWNvbmRzKCk7CiAgICAgaWYgKHJvdW5kZWRUaW1lID09IC0wKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gcm91bmRlZFRpbWU7CkBAIC01Myw0ICs1NCwzIEBAIGNvbnN0
IGF1dG8gdGltZUVwc2lsb24gPSBTZWNvbmRzOjpmcm9tTWkKIGJvb2wgY29tcGFyZUFuaW1hdGlv
bnNCeUNvbXBvc2l0ZU9yZGVyKFdlYkFuaW1hdGlvbiYsIFdlYkFuaW1hdGlvbiYsIGNvbnN0IEFu
aW1hdGlvbkxpc3QqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjYwODU1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljCiAKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdT
Y29wZShSQUZDYWxsYmFja1N0YXJ0LCBSQUZDYWxsYmFja0VuZCk7CiAKLSAgICBhdXRvIGhpZ2hS
ZXNOb3dNcyA9IHRpbWVzdGFtcC5taWxsaXNlY29uZHMoKTsKKyAgICBhdXRvIGhpZ2hSZXNOb3dN
cyA9IHRpbWVzdGFtcC5yb3VuZGVkTWlsbGlzZWNvbmRzKCk7CiAgICAgaWYgKG1fZG9jdW1lbnQg
JiYgbV9kb2N1bWVudC0+cXVpcmtzKCkubmVlZHNNaWxsaXNlY29uZFJlc29sdXRpb25Gb3JIaWdo
UmVzVGltZVN0YW1wKCkpCiAgICAgICAgIGhpZ2hSZXNOb3dNcyArPSAwLjE7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>