<?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>37743</bug_id>
          
          <creation_ts>2010-04-16 18:34:20 -0700</creation_ts>
          <short_desc>Separate clock time functions used by JavaScript from monotonically increasing time needed elsewhere</short_desc>
          <delta_ts>2011-06-10 08:53:18 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>61257</dependson>
          <blocked>62161</blocked>
    
    <blocked>31256</blocked>
    
    <blocked>31550</blocked>
    
    <blocked>58354</blocked>
    
    <blocked>62159</blocked>
    
    <blocked>62162</blocked>
    
    <blocked>62175</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>charles.wei</cc>
    
    <cc>darin</cc>
    
    <cc>dave+webkit</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>gustavo</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>jamesr</cc>
    
    <cc>jasonliuwebkit</cc>
    
    <cc>kling</cc>
    
    <cc>leo.yang</cc>
    
    <cc>logingx</cc>
    
    <cc>sam</cc>
    
    <cc>simonjam</cc>
    
    <cc>staikos</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213550</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-04-16 18:34:20 -0700</bug_when>
    <thetext>The only case currentTime() is used as current UTC time is in by jsCurrentTime() (through currentTimeMS()).

In all other cases, currentTime() is used as a system tick count and is supposed to be monotonically increasing, in other words, it shouldn&apos;t come backwards.

These cases include (but not limited to):

1) WebCore
2) Threading code
3) TimeoutChecker

We should separate these 2 usages by removing the dependency of jsCurrentTime() on currentTime(). Then we can make jsCurrentTime() return current UTC time, and make currentTime() an increasing system count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213554</commentid>
    <comment_count>1</comment_count>
      <attachid>53588</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-04-16 18:49:29 -0700</bug_when>
    <thetext>Created attachment 53588
a start

Can anyone add implementation of currentUTCTime() and fix currentTime() for his favorite platform? Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213555</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 18:50:25 -0700</bug_when>
    <thetext>Attachment 53588 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213558</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 19:10:20 -0700</bug_when>
    <thetext>Attachment 53588 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1671373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213560</commentid>
    <comment_count>4</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-04-16 19:13:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 53588 [details] did not build on chromium:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/1671373

Does chromium use another CurrentTime.h? Or it needs a clean build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213665</commentid>
    <comment_count>5</comment_count>
      <attachid>53588</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-17 14:05:39 -0700</bug_when>
    <thetext>Comment on attachment 53588
a start

This looks like a good fix, but I&apos;m a little concerned about the existing function continuing to be called &apos;currentTime&apos;, since it does not return the current time!  &apos;tickCount()&apos;, perhaps, or &apos;monotonicTime()&apos;?  I&apos;d suggest having caught this bug it&apos;d be really good to change the name of that function (plus &apos;currentTimeMS&apos; to match), to make its meaning a little clearer &amp; prevent similar problems in the future.

r- to this patch for chromium breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214393</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-19 17:57:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 53588 [details])
&gt; This looks like a good fix, but I&apos;m a little concerned about the existing
&gt; function continuing to be called &apos;currentTime&apos;, since it does not return the
&gt; current time!  &apos;tickCount()&apos;, perhaps, or &apos;monotonicTime()&apos;?  I&apos;d suggest
&gt; having caught this bug it&apos;d be really good to change the name of that function
&gt; (plus &apos;currentTimeMS&apos; to match), to make its meaning a little clearer &amp; prevent
&gt; similar problems in the future.

I&apos;m a bit puzzled. All the patch does is to add a synonym for currentTime, calling it also currentUTCTime... They both now exist and return exactly the same thing. Looking at the resulting code, it&apos;s not clear what is going on, and unless the implementation for all platforms is actually coming in the next patch, it creates confusing code.

It seems the better alternative would be to have a notion of time intervals rather then absolute time for things like animations etc. Something like a stopwatch. Then there is no question of what kind of time it is or whether or not it changes based on user changing the time in the system. Something like:

Stopwatch stopwatch;
stopwatch.start();  // starts ticking at 0
...
stopwatch.getTime()  // returns current time
...
stopwatch.stop(); // stops advancing
stopwatch.reset(); // drops to 0 again

I could imagine currentTime to just continue to exist as today (no renaming necessary), since it is actually returning UTC time, and perhaps gradually switching animations etc to a non-absolute time interval source like a stopwatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214410</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-19 18:29:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; 
&gt; It seems the better alternative would be to have a notion of time intervals
&gt; rather then absolute time for things like animations etc. Something like a
&gt; stopwatch. Then there is no question of what kind of time it is or whether or
&gt; not it changes based on user changing the time in the system. Something like:
&gt; 
&gt; Stopwatch stopwatch;
&gt; stopwatch.start();  // starts ticking at 0
&gt; ...

Never mind, it actually could make things like sorting Timers slower and make it difficult to synchronize multiple intervals. Having absolute timer makes a lot of things simpler. Sorry for noise. Perhaps a good name for &apos;monotonic time&apos; function is all what&apos;s needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215715</commentid>
    <comment_count>8</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-04-21 23:14:41 -0700</bug_when>
    <thetext>This causes a regression in the Date constructor, for which I have a fix and sent to Yong.  I think the Date constructor is actually not quite right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216030</commentid>
    <comment_count>9</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-04-22 12:49:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This causes a regression in the Date constructor, for which I have a fix and
&gt; sent to Yong.  I think the Date constructor is actually not quite right.

Probably jsCurrentTime should take the &quot;exec&quot; pointer so it can use the cached UTC offset and cached DST offset (as it&apos;s supposed to?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220475</commentid>
    <comment_count>10</comment_count>
      <attachid>54996</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2010-05-03 22:25:23 -0700</bug_when>
    <thetext>Created attachment 54996
A bigger patch which rename the corresponding functions

Rename currentTime() to currentUTCTime(), currentTimeMS() to currentUTCTimeMS(); add monotonicTime()

Implement monotonicTime() in posix based system and redirect monotonicTime() implementation to currentUTCTime() in non-posix implmentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220476</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 22:30:04 -0700</bug_when>
    <thetext>Attachment 54996 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 81 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220477</commentid>
    <comment_count>12</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2010-05-03 22:33:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 54996 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot;
&gt; exit_code: 1
&gt; JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be
&gt; indented.  [whitespace/indent] [4]
&gt; Total errors found: 1 in 81 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This style issue is derived from the existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220488</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 23:25:10 -0700</bug_when>
    <thetext>Attachment 54996 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2123007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220501</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-04 00:30:18 -0700</bug_when>
    <thetext>Attachment 54996 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2075008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220643</commentid>
    <comment_count>15</comment_count>
      <attachid>54996</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-04 10:19:36 -0700</bug_when>
    <thetext>Comment on attachment 54996
A bigger patch which rename the corresponding functions

This seems to break the build on every platform.

Maybe you could break this up into multiple patches. One could change the calls at all the call sites and so be entirely mechanical.

The part of this that needs careful review is that we have to figure out at each call site if it&apos;s OK to use the monotonic time rather than the clock time. It would be good to review those carefully a few at a time instead of in a single giant patch. Perhaps the first patch would be to convert all the call sites where it&apos;s very clear and completely obvious which to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220928</commentid>
    <comment_count>16</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2010-05-04 18:35:47 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 54996 [details])
&gt; This seems to break the build on every platform.
&gt; 
&gt; Maybe you could break this up into multiple patches. One could change the calls
&gt; at all the call sites and so be entirely mechanical.
&gt; 
&gt; The part of this that needs careful review is that we have to figure out at
&gt; each call site if it&apos;s OK to use the monotonic time rather than the clock time.
&gt; It would be good to review those carefully a few at a time instead of in a
&gt; single giant patch. Perhaps the first patch would be to convert all the call
&gt; sites where it&apos;s very clear and completely obvious which to use.
agree!

How to break to multiple patches? Perhaps I would keep currentTime() &amp; currentTimeMS() and add monotonicTime() &amp; currentUTCTime() &amp; currentUTCTimeMS(), then change some call sites and submit a patch, and then change some other call sites and submit a patch, ...., in the last patch, remove currentTime() &amp; currentTimeMS(). Would it be ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221437</commentid>
    <comment_count>17</comment_count>
      <attachid>55193</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2010-05-05 19:12:47 -0700</bug_when>
    <thetext>Created attachment 55193
A separated patch

keep the original interfaces to separate the previous patch to multiple patches.

This is the first patch to change call sites in JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221438</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 19:19:28 -0700</bug_when>
    <thetext>Attachment 55193 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221455</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 20:33:49 -0700</bug_when>
    <thetext>Attachment 55193 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2191006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221497</commentid>
    <comment_count>20</comment_count>
      <attachid>55205</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2010-05-05 22:08:47 -0700</bug_when>
    <thetext>Created attachment 55205
A separated patch (JavaScript Core part)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221498</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 22:09:45 -0700</bug_when>
    <thetext>Attachment 55205 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221524</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-05 23:24:37 -0700</bug_when>
    <thetext>Attachment 55205 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2192014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223078</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-09 14:10:42 -0700</bug_when>
    <thetext>Attachment 55205 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/2191088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234106</commentid>
    <comment_count>24</comment_count>
      <attachid>55205</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-04 01:42:55 -0700</bug_when>
    <thetext>Comment on attachment 55205
A separated patch (JavaScript Core part)

currentTime()-related implementation of Chromium should be put to WebKit/chromium/src/ChromiumCurrentTime.cpp.

As for Windows, I guess the error was no exported symbols for currentUTCTime() and monotonicTime().  JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def should have their symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234287</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-04 10:56:49 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 55205 [details])
&gt; currentTime()-related implementation of Chromium should be put to WebKit/chromium/src/ChromiumCurrentTime.cpp.

This sounds like a layering violation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341327</commentid>
    <comment_count>26</comment_count>
      <attachid>80421</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-01-27 23:14:27 -0800</bug_when>
    <thetext>Created attachment 80421
Patch part 1: base line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341341</commentid>
    <comment_count>27</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-28 00:12:00 -0800</bug_when>
    <thetext>Attachment 80421 did not build on win:
Build output: http://queues.webkit.org/results/7545380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341366</commentid>
    <comment_count>28</comment_count>
      <attachid>80427</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-01-28 01:48:38 -0800</bug_when>
    <thetext>Created attachment 80427
Patch part 1: base line

Fixed build failure on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406368</commentid>
    <comment_count>29</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-05-19 06:34:29 -0700</bug_when>
    <thetext>Progresses here, leo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407732</commentid>
    <comment_count>30</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-05-22 20:17:55 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Progresses here, leo?

I&apos;m preparing a patch which renames currentTime to currentUTCTime and currentTimeMS to currentUTCTimeMS. And then will move to the next step after the patch goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412903</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 15:04:39 -0700</bug_when>
    <thetext>*** Bug 60936 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412905</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 15:05:32 -0700</bug_when>
    <thetext>Personally, I like the approach in bug 60936, where we kept the existing function name for clock time and used a new function name for monotonically increasing time, better than the approach in the pathces here where we change currentTime to mean monotonically increasing time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412929</commentid>
    <comment_count>33</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 15:28:26 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Personally, I like the approach in bug 60936, where we kept the existing function name for clock time and used a new function name for monotonically increasing time, better than the approach in the pathces here where we change currentTime to mean monotonically increasing time.

Yeah, I&apos;d rather just add the new function and move callers over on a case-by-case basis. We&apos;ll also need that lead time to implement monotonic time on all the platforms. I&apos;ll resubmit my patch here, since that&apos;s the path it was on.

We should add other bugs to track the callers we want to migrate (like timers, for starters) and have them depend on this. This bug seems to be trying to do too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412932</commentid>
    <comment_count>34</comment_count>
      <attachid>95495</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 15:30:42 -0700</bug_when>
    <thetext>Created attachment 95495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412936</commentid>
    <comment_count>35</comment_count>
      <attachid>95495</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 15:33:37 -0700</bug_when>
    <thetext>Comment on attachment 95495
Patch

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

&gt; Source/JavaScriptCore/wtf/CurrentTime.h:63
&gt; +uint64_t currentTickCount();

It&apos;s a little awkward to use a 64-bit integer containing microseconds. What’s the argument against using a double containing seconds for this?

Can we name this monotonicallyIncreasingTim instead of currentTickCount?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412938</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 15:34:34 -0700</bug_when>
    <thetext>While I don’t want to rename the existing function to currentUTCTime, I was thinking that clockTime might be a good name for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412940</commentid>
    <comment_count>37</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 15:38:06 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 95495 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95495&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/CurrentTime.h:63
&gt; &gt; +uint64_t currentTickCount();
&gt; 
&gt; It&apos;s a little awkward to use a 64-bit integer containing microseconds. What’s the argument against using a double containing seconds for this?

The hope was that having separate types would discourage people from confusing them with the values returned from currentTime.

A double of seconds is just as useful for my purposes though, so I&apos;m happy to switch if you&apos;d like.

&gt; Can we name this monotonicallyIncreasingTim instead of currentTickCount?

Sure, I will upload a patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412946</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 15:41:32 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; The hope was that having separate types would discourage people from confusing them with the values returned from currentTime.

Interesting and clever. Not sure I like it, though. It’s pretty easy to mix integers and floating point numbers by accident anyway.

&gt; A double of seconds is just as useful for my purposes though, so I&apos;m happy to switch if you&apos;d like.

I slightly prefer it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412951</commentid>
    <comment_count>39</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 15:44:11 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; The hope was that having separate types would discourage people from confusing them with the values returned from currentTime.
&gt; 
&gt; Interesting and clever. Not sure I like it, though. It’s pretty easy to mix integers and floating point numbers by accident anyway.

Agreed. We&apos;d need a class to do it properly and that seems heavy for what we&apos;re trying to accomplish.

&gt; &gt; A double of seconds is just as useful for my purposes though, so I&apos;m happy to switch if you&apos;d like.
&gt; 
&gt; I slightly prefer it.

Patch on the way...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412964</commentid>
    <comment_count>40</comment_count>
      <attachid>95502</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 16:14:30 -0700</bug_when>
    <thetext>Created attachment 95502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413040</commentid>
    <comment_count>41</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-05-31 17:57:55 -0700</bug_when>
    <thetext>This patch is just covering MacOSX right? and other plataforms like Windows and Unix?

(In reply to comment #40)
&gt; Created an attachment (id=95502) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413046</commentid>
    <comment_count>42</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-05-31 18:12:02 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; This patch is just covering MacOSX right? and other plataforms like Windows and Unix?

Yep. If we land this, I&apos;ll file bugs against the other platforms and fix a few of them myself. If a platform is missing, we&apos;ll just fall back to the dumb default implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413852</commentid>
    <comment_count>43</comment_count>
      <attachid>95706</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2011-06-01 19:54:54 -0700</bug_when>
    <thetext>Created attachment 95706
Patch based on Leo&apos;s

Add currentUTCTime() which should be used by jsCurrentTime() as clock
time.Change currentTime() with monotonically increasing codes.
And this patch can fix Bug21256 which has been tested at Qt version on Ubuntu.
Bug 31256 - SVG Animation freezes when system time was changed during playback.
And we can make these function&apos;s name be more rational with Bug 61257.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413855</commentid>
    <comment_count>44</comment_count>
      <attachid>95706</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-01 19:59:31 -0700</bug_when>
    <thetext>Comment on attachment 95706
Patch based on Leo&apos;s

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

I don&apos;t think you can change the semantics of javascript Date.now()!

 Have you followed the recent discussion on this bug?

&gt; Source/JavaScriptCore/wtf/CurrentTime.cpp:317
&gt; +// Added currentUTCTime which should be used by JScurrentTime(). And changed currentTime() with
&gt; +// monotonically Increasing codes.

woah, you can&apos;t do this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413858</commentid>
    <comment_count>45</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2011-06-01 20:06:06 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 95706 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95706&amp;action=review
&gt; 
&gt; I don&apos;t think you can change the semantics of javascript Date.now()!
&gt; 
&gt;  Have you followed the recent discussion on this bug?
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/CurrentTime.cpp:317
&gt; &gt; +// Added currentUTCTime which should be used by JScurrentTime(). And changed currentTime() with
&gt; &gt; +// monotonically Increasing codes.
&gt; 
&gt; woah, you can&apos;t do this!

Hi,Would you pls tell me how I change the semantics?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413859</commentid>
    <comment_count>46</comment_count>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2011-06-01 20:07:39 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; Created an attachment (id=95706) [details]
&gt; Patch based on Leo&apos;s
&gt; 
&gt; Add currentUTCTime() which should be used by jsCurrentTime() as clock
&gt; time.Change currentTime() with monotonically increasing codes.
&gt; And this patch can fix Bug21256 which has been tested at Qt version on Ubuntu.
&gt; Bug 31256 - SVG Animation freezes when system time was changed during playback.
&gt; And we can make these function&apos;s name be more rational with Bug 61257.
Sorry, this patch can fix Bug31256 not Bug21256.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413919</commentid>
    <comment_count>47</comment_count>
      <attachid>95723</attachid>
    <who name="Jason Liu">jasonliuwebkit</who>
    <bug_when>2011-06-01 22:41:10 -0700</bug_when>
    <thetext>Created attachment 95723
Patch based on Leo&apos;s

Add monotonicallyIncreasingTime() for Linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415995</commentid>
    <comment_count>48</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-06-06 14:13:24 -0700</bug_when>
    <thetext>The discussion seems to have died out on both bugs. Assuming everyone is happy now, can someone r+ this now so we can start landing implementations and eventually switch over to using it?

This adds the function, a dumb default implementation, and a Mac implementation:

https://bugs.webkit.org/attachment.cgi?id=95502&amp;action=review

This adds a Linux implementation:

https://bugs.webkit.org/attachment.cgi?id=95723&amp;action=review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416001</commentid>
    <comment_count>49</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-06-06 14:17:01 -0700</bug_when>
    <thetext>For Linux/Unix i think is better to implement using clock_gettime. It is better documented than times(0). And clock_gettime is a POSIX.1-2001.

(In reply to comment #48)
&gt; The discussion seems to have died out on both bugs. Assuming everyone is happy now, can someone r+ this now so we can start landing implementations and eventually switch over to using it?
&gt; 
&gt; This adds the function, a dumb default implementation, and a Mac implementation:
&gt; 
&gt; https://bugs.webkit.org/attachment.cgi?id=95502&amp;action=review
&gt; 
&gt; This adds a Linux implementation:
&gt; 
&gt; https://bugs.webkit.org/attachment.cgi?id=95723&amp;action=review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416016</commentid>
    <comment_count>50</comment_count>
      <attachid>95502</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-06 14:38:56 -0700</bug_when>
    <thetext>Comment on attachment 95502
Patch

R=me, this looks like a good start.  Can you file bugs on the platforms other than PLATFORM(MAC) to implement a higher-quality version of this if they choose to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416092</commentid>
    <comment_count>51</comment_count>
      <attachid>95502</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-06 16:05:10 -0700</bug_when>
    <thetext>Comment on attachment 95502
Patch

Clearing flags on attachment: 95502

Committed r88199: &lt;http://trac.webkit.org/changeset/88199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416094</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-06 16:05:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53588</attachid>
            <date>2010-04-16 18:49:29 -0700</date>
            <delta_ts>2010-06-11 14:51:56 -0700</delta_ts>
            <desc>a start</desc>
            <filename>37743.patch</filename>
            <type>text/plain</type>
            <size>2347</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1OWU3OTY3Li40OGNkZGJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTAtMDQtMTYgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGN1cnJlbnRVVENUaW1lKCkgZm9y
IGpzQ3VycmVudFRpbWUoKSB0byB1c2UsIHNvIGN1cnJlbnRUaW1lKCkgY2FuIGJlCisgICAgICAg
IHNlcGFyYXRlZCBvdXQgZm9yIHRpbWUgY291bnRpbmcgcHVycG9zZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQzCisKKyAgICAgICAgKiB3dGYv
Q3VycmVudFRpbWUuY3BwOgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZSk6CisgICAgICAgIChX
VEY6OmN1cnJlbnRVVENUaW1lKToKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAg
ICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKFdURjo6anNDdXJyZW50VGltZSk6CisKIDIw
MTAtMDMtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJl
bnRUaW1lLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAKaW5kZXggMzBj
YTdjMy4uZjZiZWMxOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuY3BwCkBAIC0yOTcsNiAr
Mjk3LDggQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogZG91YmxlIGN1cnJlbnRUaW1lKCkKIHsK
KyAgICAvLyBGSVhNRTogY3VycmVudFRpbWUoKSBzaG91bGQgbmV2ZXIgZ28gYmFja3dhcmRzCisK
ICAgICBzdHJ1Y3QgdGltZXZhbCBub3c7CiAgICAgc3RydWN0IHRpbWV6b25lIHpvbmU7CiAKQEAg
LTMwNiw0ICszMDgsMTAgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogI2VuZGlmCiAKKy8vIEZJ
WE1FOiBBZGQgaW1wbGVtZW50YXRpb25zIGZvciBwbGF0Zm9ybXMKK2RvdWJsZSBjdXJyZW50VVRD
VGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggYi9KYXZh
U2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAppbmRleCAwMzM0NDhmLi5hZjhiNWY1IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS93dGYvQ3VycmVudFRpbWUuaApAQCAtMzksNiArMzksOSBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQg
ZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAgICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcg
b24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIgCiAgICAgLy8gdGhh
biBhIG1pbGxpc2Vjb25kLgorICAgIGRvdWJsZSBjdXJyZW50VVRDVGltZSgpOworCisgICAgLy8g
UmV0dXJucyBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgdGltZSBiYXNlZCBvbiBzeXN0ZW0gdGlj
ayBjb3VudC4KICAgICBkb3VibGUgY3VycmVudFRpbWUoKTsKIAogICAgIC8vIFNhbWUgdGhpbmcs
IGluIG1pbGxpc2Vjb25kcy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0
aC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKaW5kZXggMDMzZDI1ZS4uOWU2NDE2
YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIHRpbWVDbGlw
KGRvdWJsZSk7CiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQogewogICAgIC8vIEphdmFT
Y3JpcHQgZG9lc24ndCByZWNvZ25pemUgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gICAg
cmV0dXJuIGZsb29yKFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICByZXR1cm4gZmxvb3IoV1RG
OjpjdXJyZW50VVRDVGltZSgpICogMTAwMC4pOwogfQogCiBjb25zdCBjaGFyICogY29uc3Qgd2Vl
a2RheU5hbWVbN10gPSB7ICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIs
ICJTdW4iIH07Cg==
</data>
<flag name="review"
          id="37355"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54996</attachid>
            <date>2010-05-03 22:25:23 -0700</date>
            <delta_ts>2011-01-27 23:14:27 -0800</delta_ts>
            <desc>A bigger patch which rename the corresponding functions</desc>
            <filename>currentTime-r58731.patch</filename>
            <type>text/plain</type>
            <size>89189</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4NzM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTAtMDUtMDMgIExlbyBZYW5n
ICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NzQzCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoU3Rv
cFdhdGNoOjpzdGFydCk6CisgICAgICAgIChTdG9wV2F0Y2g6OnN0b3ApOgorICAgICAgICAqIHBj
cmUvcGNyZV9leGVjLmNwcDoKKyAgICAgICAgKEhpc3RvZ3JhbVRpbWVMb2dnZXI6Okhpc3RvZ3Jh
bVRpbWVMb2dnZXIpOgorICAgICAgICAoSGlzdG9ncmFtVGltZUxvZ2dlcjo6fkhpc3RvZ3JhbVRp
bWVMb2dnZXIpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0Q291bnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvVGltZW91dENoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpnZXRDUFVUaW1lKToKKyAgICAg
ICAgKiB3dGYvQ3VycmVudFRpbWUuY3BwOgorICAgICAgICAoV1RGOjpjdXJyZW50VVRDVGltZSk6
CisgICAgICAgIChXVEY6Om1vbm90b25pY1RpbWUpOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5oOgorICAgICAgICAoV1RGOjpjdXJyZW50VVRDVGltZU1TKToKKyAgICAgICAgKiB3dGYvRGF0
ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjpjYWxjdWxhdGVVVENPZmZzZXQpOgorICAgICAgICAq
IHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjpqc0N1cnJlbnRUaW1lKToKKyAgICAgICAg
KiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmRpc3BhdGNoRnVuY3Rpb25zRnJv
bU1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAg
ICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkQ29u
ZGl0aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisgICAgICAgICogd3RmL2d0
ay9UaHJlYWRpbmdHdGsuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVk
V2FpdCk6CisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6
VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQpOgorCiAyMDEwLTA1LTAzICBTdGVwaGFuaWUgTGV3
aXMgIDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVu
LgpJbmRleDogSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIEphdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHByaXZhdGU6CiAKIHZvaWQgU3Rv
cFdhdGNoOjpzdGFydCgpCiB7Ci0gICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAg
IG1fc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZSgpOwogfQogCiB2b2lkIFN0b3BXYXRjaDo6c3Rv
cCgpCiB7Ci0gICAgbV9zdG9wVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9zdG9wVGltZSA9
IG1vbm90b25pY1RpbWUoKTsKIH0KIAogbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIEphdmFT
Y3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCwxNCAr
MjE2NCwxNCBAQCB2b2lkIEhpc3RvZ3JhbTo6YWRkKGNvbnN0IEpTUmVnRXhwKiByZSwgCiAKIEhp
c3RvZ3JhbVRpbWVMb2dnZXI6Okhpc3RvZ3JhbVRpbWVMb2dnZXIoY29uc3QgSlNSZWdFeHAqIHJl
KQogICAgIDogbV9yZShyZSkKLSAgICAsIG1fc3RhcnRUaW1lKGN1cnJlbnRUaW1lTVMoKSkKKyAg
ICAsIG1fc3RhcnRUaW1lKGN1cnJlbnRVVENUaW1lTVMoKSkKIHsKIH0KIAogSGlzdG9ncmFtVGlt
ZUxvZ2dlcjo6fkhpc3RvZ3JhbVRpbWVMb2dnZXIoKQogewogICAgIHN0YXRpYyBIaXN0b2dyYW0g
aGlzdG9ncmFtOwotICAgIGhpc3RvZ3JhbS5hZGQobV9yZSwgY3VycmVudFRpbWVNUygpIC0gbV9z
dGFydFRpbWUpOworICAgIGhpc3RvZ3JhbS5hZGQobV9yZSwgY3VycmVudFVUQ1RpbWVNUygpIC0g
bV9zdGFydFRpbWUpOwogfQogCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRp
YyBkb3VibGUgZ2V0Q291bnQoKQogICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjb3VudGVy
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihjb3VudGVyLlF1YWRQYXJ0KSAvIGZy
ZXF1ZW5jeS5RdWFkUGFydDsKICNlbHNlCi0gICAgcmV0dXJuIGN1cnJlbnRUaW1lTVMoKTsKKyAg
ICByZXR1cm4gbW9ub3RvbmljVGltZSgpICogMTAwMC4wOwogI2VuZGlmCiB9CiAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDUsNyArMTQ1LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5
cAogICAgICwgZmlyc3RTdHJpbmdpZmllclRvTWFyaygwKQogICAgICwgbWFya1N0YWNrKGpzQXJy
YXlWUHRyKQogICAgICwgY2FjaGVkVVRDT2Zmc2V0KE5hTikKLSAgICAsIHdlYWtSYW5kb20oc3Rh
dGljX2Nhc3Q8aW50PihjdXJyZW50VGltZSgpKSkKKyAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nh
c3Q8aW50PihjdXJyZW50VVRDVGltZSgpKSkKICAgICAsIG1heFJlZW50cnlEZXB0aCh0aHJlYWRT
dGFja1R5cGUgPT0gVGhyZWFkU3RhY2tUeXBlU21hbGwgPyBNYXhTbWFsbFRocmVhZFJlZW50cnlE
ZXB0aCA6IE1heExhcmdlVGhyZWFkUmVlbnRyeURlcHRoKQogI2lmbmRlZiBOREVCVUcKICAgICAs
IGV4Y2x1c2l2ZVRocmVhZCgwKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
aW1lb3V0Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBnZXRDUFVUaW1lKCkKICAgICByZXR1cm4gR0VUVVBUSU1FTVMoKTsK
ICNlbHNlCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXR1cm4gdGhlIHRpbWUgdGhlIGN1cnJl
bnQgdGhyZWFkIGhhcyBzcGVudCBleGVjdXRpbmcuCi0gICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkg
KiAxMDAwOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lKCkgKiAxMDAwOwogI2VuZGlmCiB9CiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtNjEsNiArNjIsOSBAQCBleHRlcm4gIkMiIHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICp0KTsK
ICNpbmNsdWRlIDxBRUVTdGRMaWIuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNp
bmNsdWRlIDxzeXMvdGltZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYv
QWx3YXlzSW5saW5lLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTU2
LDcgKzE2MCw3IEBAIHN0YXRpYyBib29sIHFwY0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWls
YWJsZTsKIH0KIAotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgp
CiB7CiAgICAgLy8gVXNlIGEgY29tYmluYXRpb24gb2YgZnRpbWUgYW5kIFF1ZXJ5UGVyZm9ybWFu
Y2VDb3VudGVyLgogICAgIC8vIGZ0aW1lIHJldHVybnMgdGhlIGluZm9ybWF0aW9uIHdlIHdhbnQs
IGJ1dCBkb2Vzbid0IGhhdmUgc3VmZmljaWVudCByZXNvbHV0aW9uLgpAQCAtMjAwLDYgKzIwNCwx
MiBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogICAgIHJldHVybiB1dGMgLyAxMDAwLjA7CiB9CiAK
Ky8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgp
Cit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbHNlCiAKIHN0YXRpYyBk
b3VibGUgY3VycmVudFN5c3RlbVRpbWUoKQpAQCAtMjI1LDcgKzIzNSw3IEBAIHN0YXRpYyBkb3Vi
bGUgY3VycmVudFN5c3RlbVRpbWUoKQogICAgIHJldHVybiB0LlF1YWRQYXJ0ICogMC4wMDAwMDAx
IC0gMTE2NDQ0NzM2MDAuMDsKIH0KIAotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJy
ZW50VVRDVGltZSgpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdCA9IGZhbHNlOwogICAgIHN0YXRp
YyBkb3VibGUgbGFzdFRpbWU7CkBAIC0yNDcsNiArMjU3LDEyIEBAIGRvdWJsZSBjdXJyZW50VGlt
ZSgpCiAgICAgcmV0dXJuIHRpbWVOb3c7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29y
cmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENU
aW1lKCk7Cit9CisKICNlbmRpZiAvLyBVU0UoUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUikKIAog
I2VsaWYgUExBVEZPUk0oR1RLKQpAQCAtMjU1LDIxICsyNzEsMzMgQEAgZG91YmxlIGN1cnJlbnRU
aW1lKCkKIC8vIGJldHRlciBhY2N1cmFjeSBjb21wYXJlZCB3aXRoIFdpbmRvd3MgaW1wbGVtZW50
YXRpb24gb2YgZ19nZXRfY3VycmVudF90aW1lOgogLy8gKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9j
b2Rlc2VhcmNoL3A/aGw9ZW4jSEhuTlJqa3MxdDAvZ2xpYi0yLjUuMi9nbGliL2dtYWluLmMmcT1n
X2dldF9jdXJyZW50X3RpbWUpLgogLy8gTm9uLVdpbmRvd3MgR1RLIGJ1aWxkcyBjb3VsZCB1c2Ug
Z2V0dGltZW9mZGF5KCkgZGlyZWN0bHkgYnV0IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeSBs
ZXRzIHVzZSBHVEsgZnVuY3Rpb24uCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1cnJl
bnRVVENUaW1lKCkKIHsKICAgICBHVGltZVZhbCBub3c7CiAgICAgZ19nZXRfY3VycmVudF90aW1l
KCZub3cpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy50dl9zZWMpICsgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihub3cudHZfdXNlYyAvIDEwMDAwMDAuMCk7CiB9CiAKKy8vIEZJWE1F
OiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAg
cmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbGlmIFBMQVRGT1JNKFdYKQogCi1kb3Vi
bGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1cnJlbnRVVENUaW1lKCkKIHsKICAgICB3eERhdGVU
aW1lIG5vdyA9IHd4RGF0ZVRpbWU6OlVOb3coKTsKICAgICByZXR1cm4gKGRvdWJsZSlub3cuR2V0
VGlja3MoKSArIChkb3VibGUpKG5vdy5HZXRNaWxsaXNlY29uZCgpIC8gMTAwMC4wKTsKIH0KIAor
Ly8gRklYTUU6IGltcGxlbWVudCBpdCBjb3JyZWN0bHkKK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkK
K3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKwogI2VsaWYgUExBVEZPUk0oQlJF
V01QKQogCiAvLyBHRVRVVENTRUNPTkRTIHJldHVybnMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNp
bmNlIDE5ODAvMDEvMDYgMDA6MDA6MDAgVVRDLApAQCAtMjc3LDIyICszMDUsNDUgQEAgZG91Ymxl
IGN1cnJlbnRUaW1lKCkKIC8vIG9jY3VycmVuY2Ugb2YgMDA6MDA6MDAgbG9jYWwgdGltZS4KIC8v
IFdlIGNhbiBjb21iaW5lIEdFVFVUQ1NFQ09ORFMgYW5kIEdFVFRJTUVNUyB0byBjYWxjdWxhdGUg
dGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMKIC8vIHNpbmNlIDE5NzAvMDEvMDEgMDA6MDA6MDAg
VVRDLgotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAg
ICAgLy8gZGlmZlNlY29uZHMgaXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGZyb20gMTk3MC8wMS8w
MSB0byAxOTgwLzAxLzA2CiAgICAgY29uc3QgdW5zaWduZWQgZGlmZlNlY29uZHMgPSAzMTU5NjQ4
MDA7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oZGlmZlNlY29uZHMgKyBHRVRVVENT
RUNPTkRTKCkgKyAoKEdFVFRJTUVNUygpICUgMTAwMCkgLyBtc1BlclNlY29uZCkpOwogfQogCisv
LyBGSVhNRTogaW1wbGVtZW50IGl0IGNvcnJlY3RseQorZG91YmxlIG1vbm90b25pY1RpbWUoKQor
eworICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOworfQogI2Vsc2UKIAotZG91YmxlIGN1cnJl
bnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgc3RydWN0IHRpbWV2YWwg
bm93OwogICAgIGdldHRpbWVvZmRheSgmbm93LCAwKTsKICAgICByZXR1cm4gbm93LnR2X3NlYyAr
IG5vdy50dl91c2VjIC8gMTAwMDAwMC4wOwogfQogCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7
CisgICAgLy8gdG1zVW51c2VkIGlzIGp1c3QgZm9yIHN5c3RlbSB3aGljaCBkb2VzIGFjY2VwdCB0
aW1lcygwKSBjYWxsLgorICAgIHN0YXRpYyBzdHJ1Y3QgdG1zIHRtc1VudXNlZDsKKyAgICBzdGF0
aWMgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRVVENUaW1lKCk7CisgICAgc3RhdGljIGNsb2Nr
X3Qgc3RhcnRUaWNrcyA9IHRpbWVzKCZ0bXNVbnVzZWQpOworICAgIHN0YXRpYyBsb25nIGludCB0
aWNrc1BlclNlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworCisgICAgY2xvY2tfdCBjdXJy
ZW50VGlja3MgPSB0aW1lcygmdG1zVW51c2VkKTsKKworICAgIC8vIE92ZXJmbG93LCBqdXN0IGZh
bGxiYWNrIHRvIGN1cnJlbnRVVENUaW1lKCkKKyAgICBpZiAoVU5MSUtFTFkoc3RhcnRUaWNrcyA9
PSBzdGF0aWNfY2FzdDxjbG9ja190PigtMSkgfHwgY3VycmVudFRpY2tzID09IHN0YXRpY19jYXN0
PGNsb2NrX3Q+KC0xKSkpCisgICAgICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOworCisgICAg
QVNTRVJUKHRpY2tzUGVyU2Vjb25kID4gMCk7CisgICAgcmV0dXJuIHN0YXJ0VGltZSArIHN0YXRp
Y19jYXN0PGRvdWJsZT4oY3VycmVudFRpY2tzIC0gc3RhcnRUaWNrcykgLyB0aWNrc1BlclNlY29u
ZDsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0N1
cnJlbnRUaW1lLmgJKHJldmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJl
bnRUaW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSwxOSBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50
ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAgICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRp
bmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIgCiAgICAgLy8g
dGhhbiBhIG1pbGxpc2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpOworICAgIGRvdWJs
ZSBjdXJyZW50VVRDVGltZSgpOwogCiAgICAgLy8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRz
LgotICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCisgICAgaW5saW5lIGRvdWJsZSBj
dXJyZW50VVRDVGltZU1TKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50VGltZSgpICog
MTAwMC4wOyAKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCkgKiAxMDAwLjA7IAogICAg
IH0KIAorICAgIC8vIEp1c3QgbGlrZSBjdXJyZW50VVRDVGltZSwgYnV0IHRoZSB0aW1lIHdpbGwg
bm90IGdvIGJhY2t3b3JkIGV2ZW4gaWYKKyAgICAvLyB0aGUgc3lzdGVtIHRpbWUgaXMgYWRqdXN0
ZWQgYmFja3dvcmQuIFRoaXMgZnVuY3Rpb24gaXMgYmFzaWNhbGx5IHVzZWQKKyAgICAvLyB0byBp
bXBsZW1lbnQgcmVsZXRpdmUgdGltZSBiYXNlZCBmdW5jdGlvbmFsaXRpZXMsIGUuZy4gdGltZXIg
YW5kIGFuaW1hdGlvbi4KKyAgICBkb3VibGUgbW9ub3RvbmljVGltZSgpOworCiAgICAgaW5saW5l
IHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxv
Y2FsVE0pCiAgICAgewogICAgICNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgfHwgQ09NUElM
RVIoTUlOR1cpIHx8IE9TKFdJTkNFKQpAQCAtNjAsNyArNjUsOCBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6Y3VycmVudFRpbWU7Cit1c2luZyBX
VEY6OmN1cnJlbnRVVENUaW1lOwordXNpbmcgV1RGOjptb25vdG9uaWNUaW1lOwogdXNpbmcgV1RG
OjpnZXRMb2NhbFRpbWU7CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9oCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9EYXRlTWF0aC5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGVNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIGludCBlcXVpdmFs
ZW50WWVhckZvckRTVChpbnQgeWVhcikKIHN0YXRpYyBpbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNl
dCgpCiB7CiAjaWYgUExBVEZPUk0oQlJFV01QKQotICAgIHRpbWVfdCBsb2NhbFRpbWUgPSBzdGF0
aWNfY2FzdDx0aW1lX3Q+KGN1cnJlbnRUaW1lKCkpOworICAgIHRpbWVfdCBsb2NhbFRpbWUgPSBz
dGF0aWNfY2FzdDx0aW1lX3Q+KGN1cnJlbnRVVENUaW1lKCkpOwogI2Vsc2UKICAgICB0aW1lX3Qg
bG9jYWxUaW1lID0gdGltZSgwKTsKICNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJl
dmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiBpbmxpbmUg
ZG91YmxlIGpzQ3VycmVudFRpbWUoKQogewogICAgIC8vIEphdmFTY3JpcHQgZG9lc24ndCByZWNv
Z25pemUgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gICAgcmV0dXJuIGZsb29yKFdURjo6
Y3VycmVudFRpbWVNUygpKTsKKyAgICByZXR1cm4gZmxvb3IoV1RGOjpjdXJyZW50VVRDVGltZU1T
KCkpOwogfQogCiBjb25zdCBjaGFyICogY29uc3Qgd2Vla2RheU5hbWVbN10gPSB7ICJNb24iLCAi
VHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iIH07CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL01haW5UaHJlYWQuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9NYWluVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQg
ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgaWYgKGNhbGxiYWNrc1BhdXNl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1l
KCk7CisgICAgZG91YmxlIHN0YXJ0VGltZSA9IG1vbm90b25pY1RpbWUoKTsKIAogICAgIEZ1bmN0
aW9uV2l0aENvbnRleHQgaW52b2NhdGlvbjsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgICAg
IC8vIHlpZWxkIHNvIHRoZSB1c2VyIGlucHV0IGNhbiBiZSBwcm9jZXNzZWQuIE90aGVyd2lzZSB1
c2VyIG1heSBub3QgYmUgYWJsZSB0byBldmVuIGNsb3NlIHRoZSB3aW5kb3cuCiAgICAgICAgIC8v
IFRoaXMgY29kZSBoYXMgZWZmZWN0IG9ubHkgaW4gY2FzZSB0aGUgc2NoZWR1bGVEaXNwYXRjaEZ1
bmN0aW9uc09uTWFpblRocmVhZCgpIGlzIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQKICAgICAg
ICAgLy8gYWxsb3dzIGlucHV0IGV2ZW50cyB0byBiZSBwcm9jZXNzZWQgYmVmb3JlIHdlIGFyZSBi
YWNrIGhlcmUuCi0gICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4gbWF4UnVu
TG9vcFN1c3BlbnNpb25UaW1lKSB7CisgICAgICAgIGlmIChtb25vdG9uaWNUaW1lKCkgLSBzdGFy
dFRpbWUgPiBtYXhSdW5Mb29wU3VzcGVuc2lvblRpbWUpIHsKICAgICAgICAgICAgIHNjaGVkdWxl
RGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHJl
dmlzaW9uIDU4NzMxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRp
dGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGltZSwgZmFsc2UgaWYgdGhlIGFic29s
dXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFzdC4KLSAgICAvLyBUaGUgYWJzb2x1
dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRp
bWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6b25lIGFzIFdURjo6Y3VycmVudFRp
bWUoKS4KKyAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9u
IEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGlt
ZSB6b25lIGFzIFdURjo6bW9ub3RvbmljVGltZSgpLgogICAgIGJvb2wgdGltZWRXYWl0KE11dGV4
JiwgZG91YmxlIGFic29sdXRlVGltZSk7CiAgICAgdm9pZCBzaWduYWwoKTsKICAgICB2b2lkIGJy
b2FkY2FzdCgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3Bw
CShyZXZpc2lvbiA1ODczMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFRocmVhZENvbmRp
dGlvbjo6d2FpdChNdXRleCYgbXV0ZXgpCiAKIGJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdh
aXQoTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewotICAgIGlmIChhYnNvbHV0
ZVRpbWUgPCBjdXJyZW50VGltZSgpKQorICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBtb25vdG9uaWNU
aW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhYnNvbHV0ZVRpbWUgPiBJ
TlRfTUFYKSB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcAkocmV2aXNpb24g
NTg3MzEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4
JiBtdXRleCkKIAogYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChNdXRleCYgbXV0ZXgs
IGRvdWJsZSBhYnNvbHV0ZVRpbWUpCiB7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpj
dXJyZW50VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljVGlt
ZSgpOwogCiAgICAgLy8gVGltZSBpcyBpbiB0aGUgcGFzdCAtIHJldHVybiBpbW1lZGlhdGVseS4K
ICAgICBpZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUpCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDcgKzIw
NSw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKIGJvb2wgVGhy
ZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1l
KQogewogICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3QgLSByZXR1cm4gcmlnaHQgYXdheS4KLSAg
ICBpZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUoKSkKKyAgICBpZiAoYWJzb2x1dGVUaW1l
IDwgbW9ub3RvbmljVGltZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8g
VGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgZm9yIGdfY29uZF90aW1lZF93YWl0IC0gd2Fp
dCBmb3JldmVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCShyZXZp
c2lvbiA1ODczMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFRocmVhZENvbmRpdGlvbjo6d2Fp
dChNdXRleCYgbXV0ZXgpCiAKIGJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgm
IG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9
IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90
b25pY1RpbWUoKTsKIAogICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3QgLSByZXR1cm4gaW1tZWRp
YXRlbHkuCiAgICAgaWYgKGFic29sdXRlVGltZSA8IGN1cnJlbnRUaW1lKQpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4
NzM0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNzMg
QEAKKzIwMTAtMDUtMDMgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBidWcg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQzCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRHQ0V2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6OmdjUHJvbG9ndWVDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJh
Y2spOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6OnNldEFjdGl2ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZWxhcHNlZFRpbWUpOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudDo6RXZlbnQpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAgICAg
ICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRl
RG9jdW1lbnRTZXF1ZW5jZU51bWJlcik6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXNO
b3dPclJlc2NoZWR1bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlRm9ybURhdGFJZGVudGlmaWVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c3RhcnRQcm9ncmVzc0V2ZW50VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2dyZXNzVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpjb250aW51ZVByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6ZXhlY3V0ZUV4
dGVybmFsU2NyaXB0c0lmUmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
Y29udGludWVFeGVjdXRpbmdFeHRlcm5hbFNjcmlwdHMpOgorICAgICAgICAqIGh0bWwvUHJlbG9h
ZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlbG9hZFNjYW5uZXI6OndyaXRlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVGltaW5nKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2U6OmNyZWF0ZUNhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZTo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Om1h
cmtSZXNwb25zZVJlY2VpdmVkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZTo6ZW5kVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpt
YXJrRE9NQ29udGVudEV2ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZTo6bWFya0xvYWRFdmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2U6OmFkZExlbmd0aCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
SW5zdGFsbFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFJlbW92ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrVGltZWxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFya0RPTUNvbnRlbnRFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrTG9hZEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBs
ZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpwdXNoQ3VycmVudFJlY29yZCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMpOgorICAgICAgICAqIGxv
YWRlci9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGlk
RHJhdyk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZTo6Y3VycmVudEFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6c2V0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24pOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzUmVxdWVzdCk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdh
dGVUb0RpZmZlcmVudERvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jl
c3MpOgorICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uOjpkaWRTdGFydFRpbWVyKToKKyAgICAgICAg
KiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpsb2FkRGVjaXNpb25Gb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25E
YXRhYmFzZTo6aW1wb3J0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uRGF0YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpJY29u
RGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFi
YXNlOjp3cml0ZVRvRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpj
bGVhbnVwU3luY1RocmVhZCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1v
dmVFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBh
Z2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmhhdmVT
dWl0YWJsZUNhY2hlZFBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL1BsdWdpbkhhbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5IYWx0ZXI6OmRpZFN0YXJ0UGx1Z2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkhhbHRlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5IYWx0ZXI6OnN0YXJ0VGltZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmly
ZWRJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6Om5l
eHRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvR2VvbG9jYXRpb25T
ZXJ2aWNlQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VB
bmRyb2lkOjppc1Bvc2l0aW9uTW9yZVRpbWVseSk6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9p
ZC9TaGFyZWRUaW1lckFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGlt
ZXJGaXJlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9TaGFyZWRUaW1lckJyZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGltZXJGaXJlVGltZSk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBMaXN0Qm94Ojp0eXBlQWhlYWRGaW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TeXN0ZW1UaW1lQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFVU
Q1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6bW9ub3RvbmljVGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vZWZsL1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1N5c3RlbVRpbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFVUQ1Rp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6bW9ub3RvbmljVGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRpbWVUb01lZGlhVGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVRpbWVUb0N1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkaWRFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYWludENvbXBsZXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om1vdmllTmV3SW1hZ2VBdmFpbGFibGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXS0NBQ0ZMYXllcjo6cHJpbnRUcmVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGltZXJGaXJlVGlt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaGFpa3UvU2hhcmVkVGltZXJIYWlrdS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckhhaWt1OjpzdGFydCk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1NoYXJlZFRpbWVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJRdDo6c3Rh
cnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2luY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGltZXJGaXJlVGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vd3gvTW91c2VFdmVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9TaGFyZWRU
aW1lcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFNoYXJlZFRpbWVyRmlyZVRpbWUpOgor
ICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbjo6YXBwZW5kTWVzc2FnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6c2hvdWxkUGFpbnRCYWNrZ3Jv
dW5kQXRMb3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VTY2FsZU9ic2VydmVyOjpzaG91bGRJbWFnZVBh
aW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
Q29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQcm9ncmVzczo6YW5pbWF0aW9uUHJvZ3Jlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OnVwZGF0ZUFuaW1hdGlvblN0YXRl
KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjplbGFwc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNNSUxUaW1lQ29udGFpbmVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGlt
ZUNvbnRhaW5lcjo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6
OnJlc3VtZSk6CisKIDIwMTAtMDUtMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVj
a2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgWGFuIExvcGV6LgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCShyZXZpc2lvbiA1ODczMSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDEzICs4MywxMyBAQCBzaXplX3QgU2NyaXB0R0NFdmVudDo6Z2V0VXNlZEhlYXBTaXpl
KCkKIAogdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY1Byb2xvZ3VlQ2FsbGJhY2sodjg6OkdDVHlwZSB0
eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogewotICAgIHNfc3RhcnRUaW1lID0gV1RG
OjpjdXJyZW50VGltZU1TKCk7CisgICAgc19zdGFydFRpbWUgPSBXVEY6OmN1cnJlbnRVVENUaW1l
TVMoKTsKICAgICBzX3VzZWRIZWFwU2l6ZSA9IGdldFVzZWRIZWFwU2l6ZSgpOwogfQogCiB2b2lk
IFNjcmlwdEdDRXZlbnQ6OmdjRXBpbG9ndWVDYWxsYmFjayh2ODo6R0NUeXBlIHR5cGUsIHY4OjpH
Q0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgZG91YmxlIGVuZFRpbWUgPSBXVEY6OmN1cnJl
bnRUaW1lTVMoKTsKKyAgICBkb3VibGUgZW5kVGltZSA9IFdURjo6Y3VycmVudFVUQ1RpbWVNUygp
OwogICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHNfdXNlZEhlYXBTaXplIC0gZ2V0VXNlZEhl
YXBTaXplKCk7CiAgICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5lcnMoc19ldmVudExpc3RlbmVy
cyk7CiAgICAgZm9yIChHQ0V2ZW50TGlzdGVuZXJzOjppdGVyYXRvciBpID0gbGlzdGVuZXJzLmJl
Z2luKCk7IGkgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2kpCkluZGV4OiBXZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0QWN0
aXZlKGJvb2wgZG93biwKICAgICAgICAgICAgIC8vICJ1cCIgc3RhdGUuICBPbmNlIHlvdSBhc3N1
bWUgdGhpcywgeW91IGNhbiBqdXN0IGRlbGF5IGZvciAxMDBtcyAtIHRoYXQgdGltZSAoYXNzdW1p
bmcgdGhhdCBhZnRlciB5b3UKICAgICAgICAgICAgIC8vIGxlYXZlIHRoaXMgbWV0aG9kLCBpdCB3
aWxsIGJlIGFib3V0IHRoYXQgbG9uZyBiZWZvcmUgdGhlIGZsdXNoIG9mIHRoZSB1cCBzdGF0ZSBo
YXBwZW5zIGFnYWluKS4KICNpZmRlZiBIQVZFX0ZVTkNfVVNMRUVQCi0gICAgICAgICAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBzdGFydFRp
bWUgPSBtb25vdG9uaWNUaW1lKCk7CiAjZW5kaWYKIAogICAgICAgICAgICAgLy8gRW5zdXJlIHRo
ZXJlIGFyZSBubyBwZW5kaW5nIGNoYW5nZXMKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sCiAgICAgICAgICAgICAvLyBCZXR0ZXIgeWV0
LCBjb21lIHVwIHdpdGggYSB3YXkgb2YgZG9pbmcgdGhpcyB0aGF0IGRvZXNuJ3QgdXNlIHRoaXMg
c29ydCBvZiB0aGluZyBhdCBhbGwuICAgICAgICAgICAgCiAjaWZkZWYgSEFWRV9GVU5DX1VTTEVF
UAogICAgICAgICAgICAgLy8gTm93IHBhdXNlIGZvciBhIHNtYWxsIGFtb3VudCBvZiB0aW1lICgx
LzEwdGggb2YgYSBzZWNvbmQgZnJvbSBiZWZvcmUgd2UgcmVwYWludGVkIGluIHRoZSBwcmVzc2Vk
IHN0YXRlKQotICAgICAgICAgICAgZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAwLjEgLSAoY3VycmVu
dFRpbWUoKSAtIHN0YXJ0VGltZSk7CisgICAgICAgICAgICBkb3VibGUgcmVtYWluaW5nVGltZSA9
IDAuMSAtIChtb25vdG9uaWNUaW1lKCkgLSBzdGFydFRpbWUpOwogICAgICAgICAgICAgaWYgKHJl
bWFpbmluZ1RpbWUgPiAwKQogICAgICAgICAgICAgICAgIHVzbGVlcChzdGF0aWNfY2FzdDx1c2Vj
b25kc190PihyZW1haW5pbmdUaW1lICogMTAwMDAwMC4wKSk7CiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgYm9vbCBpcwogICAgICwgbV9yYXdUaXRsZSgiIikKICAgICAsIG1fdGl0bGVTZXRFeHBsaWNp
dGx5KGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlzLCAmRG9j
dW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQpCi0gICAgLCBtX3N0YXJ0VGlt
ZShjdXJyZW50VGltZSgpKQorICAgICwgbV9zdGFydFRpbWUobW9ub3RvbmljVGltZSgpKQogICAg
ICwgbV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZChmYWxzZSkKICAgICAsIG1fZXh0cmFMYXlv
dXREZWxheSgwKQogICAgICwgbV9leGVjdXRlU2NyaXB0U29vblRpbWVyKHRoaXMsICZEb2N1bWVu
dDo6ZXhlY3V0ZVNjcmlwdFNvb25UaW1lckZpcmVkKQpAQCAtMTk0MSw3ICsxOTQxLDcgQEAgaW50
IERvY3VtZW50OjptaW5pbXVtTGF5b3V0RGVsYXkoKQogCiBpbnQgRG9jdW1lbnQ6OmVsYXBzZWRU
aW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PigoY3VycmVudFRpbWUo
KSAtIG1fc3RhcnRUaW1lKSAqIDEwMDApOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KCht
b25vdG9uaWNUaW1lKCkgLSBtX3N0YXJ0VGltZSkgKiAxMDAwKTsKIH0KIAogdm9pZCBEb2N1bWVu
dDo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9kb20vRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEV2ZW50OjpFdmVudCgpCiAgICAgLCBt
X2NhbmNlbEJ1YmJsZShmYWxzZSkKICAgICAsIG1fZXZlbnRQaGFzZSgwKQogICAgICwgbV9jdXJy
ZW50VGFyZ2V0KDApCi0gICAgLCBtX2NyZWF0ZVRpbWUoc3RhdGljX2Nhc3Q8RE9NVGltZVN0YW1w
PihjdXJyZW50VGltZSgpICogMTAwMC4wKSkKKyAgICAsIG1fY3JlYXRlVGltZShzdGF0aWNfY2Fz
dDxET01UaW1lU3RhbXA+KG1vbm90b25pY1RpbWUoKSAqIDEwMDAuMCkpCiB7CiB9CiAKQEAgLTU0
LDcgKzU0LDcgQEAgRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeQogICAg
ICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCiAgICAgLCBtX2V2ZW50UGhhc2UoMCkKICAgICAsIG1f
Y3VycmVudFRhcmdldCgwKQotICAgICwgbV9jcmVhdGVUaW1lKHN0YXRpY19jYXN0PERPTVRpbWVT
dGFtcD4oY3VycmVudFRpbWUoKSAqIDEwMDAuMCkpCisgICAgLCBtX2NyZWF0ZVRpbWUoc3RhdGlj
X2Nhc3Q8RE9NVGltZVN0YW1wPihtb25vdG9uaWNUaW1lKCkgKiAxMDAwLjApKQogewogfQogCklu
ZGV4OiBXZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBQYXNz
UmVmUHRyPENhY2hlZFBhZ2U+IENhY2hlZFBhZ2U6OmNyZWF0CiB9CiAKIENhY2hlZFBhZ2U6OkNh
Y2hlZFBhZ2UoUGFnZSogcGFnZSkKLSAgICA6IG1fdGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpCisg
ICAgOiBtX3RpbWVTdGFtcChtb25vdG9uaWNUaW1lKCkpCiAgICAgLCBtX2NhY2hlZE1haW5GcmFt
ZShDYWNoZWRGcmFtZTo6Y3JlYXRlKHBhZ2UtPm1haW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRF
QlVHCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBzdGF0aWMgbG9uZyBsb25nIGdlbmVyYXRlRG9jdW1lbnRTZXF1ZW5jCiB7CiAgICAgLy8g
SW5pdGlhbGl6ZSB0byB0aGUgY3VycmVudCB0aW1lIHRvIHJlZHVjZSB0aGUgbGlrZWxpaG9vZCBv
ZiBnZW5lcmF0aW5nCiAgICAgLy8gaWRlbnRpZmllcnMgdGhhdCBvdmVybGFwIHdpdGggdGhvc2Ug
ZnJvbSBwYXN0L2Z1dHVyZSBicm93c2VyIHNlc3Npb25zLgotICAgIHN0YXRpYyBsb25nIGxvbmcg
bmV4dCA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY3VycmVudFRpbWUoKSAqIDEwMDAwMDAuMCk7
CisgICAgc3RhdGljIGxvbmcgbG9uZyBuZXh0ID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihjdXJy
ZW50VVRDVGltZSgpICogMTAwMDAwMC4wKTsKICAgICByZXR1cm4gKytuZXh0OwogfQogCkluZGV4
OiBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUGFn
ZUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChIaXN0b3IKIAogdm9pZCBQYWdlQ2FjaGU6OnJlbGVh
c2VBdXRvcmVsZWFzZWRQYWdlc05vd09yUmVzY2hlZHVsZShUaW1lcjxQYWdlQ2FjaGU+KiB0aW1l
cikKIHsKLSAgICBkb3VibGUgbG9hZERlbHRhID0gY3VycmVudFRpbWUoKSAtIEZyYW1lTG9hZGVy
Ojp0aW1lT2ZMYXN0Q29tcGxldGVkTG9hZCgpOworICAgIGRvdWJsZSBsb2FkRGVsdGEgPSBtb25v
dG9uaWNUaW1lKCkgLSBGcmFtZUxvYWRlcjo6dGltZU9mTGFzdENvbXBsZXRlZExvYWQoKTsKICAg
ICBmbG9hdCB1c2VyRGVsdGEgPSB1c2VySWRsZVRpbWUoKTsKICAgICAKICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzUyMTExOTA+IFRoaXMgbGltaXQgb2YgNDIgcmlza3MgZ3Jvd2luZyB0
aGUgcGFnZSBjYWNoZSBmYXIgYmV5b25kIGl0cyBub21pbmFsIGNhcGFjaXR5LgpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGlj
IGludDY0X3QgZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZQogewogICAgIC8vIEluaXRpYWxpemUg
dG8gdGhlIGN1cnJlbnQgdGltZSB0byByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2YgZ2VuZXJhdGlu
ZwogICAgIC8vIGlkZW50aWZpZXJzIHRoYXQgb3ZlcmxhcCB3aXRoIHRob3NlIGZyb20gcGFzdC9m
dXR1cmUgYnJvd3NlciBzZXNzaW9ucy4KLSAgICBzdGF0aWMgaW50NjRfdCBuZXh0SWRlbnRpZmll
ciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGN1cnJlbnRUaW1lKCkgKiAxMDAwMDAwLjApOworICAg
IHN0YXRpYyBpbnQ2NF90IG5leHRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oY3Vy
cmVudFVUQ1RpbWUoKSAqIDEwMDAwMDAuMCk7CiAgICAgcmV0dXJuICsrbmV4dElkZW50aWZpZXI7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDU4NzMxKQor
KysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NzAsNyArNjcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdGFydFByb2dyZXNzRXZlbgog
ICAgIGlmIChtX3Byb2dyZXNzRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAg
IG1fcHJldmlvdXNQcm9ncmVzc1RpbWUgPSBXVEY6Om1vbm90b25pY1RpbWUoKTsKICAgICBtX3By
ZXZpb3VzUHJvZ3Jlc3MgPSAwOwogICAgIC8vIDM1MG1zIGlzIG5vdCBtYWdpYywgaXQgaXMgaW4g
dGhlIHNwZWMhCiAgICAgbV9wcm9ncmVzc0V2ZW50VGltZXIuc3RhcnRSZXBlYXRpbmcoMC4zNTAp
OwpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVu
dFRpbWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgcHJvZ3Jlc3MgPSBtX3BsYXll
ci0+Ynl0ZXNMb2FkZWQoKTsKLSAgICBkb3VibGUgdGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsK
KyAgICBkb3VibGUgdGltZSA9IFdURjo6bW9ub3RvbmljVGltZSgpOwogICAgIGRvdWJsZSB0aW1l
ZGVsdGEgPSB0aW1lIC0gbV9wcmV2aW91c1Byb2dyZXNzVGltZTsKIAogICAgIGlmIChwcm9ncmVz
cyA9PSBtX3ByZXZpb3VzUHJvZ3Jlc3MpIHsKQEAgLTEzNzMsNyArMTM3Myw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c3RhcnRQbGF5YmFja1Byb2cKICAgICBpZiAobV9wbGF5YmFja1Byb2dy
ZXNzVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aW91c1By
b2dyZXNzVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NU
aW1lID0gV1RGOjptb25vdG9uaWNUaW1lKCk7CiAgICAgbV9wcmV2aW91c1Byb2dyZXNzID0gMDsK
ICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdGFydFJlcGVhdGluZyhtYXhUaW1ldXBkYXRl
RXZlbnRGcmVxdWVuY3kpOwogfQpAQCAtMTM5MSw3ICsxMzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wgcGVyaW9kaWNFdmVudCkKIHsKLSAgICBkb3VibGUgbm93
ID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBub3cgPSBXVEY6Om1vbm90b25pY1Rp
bWUoKTsKICAgICBkb3VibGUgdGltZWRlbHRhID0gbm93IC0gbV9sYXN0VGltZVVwZGF0ZUV2ZW50
V2FsbFRpbWU7CiAKICAgICAvLyB0aHJvdHRsZSB0aGUgcGVyaW9kaWMgZXZlbnRzCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwMSw3ICsxNjAxLDcgQEAgaW5saW5l
IGJvb2wgSFRNTFRva2VuaXplcjo6Y29udGludWVQcm9jZQogICAgIHN0YXRlLnNldEFsbG93WWll
bGQoZmFsc2UpOwogICAgIGlmICghc3RhdGUubG9hZGluZ0V4dFNjcmlwdCgpICYmICFzdGF0ZS5m
b3JjZVN5bmNocm9ub3VzKCkgJiYgIW1fZXhlY3V0aW5nU2NyaXB0ICYmIChwcm9jZXNzZWRDb3Vu
dCA+IG1fdG9rZW5pemVyQ2h1bmtTaXplIHx8IGFsbG93ZWRZaWVsZCkpIHsKICAgICAgICAgcHJv
Y2Vzc2VkQ291bnQgPSAwOwotICAgICAgICBpZiAoY3VycmVudFRpbWUoKSAtIHN0YXJ0VGltZSA+
IG1fdG9rZW5pemVyVGltZURlbGF5KSB7CisgICAgICAgIGlmIChtb25vdG9uaWNUaW1lKCkgLSBz
dGFydFRpbWUgPiBtX3Rva2VuaXplclRpbWVEZWxheSkgewogICAgICAgICAgICAgLyogRklYTUU6
IFdlJ2QgbGlrZSB0byB5aWVsZCBhZ2dyZXNzaXZlbHkgdG8gZ2l2ZSBzdHlsZXNoZWV0cyB0aGUg
b3Bwb3J0dW5pdHkgdG8KICAgICAgICAgICAgICAgIGxvYWQsIGJ1dCB0aGlzIGh1cnRzIG92ZXJh
bGwgcGVyZm9ybWFuY2Ugb24gc2xvd2VyIG1hY2hpbmVzLiAgRm9yIG5vdyB0dXJuIHRoaXMKICAg
ICAgICAgICAgICAgIG9mZi4KQEAgLTE2MTAsNyArMTYxMCw3IEBAIGlubGluZSBib29sIEhUTUxU
b2tlbml6ZXI6OmNvbnRpbnVlUHJvY2UKICAgICAgICAgICAgIC8vIFNjaGVkdWxlIHRoZSB0aW1l
ciB0byBrZWVwIHByb2Nlc3NpbmcgYXMgc29vbiBhcyBwb3NzaWJsZS4KICAgICAgICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDApOwogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJ
TkcKLSAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lID4gbV90b2tlbml6
ZXJUaW1lRGVsYXkpCisgICAgICAgICAgICBpZiAobW9ub3RvbmljVGltZSgpIC0gc3RhcnRUaW1l
ID4gbV90b2tlbml6ZXJUaW1lRGVsYXkpCiAgICAgICAgICAgICAgICAgcHJpbnRmKCJEZWZlcnJp
bmcgcHJvY2Vzc2luZyBvZiBkYXRhIGJlY2F1c2UgNTAwbXMgZWxhcHNlZCBhd2F5IGZyb20gZXZl
bnQgbG9vcC5cbiIpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjcw
LDcgKzE2NzAsNyBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlCiAj
ZW5kaWYKIAogICAgIGludCBwcm9jZXNzZWRDb3VudCA9IDA7Ci0gICAgZG91YmxlIHN0YXJ0VGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHN0YXJ0VGltZSA9IG1vbm90b25pY1RpbWUo
KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvYy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQpAQCAt
MjAzNCw3ICsyMDM0LDcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpleGVjdXRlRXh0ZXJuYWxTY3Jp
cAogCiAgICAgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIAotICAgIGRvdWJsZSBzdGFydFRp
bWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBtb25vdG9uaWNUaW1l
KCk7CiAgICAgd2hpbGUgKCFmaW5pc2hlZCAmJiBtX3BlbmRpbmdTY3JpcHRzLmZpcnN0KCktPmlz
TG9hZGVkKCkpIHsKICAgICAgICAgaWYgKCFjb250aW51ZUV4ZWN1dGluZ0V4dGVybmFsU2NyaXB0
cyhzdGFydFRpbWUpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTE1LDcgKzIxMTUsNyBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6OmNvbnRpbnVlRXhlY3V0aW5nRXh0CiAgICAgaWYgKG1fZXh0ZXJu
YWxTY3JpcHRzVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUgPiBtX3Rva2VuaXplclRpbWVEZWxheSkgewor
ICAgIGlmIChtb25vdG9uaWNUaW1lKCkgLSBzdGFydFRpbWUgPiBtX3Rva2VuaXplclRpbWVEZWxh
eSkgewogICAgICAgICAvLyBTY2hlZHVsZSB0aGUgdGltZXIgdG8ga2VlcCBwcm9jZXNzaW5nIGFz
IHNvb24gYXMgcG9zc2libGUuCiAgICAgICAgIG1fZXh0ZXJuYWxTY3JpcHRzVGltZXIuc3RhcnRP
bmVTaG90KDApOwogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2h0bWwvUHJl
bG9hZFNjYW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9QcmVsb2FkU2Nhbm5l
ci5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDExICsxMzEsMTEgQEAgYm9vbCBQcmVsb2FkU2Nhbm5l
cjo6c2Nhbm5pbmdCb2R5KCkgY29ucwogdm9pZCBQcmVsb2FkU2Nhbm5lcjo6d3JpdGUoY29uc3Qg
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7CiAjaWYgUFJFTE9BRF9ERUJVRwotICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBtb25v
dG9uaWNUaW1lKCk7CiAjZW5kaWYKICAgICB0b2tlbml6ZShzb3VyY2UpOwogI2lmIFBSRUxPQURf
REVCVUcKLSAgICBtX3RpbWVVc2VkICs9IGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWU7CisgICAg
bV90aW1lVXNlZCArPSBtb25vdG9uaWNUaW1lKCkgLSBzdGFydFRpbWU7CiAjZW5kaWYKIH0KICAg
ICAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1ODczMSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIyLDcgKzE4MjIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNvdW50KGNvbnN0IFN0CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRU
aW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBtX3RpbWVzLmFkZCh0aXRsZSwgY3Vy
cmVudFRpbWUoKSAqIDEwMDApOworICAgIG1fdGltZXMuYWRkKHRpdGxlLCBtb25vdG9uaWNUaW1l
KCkgKiAxMDAwKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVGltaW5nKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSYgZWxhcHNlZCkKQEAgLTE4MzQsNyArMTgzNCw3IEBA
IGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWluZyhjb24KICAgICBkb3VibGUgc3Rh
cnRUaW1lID0gaXQtPnNlY29uZDsKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiAgICAgCi0gICAg
ZWxhcHNlZCA9IGN1cnJlbnRUaW1lKCkgKiAxMDAwIC0gc3RhcnRUaW1lOworICAgIGVsYXBzZWQg
PSBtb25vdG9uaWNUaW1lKCkgKiAxMDAwIC0gc3RhcnRUaW1lOwogICAgIHJldHVybiB0cnVlOwog
fQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCShyZXZpc2lv
biA1ODczMSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclJlc291cmNl
PiBJbnNwZWN0b3JSCiAKICAgICByZXNvdXJjZS0+bV9sZW5ndGggPSBjYWNoZWRSZXNvdXJjZS0+
ZW5jb2RlZFNpemUoKTsKICAgICByZXNvdXJjZS0+bV9jYWNoZWQgPSB0cnVlOwotICAgIHJlc291
cmNlLT5tX3N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgcmVzb3VyY2UtPm1fc3RhcnRU
aW1lID0gbW9ub3RvbmljVGltZSgpOwogICAgIHJlc291cmNlLT5tX3Jlc3BvbnNlUmVjZWl2ZWRU
aW1lID0gcmVzb3VyY2UtPm1fc3RhcnRUaW1lOwogICAgIHJlc291cmNlLT5tX2VuZFRpbWUgPSBy
ZXNvdXJjZS0+bV9zdGFydFRpbWU7CiAKQEAgLTMzMCwxOSArMzMwLDE5IEBAIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXIKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6
c3RhcnRUaW1pbmcoKQogewotICAgIG1fc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBt
X3N0YXJ0VGltZSA9IG1vbm90b25pY1RpbWUoKTsKICAgICBtX2NoYW5nZXMuc2V0KFRpbWluZ0No
YW5nZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6Om1hcmtSZXNwb25zZVJlY2VpdmVk
VGltZSgpCiB7Ci0gICAgbV9yZXNwb25zZVJlY2VpdmVkVGltZSA9IGN1cnJlbnRUaW1lKCk7Cisg
ICAgbV9yZXNwb25zZVJlY2VpdmVkVGltZSA9IG1vbm90b25pY1RpbWUoKTsKICAgICBtX2NoYW5n
ZXMuc2V0KFRpbWluZ0NoYW5nZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OmVuZFRp
bWluZygpCiB7Ci0gICAgbV9lbmRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2VuZFRpbWUg
PSBtb25vdG9uaWNUaW1lKCk7CiAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAgICAgbV9jaGFuZ2Vz
LnNldChUaW1pbmdDaGFuZ2UpOwogICAgIG1fY2hhbmdlcy5zZXQoQ29tcGxldGlvbkNoYW5nZSk7
CkBAIC0zNTAsMTMgKzM1MCwxMyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjplbmRUaW1pbmco
KQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjptYXJrRE9NQ29udGVudEV2ZW50VGltZSgpCiB7
Ci0gICAgbV9kb21Db250ZW50RXZlbnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2RvbUNv
bnRlbnRFdmVudFRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgbV9jaGFuZ2VzLnNldChUaW1p
bmdDaGFuZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjptYXJrTG9hZEV2ZW50VGlt
ZSgpCiB7Ci0gICAgbV9sb2FkRXZlbnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2xvYWRF
dmVudFRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgbV9jaGFuZ2VzLnNldChUaW1pbmdDaGFu
Z2UpOwogfQogCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6YWRk
TGVuZ3RoKGludCBsZQogICAgIC8vIFVwZGF0ZSBsb2FkIHRpbWUsIG90aGVyd2lzZSB0aGUgcmVz
b3VyY2Ugd2lsbAogICAgIC8vIGhhdmUgc3RhcnQgdGltZSA9PSBlbmQgdGltZSBhbmQgIDAgbG9h
ZCBkdXJhdGlvbgogICAgIC8vIHVudGlsIGl0cyBsb2FkaW5nIGlzIGNvbXBsZXRlZC4KLSAgICBt
X2VuZFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIG1fZW5kVGltZSA9IG1vbm90b25pY1RpbWUo
KTsKICAgICBtX2NoYW5nZXMuc2V0KFRpbWluZ0NoYW5nZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCShyZXZpc2lvbiA1ODczMSkK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRXcml0ZUhUTQogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIo
aW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAgICAgcHVzaEdD
RXZlbnRSZWNvcmRzKCk7Ci0gICAgU2NyaXB0T2JqZWN0IHJlY29yZCA9IFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChtX2Zyb250ZW5kLCBXVEY6OmN1cnJlbnRUaW1l
TVMoKSk7CisgICAgU2NyaXB0T2JqZWN0IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlR2VuZXJpY1JlY29yZChtX2Zyb250ZW5kLCBtb25vdG9uaWNUaW1lKCkgKiAxMDAwLjAp
OwogICAgIHJlY29yZC5zZXQoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRp
bWVySW5zdGFsbERhdGEobV9mcm9udGVuZCwgdGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCkp
OwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLCBUaW1lckluc3RhbGxUaW1lbGluZVJl
Y29yZFR5cGUpOwogfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkSW5zdGFsbFQKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVtb3Zl
VGltZXIoaW50IHRpbWVySWQpCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7Ci0gICAgU2Ny
aXB0T2JqZWN0IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1Jl
Y29yZChtX2Zyb250ZW5kLCBXVEY6OmN1cnJlbnRUaW1lTVMoKSk7CisgICAgU2NyaXB0T2JqZWN0
IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChtX2Zy
b250ZW5kLCBtb25vdG9uaWNUaW1lKCkgKiAxMDAwLjApOwogICAgIHJlY29yZC5zZXQoImRhdGEi
LCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEobV9mcm9udGVu
ZCwgdGltZXJJZCkpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLCBUaW1lclJlbW92
ZVRpbWVsaW5lUmVjb3JkVHlwZSk7CiB9CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsU2VuZFJlcwogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKICAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBTY3JpcHRPYmplY3Qg
cmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKG1fZnJv
bnRlbmQsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICBTY3JpcHRPYmplY3QgcmVjb3JkID0g
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKG1fZnJvbnRlbmQsIG1v
bm90b25pY1RpbWUoKSAqIDEwMDAuMCk7CiAgICAgcmVjb3JkLnNldCgiZGF0YSIsIFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEobV9mcm9udGVuZCwg
aWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpKTsKICAgICByZWNvcmQuc2V0KCJ0
eXBlIiwgUmVzb3VyY2VTZW5kUmVxdWVzdFRpbWVsaW5lUmVjb3JkVHlwZSk7CiAgICAgc2V0SGVh
cFNpemVTdGF0aXN0aWMocmVjb3JkKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZFJlY2VpdmVSCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGJvb2wg
ZGlkRmFpbCkKIHsKICAgICBwdXNoR0NFdmVudFJlY29yZHMoKTsKLSAgICBTY3JpcHRPYmplY3Qg
cmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKG1fZnJv
bnRlbmQsIFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICBTY3JpcHRPYmplY3QgcmVjb3JkID0g
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKG1fZnJvbnRlbmQsIG1v
bm90b25pY1RpbWUoKSAqIDEwMDAuMCk7CiAgICAgcmVjb3JkLnNldCgiZGF0YSIsIFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKG1fZnJvbnRlbmQsIGlkZW50
aWZpZXIsIGRpZEZhaWwpKTsKICAgICByZWNvcmQuc2V0KCJ0eXBlIiwgUmVzb3VyY2VGaW5pc2hU
aW1lbGluZVJlY29yZFR5cGUpOwogICAgIHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZCk7CkBA
IC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaW5pc2hM
bwogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJrVGltZWxpbmUoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwotICAgIFNjcmlwdE9i
amVjdCByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQo
bV9mcm9udGVuZCwgV1RGOjpjdXJyZW50VGltZU1TKCkpOworICAgIFNjcmlwdE9iamVjdCByZWNv
cmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQobV9mcm9udGVu
ZCwgbW9ub3RvbmljVGltZSgpICogMTAwMC4wKTsKICAgICByZWNvcmQuc2V0KCJkYXRhIiwgVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVNYXJrVGltZWxpbmVEYXRhKG1fZnJvbnRlbmQsIG1l
c3NhZ2UpKTsKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgTWFya1RpbWVsaW5lUmVj
b3JkVHlwZSk7CiB9CkBAIC0yNTQsMTQgKzI1NCwxNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZE1hcmtUaW1lCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZE1hcmtE
T01Db250ZW50RXZlbnQoKQogewogICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwotICAgIFNjcmlw
dE9iamVjdCByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQobV9mcm9udGVuZCwgV1RGOjpjdXJyZW50VGltZU1TKCkpOworICAgIFNjcmlwdE9iamVjdCBy
ZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQobV9mcm9u
dGVuZCwgbW9ub3RvbmljVGltZSgpICogMTAwMC4wKTsKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5l
KHJlY29yZCwgTWFya0RPTUNvbnRlbnRFdmVudFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZE1hcmtMb2FkRXZlbnQoKQogewogICAgIHB1c2hHQ0V2ZW50UmVjb3Jk
cygpOwotICAgIFNjcmlwdE9iamVjdCByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZUdlbmVyaWNSZWNvcmQobV9mcm9udGVuZCwgV1RGOjpjdXJyZW50VGltZU1TKCkpOworICAg
IFNjcmlwdE9iamVjdCByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNSZWNvcmQobV9mcm9udGVuZCwgbW9ub3RvbmljVGltZSgpICogMTAwMC4wKTsKICAgICBhZGRS
ZWNvcmRUb1RpbWVsaW5lKHJlY29yZCwgTWFya0xvYWRFdmVudFR5cGUpOwogfQogCkBAIC0zMDks
NyArMzA5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZQogICAg
ICAgICBBU1NFUlQoZW50cnkudHlwZSA9PSB0eXBlKTsKICAgICAgICAgZW50cnkucmVjb3JkLnNl
dCgiZGF0YSIsIGVudHJ5LmRhdGEpOwogICAgICAgICBlbnRyeS5yZWNvcmQuc2V0KCJjaGlsZHJl
biIsIGVudHJ5LmNoaWxkcmVuKTsKLSAgICAgICAgZW50cnkucmVjb3JkLnNldCgiZW5kVGltZSIs
IFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICAgICAgZW50cnkucmVjb3JkLnNldCgiZW5kVGlt
ZSIsIG1vbm90b25pY1RpbWUoKSAqIDEwMDAuMCk7CiAgICAgICAgIGFkZFJlY29yZFRvVGltZWxp
bmUoZW50cnkucmVjb3JkLCB0eXBlKTsKICAgICB9CiB9CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZQogdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChTY3JpcHRPYmplY3QgZGF0YSwgVGltZWxpbmVS
ZWNvcmRUeXBlIHR5cGUpCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7Ci0gICAgU2NyaXB0
T2JqZWN0IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29y
ZChtX2Zyb250ZW5kLCBXVEY6OmN1cnJlbnRUaW1lTVMoKSk7CisgICAgU2NyaXB0T2JqZWN0IHJl
Y29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChtX2Zyb250
ZW5kLCBtb25vdG9uaWNUaW1lKCkgKiAxMDAwLjApOwogICAgIG1fcmVjb3JkU3RhY2suYXBwZW5k
KFRpbWVsaW5lUmVjb3JkRW50cnkocmVjb3JkLCBkYXRhLCBtX2Zyb250ZW5kLT5uZXdTY3JpcHRB
cnJheSgpLCB0eXBlKSk7CiB9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3Bw
CShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgQ2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcygp
CiAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXBhY2l0
eSAqIGNUYXJnZXRQcnVuZVBlcmNlbnRhZ2UpOyAvLyBDdXQgYnkgYSBwZXJjZW50YWdlIHRvIGF2
b2lkIGltbWVkaWF0ZWx5IHBydW5pbmcgYWdhaW4uCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
RnJhbWVWaWV3OjpjdXJyZW50UGFpbnRUaW1lU3RhbXAoKTsKICAgICBpZiAoIWN1cnJlbnRUaW1l
KSAvLyBJbiBjYXNlIHBydW5lIGlzIGNhbGxlZCBkaXJlY3RseSwgb3V0c2lkZSBvZiBhIEZyYW1l
IHBhaW50LgotICAgICAgICBjdXJyZW50VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICAg
ICAgY3VycmVudFRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgCiAgICAgLy8gRGVzdHJveSBh
bnkgZGVjb2RlZCBkYXRhIGluIGxpdmUgb2JqZWN0cyB0aGF0IHdlIGNhbi4KICAgICAvLyBTdGFy
dCBmcm9tIHRoZSB0YWlsLCBzaW5jZSB0aGlzIGlzIHRoZSBsZWFzdCByZWNlbnRseSBhY2Nlc3Nl
ZCBvZiB0aGUgb2JqZWN0cy4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDU4
NzMxKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTEsNyArMzUxLDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGlkRHJhdyhjb25zdCBJbWFnZSog
aQogICAgIAogICAgIGRvdWJsZSB0aW1lU3RhbXAgPSBGcmFtZVZpZXc6OmN1cnJlbnRQYWludFRp
bWVTdGFtcCgpOwogICAgIGlmICghdGltZVN0YW1wKSAvLyBJZiBkaWREcmF3IGlzIGNhbGxlZCBv
dXRzaWRlIG9mIGEgRnJhbWUgcGFpbnQuCi0gICAgICAgIHRpbWVTdGFtcCA9IGN1cnJlbnRUaW1l
KCk7CisgICAgICAgIHRpbWVTdGFtcCA9IG1vbm90b25pY1RpbWUoKTsKICAgICAKICAgICBDYWNo
ZWRSZXNvdXJjZTo6ZGlkQWNjZXNzRGVjb2RlZERhdGEodGltZVN0YW1wKTsKIH0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBSZWZDb3VudGVkTGVha0NvdW50ZXIgY2FjaGVkUmVzb3UKIAogQ2FjaGVkUmVzb3VyY2U6
OkNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBUeXBlIHR5cGUpCiAgICAgOiBtX3Vy
bCh1cmwpCi0gICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCisgICAgLCBt
X3Jlc3BvbnNlVGltZXN0YW1wKG1vbm90b25pY1RpbWUoKSkKICAgICAsIG1fbGFzdERlY29kZWRB
Y2Nlc3NUaW1lKDApCiAgICAgLCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3ModHJ1ZSkKICAg
ICAsIG1fcHJlbG9hZENvdW50KDApCkBAIC0xMzIsNyArMTMyLDcgQEAgZG91YmxlIENhY2hlZFJl
c291cmNlOjpjdXJyZW50QWdlKCkgY29ucwogICAgIGRvdWJsZSBhcHBhcmVudEFnZSA9IGlzZmlu
aXRlKGRhdGVWYWx1ZSkgPyBtYXgoMC4sIG1fcmVzcG9uc2VUaW1lc3RhbXAgLSBkYXRlVmFsdWUp
IDogMDsKICAgICBkb3VibGUgYWdlVmFsdWUgPSBtX3Jlc3BvbnNlLmFnZSgpOwogICAgIGRvdWJs
ZSBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IGlzZmluaXRlKGFnZVZhbHVlKSA/IG1heChhcHBhcmVu
dEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91YmxlIHJlc2lkZW50VGltZSA9
IGN1cnJlbnRUaW1lKCkgLSBtX3Jlc3BvbnNlVGltZXN0YW1wOworICAgIGRvdWJsZSByZXNpZGVu
dFRpbWUgPSBtb25vdG9uaWNUaW1lKCkgLSBtX3Jlc3BvbnNlVGltZXN0YW1wOwogICAgIHJldHVy
biBjb3JyZWN0ZWRSZWNlaXZlZEFnZSArIHJlc2lkZW50VGltZTsKIH0KICAgICAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBkb3VibGUgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lCiB2b2lk
IENhY2hlZFJlc291cmNlOjpzZXRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7Ci0gICAgbV9yZXNwb25zZVRpbWVz
dGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9yZXNwb25zZVRpbWVzdGFtcCA9IG1vbm90b25p
Y1RpbWUoKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0UmVxdWVzdChSZXF1ZXN0KiBy
ZXF1ZXN0KQpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnN3aXRjaENs
aWVudHNUb1JldmEKICAgICAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlQWZ0
ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNl
KQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOworICAgIG1fcmVz
cG9uc2VUaW1lc3RhbXAgPSBtb25vdG9uaWNUaW1lKCk7CiAKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgY29udGVudEhlYWRlclByZWZpeCwgKCJjb250ZW50LSIp
KTsKICAgICAvLyBSRkMyNjE2IDEwLjMuNQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysg
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtCiAgICAgfSBlbHNlCiAgICAgICAgIGV4cGlyeURlbHRhID0gZGVmYXVsdFBy
ZWZsaWdodENhY2hlVGltZW91dFNlY29uZHM7CiAKLSAgICBtX2Fic29sdXRlRXhwaXJ5VGltZSA9
IGN1cnJlbnRUaW1lKCkgKyBleHBpcnlEZWx0YTsKKyAgICBtX2Fic29sdXRlRXhwaXJ5VGltZSA9
IG1vbm90b25pY1RpbWUoKSArIGV4cGlyeURlbHRhOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xMjUsNyArMTI1LDcgQEAgYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRl
bQogCiBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NSZXF1
ZXN0KGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
SFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYWJzb2x1
dGVFeHBpcnlUaW1lIDwgY3VycmVudFRpbWUoKSkKKyAgICBpZiAobV9hYnNvbHV0ZUV4cGlyeVRp
bWUgPCBtb25vdG9uaWNUaW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaW5j
bHVkZUNyZWRlbnRpYWxzICYmICFtX2NyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxMCw3ICsyMzEwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBuZQogICAgICAgICBwcm92
aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAgZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0
ZUNvbXBsZXRlKSB7CiAgICAgICAgIGZyYW1lTG9hZENvbXBsZXRlZCgpOwotICAgICAgICBzdG9y
ZWRUaW1lT2ZMYXN0Q29tcGxldGVkTG9hZCA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIHN0b3Jl
ZFRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkID0gbW9ub3RvbmljVGltZSgpOwogICAgICAgICBpZiAo
bV9kb2N1bWVudExvYWRlcikKICAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNv
cmRpbmdSZXNwb25zZXMoKTsKICAgICB9CkBAIC0zNjQ1LDcgKzM2NDUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jCiAgICAgICAgIC8vIEZJWE1FOiAxODAwIHNo
b3VsZCBub3QgYmUgaGFyZGNvZGVkLCBpdCBzaG91bGQgY29tZSBmcm9tCiAgICAgICAgIC8vIFdl
YktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkgaW4gV2ViS2l0LgogICAg
ICAgICAvLyBPciB3ZSBzaG91bGQgcmVtb3ZlIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0
aW9uSW50ZXJ2YWxLZXkuCi0gICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gY2FjaGVkUGFnZS0+
dGltZVN0YW1wKCkgPD0gMTgwMCkgeworICAgICAgICBpZiAobW9ub3RvbmljVGltZSgpIC0gY2Fj
aGVkUGFnZS0+dGltZVN0YW1wKCkgPD0gMTgwMCkgewogICAgICAgICAgICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihjYWNoZWRQYWdlLT5kb2N1bWVudExvYWRlcigpLCBsb2FkVHlwZSwgMCk7ICAg
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBQcm9ncmVz
c1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKAogICAgIAogICAgIG1fdG90YWxCeXRlc1JlY2Vp
dmVkICs9IGJ5dGVzUmVjZWl2ZWQ7CiAgICAgCi0gICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1l
KCk7CisgICAgZG91YmxlIG5vdyA9IG1vbm90b25pY1RpbWUoKTsKICAgICBkb3VibGUgbm90aWZp
ZWRQcm9ncmVzc1RpbWVEZWx0YSA9IG5vdyAtIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NUaW1lOwog
ICAgIAogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGluY3JlbWVudGVkICglcCkgLSB2YWx1
ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQiLCB0aGlzLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJv
Z3Jlc3NUcmFja2VkRnJhbWVzKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5j
cHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgICAgICBp
ZiAobV9oYXZlVG9sZENsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9oYXZl
VG9sZENsaWVudCA9IHRydWU7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50UmVkaXJl
Y3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgp
ICsgdGltZXItPm5leHRGaXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKKyAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnRSZWRpcmVjdGVkKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBtX3VybCksIGRlbGF5KCksIG1vbm90b25pY1RpbWUoKSArIHRpbWVyLT5uZXh0RmlyZUlu
dGVydmFsKCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFN0b3BUaW1lcihGcmFtZSogZnJhbWUsIGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA1ODczMSkKKysr
IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTI4LDcgKzUyOCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwK
ICAgICAKICAgICAgICAgLy8gVXBkYXRlIHRoZSBkYXRhIGFuZCBzZXQgdGhlIHRpbWUgc3RhbXAK
ICAgICAgICAgaWNvbi0+c2V0SW1hZ2VEYXRhKGRhdGEpOwotICAgICAgICBpY29uLT5zZXRUaW1l
c3RhbXAoKGludCljdXJyZW50VGltZSgpKTsKKyAgICAgICAgaWNvbi0+c2V0VGltZXN0YW1wKChp
bnQpbW9ub3RvbmljVGltZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIENvcHkgdGhlIGN1cnJl
bnQgcmV0YWluaW5nIHBhZ2VVUkxzIC0gaWYgYW55IC0gdG8gbm90aWZ5IHRoZW0gb2YgdGhlIGNo
YW5nZQogICAgICAgICBwYWdlVVJMcy5hcHBlbmRSYW5nZShpY29uLT5yZXRhaW5pbmdQYWdlVVJM
cygpLmJlZ2luKCksIGljb24tPnJldGFpbmluZ1BhZ2VVUkxzKCkuZW5kKCkpOwpAQCAtNjQ5LDcg
KzY0OSw3IEBAIEljb25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNlOjpsb2FkRGVjaXMKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgICAgICBpZiAoSWNv
blJlY29yZCogaWNvbiA9IG1faWNvblVSTFRvUmVjb3JkTWFwLmdldChpY29uVVJMKSkgewogICAg
ICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkZvdW5kIGV4cGlyYXRpb24gdGltZSBvbiBhIHBy
ZXNlbnQgaWNvbiBiYXNlZCBvbiBleGlzdGluZyBJY29uUmVjb3JkIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gKGludCljdXJyZW50VGltZSgpIC0gaWNvbi0+Z2V0VGltZXN0YW1wKCkgPiBpY29uRXhw
aXJhdGlvblRpbWUgPyBJY29uTG9hZFllcyA6IEljb25Mb2FkTm87CisgICAgICAgICAgICByZXR1
cm4gKGludCltb25vdG9uaWNUaW1lKCkgLSBpY29uLT5nZXRUaW1lc3RhbXAoKSA+IGljb25FeHBp
cmF0aW9uVGltZSA/IEljb25Mb2FkWWVzIDogSWNvbkxvYWRObzsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6aW1wb3J0SWNvbkRh
dGFGb3JJY29uCiAgICAgCiAgICAgQVNTRVJUKCFpY29uVVJMLmlzRW1wdHkoKSk7CiAKLSAgICB3
cml0ZUljb25TbmFwc2hvdFRvU1FMRGF0YWJhc2UoSWNvblNuYXBzaG90KGljb25VUkwsIChpbnQp
Y3VycmVudFRpbWUoKSwgZGF0YS5nZXQoKSkpOworICAgIHdyaXRlSWNvblNuYXBzaG90VG9TUUxE
YXRhYmFzZShJY29uU25hcHNob3QoaWNvblVSTCwgKGludCltb25vdG9uaWNUaW1lKCksIGRhdGEu
Z2V0KCkpKTsKIH0KIAogYm9vbCBJY29uRGF0YWJhc2U6OnNob3VsZFN0b3BUaHJlYWRBY3Rpdml0
eSgpIGNvbnN0CkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0
YWJhc2VTeW5jVGhyZQogICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBJY29uRGF0YWJh
c2Ugc3luYyB0aHJlYWQgc3RhcnRlZCIpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIGRvdWJsZSBz
dGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBtb25vdG9u
aWNUaW1lKCk7CiAjZW5kaWYKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBw
YXRoIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQq
IEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmUKICAgICAgICAgcmV0dXJuIHN5bmNU
aHJlYWRNYWluTG9vcCgpOwogICAgICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgZG91YmxlIHRp
bWVTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHRpbWVTdGFtcCA9IG1vbm90b25p
Y1RpbWUoKTsKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgT3BlbiB0b29rICUuNGYg
c2Vjb25kcyIsIHRpbWVTdGFtcCAtIHN0YXJ0VGltZSk7CiAjZW5kaWYgICAgCiAKQEAgLTk5MCw3
ICs5OTAsNyBAQCB2b2lkKiBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlCiAgICAg
ICAgIHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKICAgICAgICAgCiAjaWZuZGVmIE5ERUJV
RwotICAgIGRvdWJsZSBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIG5ld1N0
YW1wID0gbW9ub3RvbmljVGltZSgpOwogICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBw
ZXJmb3JtT3BlbkluaXRpYWxpemF0aW9uKCkgdG9vayAlLjRmIHNlY29uZHMsIG5vdyAlLjRmIHNl
Y29uZHMgZnJvbSB0aHJlYWQgc3RhcnQiLCBuZXdTdGFtcCAtIHRpbWVTdGFtcCwgbmV3U3RhbXAg
LSBzdGFydFRpbWUpOwogICAgIHRpbWVTdGFtcCA9IG5ld1N0YW1wOwogI2VuZGlmIApAQCAtMTAx
MywxNCArMTAxMywxNCBAQCB2b2lkKiBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJl
CiAgICAgICAgICAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29wKCk7CiAgICAgICAgICAgICAK
ICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG5ld1N0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICAg
ICAgbmV3U3RhbXAgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgICAgIExPRyhJY29uRGF0YWJhc2Us
ICIoVEhSRUFEKSBwZXJmb3JtSW1wb3J0KCkgdG9vayAlLjRmIHNlY29uZHMsIG5vdyAlLjRmIHNl
Y29uZHMgZnJvbSB0aHJlYWQgc3RhcnQiLCBuZXdTdGFtcCAtIHRpbWVTdGFtcCwgbmV3U3RhbXAg
LSBzdGFydFRpbWUpOwogICAgICAgICB0aW1lU3RhbXAgPSBuZXdTdGFtcDsKICNlbmRpZiAKICAg
ICB9CiAgICAgICAgIAogICAgIC8vIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gc2lt
dWxhdGUgYSBsb25nIGxhc3RpbmcgVVJMIGltcG9ydCAoKkhVR0UqIGljb24gZGF0YWJhc2VzLCBv
ciBuZXR3b3JrIGhvbWUgZGlyZWN0b3JpZXMpCi0gICAgLy8gd2hpbGUgKGN1cnJlbnRUaW1lKCkg
LSB0aW1lU3RhbXAgPCAxMCk7CisgICAgLy8gd2hpbGUgKG1vbm90b25pY1RpbWUoKSAtIHRpbWVT
dGFtcCA8IDEwKTsKIAogICAgIC8vIFJlYWQgaW4gVVJMIG1hcHBpbmdzIGZyb20gdGhlIGRhdGFi
YXNlICAgICAgICAgIAogICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBTdGFydGluZyBp
Y29uVVJMIGltcG9ydCIpOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgdm9pZCogSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VTeW5jVGhyZQogICAgICAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29w
KCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgbmV3U3RhbXAgPSBjdXJyZW50VGltZSgpOworICAg
IG5ld1N0YW1wID0gbW9ub3RvbmljVGltZSgpOwogICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhS
RUFEKSBwZXJmb3JtVVJMSW1wb3J0KCkgdG9vayAlLjRmIHNlY29uZHMuICBFbnRlcmluZyBtYWlu
IGxvb3AgJS40ZiBzZWNvbmRzIGZyb20gdGhyZWFkIHN0YXJ0IiwgbmV3U3RhbXAgLSB0aW1lU3Rh
bXAsIG5ld1N0YW1wIC0gc3RhcnRUaW1lKTsKICNlbmRpZiAKIApAQCAtMTMzOCw3ICsxMzM4LDcg
QEAgdm9pZCogSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQogICAgICAgICBtX3N5
bmNMb2NrLnVubG9jaygpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBkb3VibGUgdGltZVN0
YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHRpbWVTdGFtcCA9IG1vbm90b25p
Y1RpbWUoKTsKICNlbmRpZgogICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgTWFp
biB3b3JrIGxvb3Agc3RhcnRpbmciKTsKIApAQCAtMTM3MSwxMyArMTM3MSwxMyBAQCB2b2lkKiBJ
Y29uRGF0YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCgpCiAgICAgICAgICAgICBzdGF0aWMgYm9v
bCBwcnVuZWRVbnJldGFpbmVkSWNvbnMgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChkaWRXcml0
ZSAmJiAhbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkICYmICFwcnVuZWRVbnJldGFpbmVkSWNvbnMg
JiYgIWRhdGFiYXNlQ2xlYW51cENvdW50ZXIpIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAg
ICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgICAgIGRvdWJs
ZSB0aW1lID0gbW9ub3RvbmljVGltZSgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgTE9HKElj
b25EYXRhYmFzZSwgIihUSFJFQUQpIFN0YXJ0aW5nIHBydW5lVW5yZXRhaW5lZEljb25zKCkiKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwcnVuZVVucmV0YWluZWRJY29ucygp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICIo
VEhSRUFEKSBwcnVuZVVucmV0YWluZWRJY29ucygpIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVu
dFRpbWUoKSAtIHRpbWUpOworICAgICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhS
RUFEKSBwcnVuZVVucmV0YWluZWRJY29ucygpIHRvb2sgJS40ZiBzZWNvbmRzIiwgbW9ub3Rvbmlj
VGltZSgpIC0gdGltZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gSWYg
cHJ1bmVVbnJldGFpbmVkSWNvbnMoKSByZXR1cm5lZCBlYXJseSBkdWUgdG8gcmVxdWVzdGVkIHRo
cmVhZCB0ZXJtaW5hdGlvbiwgaXRzIHN0aWxsIG9rYXkKICAgICAgICAgICAgICAgICAvLyB0byBt
YXJrIHBydW5lZFVucmV0YWluZWRJY29ucyB0cnVlIGJlY2F1c2Ugd2UncmUgYWJvdXQgdG8gdGVy
bWluYXRlIGFueXdheQpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpz
eW5jVGhyZWFkTWFpbkxvb3AoKQogICAgICAgICB9CiAgICAgICAgIAogI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgZG91YmxlIG5ld3N0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91Ymxl
IG5ld3N0YW1wID0gbW9ub3RvbmljVGltZSgpOwogICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAi
KFRIUkVBRCkgTWFpbiB3b3JrIGxvb3AgcmFuIGZvciAlLjRmIHNlY29uZHMsICVzIHJlcXVlc3Rl
ZCB0byB0ZXJtaW5hdGUiLCBuZXdzdGFtcCAtIHRpbWVTdGFtcCwgc2hvdWxkU3RvcFRocmVhZEFj
dGl2aXR5KCkgPyAid2FzIiA6ICJ3YXMgbm90Iik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAg
ICAgCkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRh
YmFzZSgpCiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKICAgICAKICNpZm5kZWYgTkRF
QlVHCi0gICAgZG91YmxlIHRpbWVTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHRp
bWVTdGFtcCA9IG1vbm90b25pY1RpbWUoKTsKICNlbmRpZgogCiAgICAgYm9vbCBkaWRBbnlXb3Jr
ID0gZmFsc2U7CkBAIC0xNTMzLDcgKzE1MzMsNyBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZy
b21EYXRhYmFzZSgpCiAgICAgICAgICAgICByZXR1cm4gZGlkQW55V29yazsKICAgICB9CiAKLSAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiUmVhZGluZyBmcm9tIGRhdGFiYXNlIHRvb2sgJS40ZiBzZWNv
bmRzIiwgY3VycmVudFRpbWUoKSAtIHRpbWVTdGFtcCk7CisgICAgTE9HKEljb25EYXRhYmFzZSwg
IlJlYWRpbmcgZnJvbSBkYXRhYmFzZSB0b29rICUuNGYgc2Vjb25kcyIsIG1vbm90b25pY1RpbWUo
KSAtIHRpbWVTdGFtcCk7CiAKICAgICByZXR1cm4gZGlkQW55V29yazsKIH0KQEAgLTE1NDMsNyAr
MTU0Myw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjp3cml0ZVRvRGF0YWJhc2UoKQogICAgIEFTU0VS
VF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgZG91YmxlIHRpbWVT
dGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHRpbWVTdGFtcCA9IG1vbm90b25pY1Rp
bWUoKTsKICNlbmRpZgogCiAgICAgYm9vbCBkaWRBbnlXb3JrID0gZmFsc2U7CkBAIC0xNTkwLDcg
KzE1OTAsNyBAQCBib29sIEljb25EYXRhYmFzZTo6d3JpdGVUb0RhdGFiYXNlKCkKICAgICBpZiAo
ZGlkQW55V29yaykKICAgICAgICAgY2hlY2tGb3JEYW5nbGluZ1BhZ2VVUkxzKGZhbHNlKTsKIAot
ICAgIExPRyhJY29uRGF0YWJhc2UsICJVcGRhdGluZyB0aGUgZGF0YWJhc2UgdG9vayAlLjRmIHNl
Y29uZHMiLCBjdXJyZW50VGltZSgpIC0gdGltZVN0YW1wKTsKKyAgICBMT0coSWNvbkRhdGFiYXNl
LCAiVXBkYXRpbmcgdGhlIGRhdGFiYXNlIHRvb2sgJS40ZiBzZWNvbmRzIiwgbW9ub3RvbmljVGlt
ZSgpIC0gdGltZVN0YW1wKTsKIAogICAgIHJldHVybiBkaWRBbnlXb3JrOwogfQpAQCAtMTczNyw3
ICsxNzM3LDcgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpjbGVhbnVwU3luY1RocmVhZCgpCiAgICAg
QVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgZG91
YmxlIHRpbWVTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHRpbWVTdGFtcCA9IG1v
bm90b25pY1RpbWUoKTsKICNlbmRpZiAKIAogICAgIC8vIElmIHRoZSByZW1vdmVJY29ucyBmbGFn
IGlzIHNldCwgcmVtb3ZlIGFsbCBpY29ucyBmcm9tIHRoZSBkYi4KQEAgLTE3NTcsNyArMTc1Nyw3
IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6Y2xlYW51cFN5bmNUaHJlYWQoKQogICAgIG1fc3luY0RC
LmNsb3NlKCk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIExPRyhJY29uRGF0YWJhc2UsICIo
VEhSRUFEKSBGaW5hbCBjbG9zdXJlIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVudFRpbWUoKSAt
IHRpbWVTdGFtcCk7CisgICAgTE9HKEljb25EYXRhYmFzZSwgIihUSFJFQUQpIEZpbmFsIGNsb3N1
cmUgdG9vayAlLjRmIHNlY29uZHMiLCBtb25vdG9uaWNUaW1lKCkgLSB0aW1lU3RhbXApOwogI2Vu
ZGlmCiAgICAgCiAgICAgbV9zeW5jVGhyZWFkUnVubmluZyA9IGZhbHNlOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIFBsYXRm
b3JtTW91c2VFdmVudCBjcmVhdGVNb3VzZUV2ZQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtl
eSk7CiAgICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChkcmFnRGF0YS0+Y2xpZW50UG9zaXRp
b24oKSwgZHJhZ0RhdGEtPmdsb2JhbFBvc2l0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5
LCBhbHRLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhS2V5LCBjdXJyZW50
VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFLZXksIG1vbm90b25p
Y1RpbWUoKSk7CiB9CiAKIERyYWdDb250cm9sbGVyOjpEcmFnQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBEcmFnQ2xpZW50KiBjbGllbnQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24g
NTg3MzEpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAzOCw3ICsyMDM4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVu
dFRpbQogICAgIGJvb2wgbWV0YUtleTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1
cnJlbnRNb2RpZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwog
ICAgIEludFBvaW50IGdsb2JhbFBvaW50ID0gdmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0
KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9jdXJyZW50TW91c2VQb3NpdGlvbiksIEludFNpemUo
KSkpLmxvY2F0aW9uKCk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVu
dChtX2N1cnJlbnRNb3VzZVBvc2l0aW9uLCBnbG9iYWxQb2ludCwgTm9CdXR0b24sIE1vdXNlRXZl
bnRNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgY3VycmVudFRp
bWUoKSk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmVFdmVudChtX2N1cnJl
bnRNb3VzZVBvc2l0aW9uLCBnbG9iYWxQb2ludCwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
MCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgbW9ub3RvbmljVGltZSgpKTsK
ICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTczLDcgKzExNzMsNyBAQCBkb3VibGUgRnJhbWVWaWV3OjphZGp1c3Rl
ZERlZmVycmVkUmVwYWluCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkUmVwYWludERlbGF5KQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBkb3VibGUgdGltZVNpbmNlTGFzdFBhaW50ID0gY3VycmVudFRp
bWUoKSAtIG1fbGFzdFBhaW50VGltZTsKKyAgICBkb3VibGUgdGltZVNpbmNlTGFzdFBhaW50ID0g
bW9ub3RvbmljVGltZSgpIC0gbV9sYXN0UGFpbnRUaW1lOwogICAgIHJldHVybiBtYXgoMC4sIG1f
ZGVmZXJyZWRSZXBhaW50RGVsYXkgLSB0aW1lU2luY2VMYXN0UGFpbnQpOwogfQogICAgIApAQCAt
MTc4Miw3ICsxNzgyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
bwogCiAgICAgYm9vbCBpc1RvcExldmVsUGFpbnRlciA9ICFzQ3VycmVudFBhaW50VGltZVN0YW1w
OwogICAgIGlmIChpc1RvcExldmVsUGFpbnRlcikKLSAgICAgICAgc0N1cnJlbnRQYWludFRpbWVT
dGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSBt
b25vdG9uaWNUaW1lKCk7CiAgICAgCiAgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyID0g
ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFjb250ZW50UmVuZGVyZXIpIHsK
QEAgLTE4MjAsNyArMTgyMCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBo
aWNzQ28KICAgICBtX3BhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yOwogICAgIAogICAg
IG1faXNQYWludGluZyA9IGZhbHNlOwotICAgIG1fbGFzdFBhaW50VGltZSA9IGN1cnJlbnRUaW1l
KCk7CisgICAgbV9sYXN0UGFpbnRUaW1lID0gbW9ub3RvbmljVGltZSgpOwogCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQogICAgIC8vIFJlZ2lvbnMgbWF5IGhhdmUgY2hhbmdlZCBhcyBh
IHJlc3VsdCBvZiB0aGUgdmlzaWJpbGl0eS96LWluZGV4IG9mIGVsZW1lbnQgY2hhbmdpbmcuCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw3IEBAIGJvb2wgR2Vv
bG9jYXRpb246OmhhdmVTdWl0YWJsZUNhY2hlZFBvc2kKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKCFvcHRpb25zLT5tYXhpbXVtQWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBET01UaW1lU3RhbXAgY3VycmVudFRpbWVNaWxsaXMgPSBjdXJyZW50VGltZSgpICogMTAwMC4w
OworICAgIERPTVRpbWVTdGFtcCBjdXJyZW50VGltZU1pbGxpcyA9IG1vbm90b25pY1RpbWUoKSAq
IDEwMDAuMDsKICAgICByZXR1cm4gbV9wb3NpdGlvbkNhY2hlLT5jYWNoZWRQb3NpdGlvbigpLT50
aW1lc3RhbXAoKSA+IGN1cnJlbnRUaW1lTWlsbGlzIC0gb3B0aW9ucy0+bWF4aW11bUFnZSgpOwog
fQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3Jl
L3BhZ2UvUGx1Z2luSGFsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2
b2lkIFBsdWdpbkhhbHRlcjo6ZGlkU3RhcnRQbHVnaW4oSGFsdGFiCiAgICAgaWYgKCFtX2NsaWVu
dC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3VibGUgY3VycmVudFRpbWUg
PSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gbW9ub3Rvbmlj
VGltZSgpOwogCiAgICAgbV9wbHVnaW5zLmFkZChvYmosIGN1cnJlbnRUaW1lKTsKIApAQCAtNzks
NyArNzksNyBAQCB2b2lkIFBsdWdpbkhhbHRlcjo6dGltZXJGaXJlZChUaW1lcjxQbHVnCiAgICAg
Y29weUtleXNUb1ZlY3RvcihtX3BsdWdpbnMsIHBsdWdpbnMpOwogCiAgICAgLy8gUGx1Zy1pbnMg
b2xkZXIgdGhhbiB0aGlzIGFyZSBjYW5kaWRhdGVzIHRvIGJlIGhhbHRlZC4KLSAgICBkb3VibGUg
cGx1Z2luQ3V0T2ZmVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKSAtIG1fcGx1Z2luQWxsb3dlZFJ1
blRpbWU7CisgICAgZG91YmxlIHBsdWdpbkN1dE9mZlRpbWUgPSBtb25vdG9uaWNUaW1lKCkgLSBt
X3BsdWdpbkFsbG93ZWRSdW5UaW1lOwogCiAgICAgbV9vbGRlc3RTdGFydFRpbWUgPSBudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGx1Z2lu
SGFsdGVyOjpzdGFydFRpbWVySWZOZWNlc3NhcnkKICAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwgPSBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUpIC0gKGN1cnJlbnRUaW1lKCkg
LSBtX29sZGVzdFN0YXJ0VGltZSk7CisgICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwgPSBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fcGx1Z2luQWxsb3dlZFJ1blRpbWUpIC0gKG1vbm90b25pY1RpbWUo
KSAtIG1fb2xkZXN0U3RhcnRUaW1lKTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChuZXh0Rmly
ZUludGVydmFsIDwgMCA/IDAgOiBuZXh0RmlyZUludGVydmFsKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1
ODczMSkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpwYXVzZVRyCiBkb3VibGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJl
Z2luQW5pbWF0aW9uVXBkYXRlVGltZSgpCiB7CiAgICAgaWYgKG1fYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lID09IGNCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWVOb3RTZXQpCi0gICAgICAgIG1fYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9iZWdpbkFu
aW1hdGlvblVwZGF0ZVRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgcmV0dXJuIG1fYmVnaW5B
bmltYXRpb25VcGRhdGVUaW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRp
bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCShyZXZp
c2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpID0gMDsKIAogICAgICAgICAvLyBU
aGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBjbGFzc2ljIFBPU0lYIGVwb2NoIG9mIEph
bnVhcnkgMSwgMTk3MCwKLSAgICAgICAgLy8gYXMgdGhlIHJlc3VsdCBvZiBjdXJyZW50VGltZSgp
IGlzLgorICAgICAgICAvLyBhcyB0aGUgcmVzdWx0IG9mIG1vbm90b25pY1RpbWUoKSBpcy4KICAg
ICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVUaW1lKGRvdWJsZSkgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpID0gMDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJz
LmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBUaHJlYWRUaW1lcnM6OnNo
YXJlZFRpbWVyRmlyZWRJbnRlcgogICAgICAgICByZXR1cm47CiAgICAgbV9maXJpbmdUaW1lcnMg
PSB0cnVlOwogCi0gICAgZG91YmxlIGZpcmVUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3Vi
bGUgZmlyZVRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgZG91YmxlIHRpbWVUb1F1aXQgPSBm
aXJlVGltZSArIG1heER1cmF0aW9uT2ZGaXJpbmdUaW1lcnM7CiAKICAgICB3aGlsZSAoIW1fdGlt
ZXJIZWFwLmlzRW1wdHkoKSAmJiBtX3RpbWVySGVhcC5maXJzdCgpLT5tX25leHRGaXJlVGltZSA8
PSBmaXJlVGltZSkgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgVGhyZWFkVGltZXJzOjpzaGFy
ZWRUaW1lckZpcmVkSW50ZXIKICAgICAgICAgdGltZXItPmZpcmVkKCk7CiAKICAgICAgICAgLy8g
Q2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2VkIHRpbWVycyB0byBmaXJlIGluIGEg
bmVzdGVkIGV2ZW50IGxvb3AsIG9yIHdlIGFyZSBvdmVyIHRpbWUgbGltaXQuCi0gICAgICAgIGlm
ICghbV9maXJpbmdUaW1lcnMgfHwgdGltZVRvUXVpdCA8IGN1cnJlbnRUaW1lKCkpCisgICAgICAg
IGlmICghbV9maXJpbmdUaW1lcnMgfHwgdGltZVRvUXVpdCA8IG1vbm90b25pY1RpbWUoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHJldmlzaW9uIDU4
NzMxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MSw3ICsxODEsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50CiAg
ICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBtX3JlcGVhdElu
dGVydmFsID0gcmVwZWF0SW50ZXJ2YWw7Ci0gICAgc2V0TmV4dEZpcmVUaW1lKGN1cnJlbnRUaW1l
KCkgKyBuZXh0RmlyZUludGVydmFsKTsKKyAgICBzZXROZXh0RmlyZVRpbWUobW9ub3RvbmljVGlt
ZSgpICsgbmV4dEZpcmVJbnRlcnZhbCk7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpzdG9wKCkKQEAg
LTE5OSw3ICsxOTksNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiBkb3VibGUgVGltZXJCYXNl
OjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0g
ICAgZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50ID0g
bW9ub3RvbmljVGltZSgpOwogICAgIGlmIChtX25leHRGaXJlVGltZSA8IGN1cnJlbnQpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX25leHRGaXJlVGltZSAtIGN1cnJlbnQ7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvR2VvbG9jYXRpb25TZXJ2aWNlQW5kcm9pZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0dlb2xvY2F0aW9uU2Vydmlj
ZUFuZHJvaWQuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9HZW9sb2NhdGlvblNlcnZpY2VBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcg
KzE3MSw3IEBAIGJvb2wgR2VvbG9jYXRpb25TZXJ2aWNlQW5kcm9pZDo6aXNQb3NpdGkKIGJvb2wg
R2VvbG9jYXRpb25TZXJ2aWNlQW5kcm9pZDo6aXNQb3NpdGlvbk1vcmVUaW1lbHkoR2VvcG9zaXRp
b24qIHBvc2l0aW9uMSwgR2VvcG9zaXRpb24qIHBvc2l0aW9uMikKIHsKICAgICBBU1NFUlQocG9z
aXRpb24xICYmIHBvc2l0aW9uMik7Ci0gICAgRE9NVGltZVN0YW1wIGN1cnJlbnRUaW1lTWlsbGlz
ID0gV1RGOjpjdXJyZW50VGltZSgpICogMTAwMC4wOworICAgIERPTVRpbWVTdGFtcCBjdXJyZW50
VGltZU1pbGxpcyA9IFdURjo6bW9ub3RvbmljVGltZSgpICogMTAwMC4wOwogICAgIERPTVRpbWVT
dGFtcCBtYXhpbXVtQWdlTWlsbGlzID0gMTAgKiA2MCAqIDEwMDA7ICAvLyAxMCBtaW51dGVzCiAg
ICAgcmV0dXJuIGN1cnJlbnRUaW1lTWlsbGlzIC0gcG9zaXRpb24xLT50aW1lc3RhbXAoKSA+IG1h
eGltdW1BZ2VNaWxsaXM7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvU2hhcmVk
VGltZXJBbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQv
U2hhcmVkVGltZXJBbmRyb2lkLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2FuZHJvaWQvU2hhcmVkVGltZXJBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTAgKzQ2LDEwIEBAIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCoKIH0K
IAogLy8gVGhlIGZpcmUgdGltZSBpcyByZWxhdGl2ZSB0byB0aGUgY2xhc3NpYyBQT1NJWCBlcG9j
aCBvZiBKYW51YXJ5IDEsIDE5NzAsCi0vLyBhcyB0aGUgcmVzdWx0IG9mIGN1cnJlbnRUaW1lKCkg
aXMuCisvLyBhcyB0aGUgcmVzdWx0IG9mIG1vbm90b25pY1RpbWUoKSBpcy4KIHZvaWQgc2V0U2hh
cmVkVGltZXJGaXJlVGltZShkb3VibGUgZmlyZVRpbWUpCiB7Ci0gICAgbG9uZyBsb25nIHRpbWVJ
bk1zID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigoZmlyZVRpbWUgLSBXVEY6OmN1cnJlbnRUaW1l
KCkpICogMTAwMCk7CisgICAgbG9uZyBsb25nIHRpbWVJbk1zID0gc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPigoZmlyZVRpbWUgLSBXVEY6Om1vbm90b25pY1RpbWUoKSkgKiAxMDAwKTsKIAogICAgIExP
R1YoInNldFNoYXJlZFRpbWVyRmlyZVRpbWU6IGluICVsZCBtaWxsaXNlYyIsIHRpbWVJbk1zKTsK
ICAgICBpZiAoSmF2YVNoYXJlZENsaWVudDo6R2V0VGltZXJDbGllbnQoKSkKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vYnJldy9TaGFyZWRUaW1lckJyZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vYnJldy9TaGFyZWRUaW1lckJyZXcuY3BwCShyZXZpc2lvbiA1ODczMSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vYnJldy9TaGFyZWRUaW1lckJyZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUgZmly
ZVQKIAogICAgIENBTExCQUNLX0NhbmNlbCgmc2hhcmVkVGltZXJDYWxsYmFjayk7CiAKLSAgICBk
b3VibGUgaW50ZXJ2YWwgPSBmaXJlVGltZSAtIGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGlu
dGVydmFsID0gZmlyZVRpbWUgLSBtb25vdG9uaWNUaW1lKCk7CiAgICAgaW50IGludGVydmFsSW5N
UzsKIAogICAgIGlmIChpbnRlcnZhbCA8IDApCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBMZWFkaW5nV2hpdGVTcGFj
ZShjb24KIC8vIEZyb20gSFRNTFNlbGVjdEVsZW1lbnQuY3BwLCB3aXRoIG1vZGlmaWNhdGlvbnMK
IHZvaWQgUG9wdXBMaXN0Qm94Ojp0eXBlQWhlYWRGaW5kKGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiB7Ci0gICAgVGltZVN0YW1wIG5vdyA9IHN0YXRpY19jYXN0PFRpbWVTdGFt
cD4oY3VycmVudFRpbWUoKSAqIDEwMDAuMGYpOworICAgIFRpbWVTdGFtcCBub3cgPSBzdGF0aWNf
Y2FzdDxUaW1lU3RhbXA+KG1vbm90b25pY1RpbWUoKSAqIDEwMDAuMGYpOwogICAgIFRpbWVTdGFt
cCBkZWx0YSA9IG5vdyAtIG1fbGFzdENoYXJUaW1lOwogCiAgICAgLy8gUmVzZXQgdGhlIHRpbWUg
d2hlbiB1c2VyIHR5cGVzIGluIGEgY2hhcmFjdGVyLiBUaGUgdGltZSBnYXAgYmV0d2VlbgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TeXN0ZW1UaW1lQ2hyb21pdW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU3lzdGVtVGltZUNocm9taXVtLmNw
cAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1N5c3RlbVRp
bWVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNl
IGVwb2NoLgotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7
CiAgICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpjdXJyZW50VGltZSgpOwogfQogCisvLyBGSVhN
RTogaW1wbGVtZW50IGl0IGNvcnJlY3RseQorZG91YmxlIG1vbm90b25pY1RpbWUoKQoreworICAg
IHJldHVybiBjdXJyZW50VVRDVGltZSgpOworfQorCiBmbG9hdCB1c2VySWRsZVRpbWUoKQogewog
ICAgIC8vIE5lZWRlZCBmb3IgYmFjay9mb3J3YXJkIGNhY2hlLCB3aGljaCB3ZSBjdXJyZW50bHkg
aGF2ZSBkaXNhYmxlZC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtTW91c2VF
dmVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1N
b3VzZUV2ZW50RWZsLmNwcAkocmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Vm
bC9QbGF0Zm9ybU1vdXNlRXZlbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIHZvaWQgUGxhdGZvcm1Nb3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KEUKIH0KIAogUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9E
b3duKiBldiwgSW50UG9pbnQgcG9zKQotICAgIDogbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkK
KyAgICA6IG1fdGltZXN0YW1wKG1vbm90b25pY1RpbWUoKSkKICAgICAsIG1fc2hpZnRLZXkoZXZh
c19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJTaGlmdCIpKQogICAgICwgbV9j
dHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+bW9kaWZpZXJzLCAiQ29udHJvbCIp
KQogICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMs
ICJBbHQiKSkKQEAgLTYyLDcgKzYyLDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoYwogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChj
b25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiwgSW50UG9pbnQgcG9zKQotICAgIDogbV90aW1l
c3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICA6IG1fdGltZXN0YW1wKG1vbm90b25pY1RpbWUoKSkK
ICAgICAsIG1fc2hpZnRLZXkoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMs
ICJTaGlmdCIpKQogICAgICwgbV9jdHJsS2V5KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChldi0+
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQogICAgICwgbV9hbHRLZXkoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KGV2LT5tb2RpZmllcnMsICJBbHQiKSkKQEAgLTc2LDcgKzc2LDcgQEAgUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoYwogfQogCiBQbGF0Zm9ybU1vdXNlRXZlbnQ6
OlBsYXRmb3JtTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2LCBJbnRQ
b2ludCBwb3MpCi0gICAgOiBtX3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQorICAgIDogbV90aW1l
c3RhbXAobW9ub3RvbmljVGltZSgpKQogICAgICwgbV9zaGlmdEtleShldmFzX2tleV9tb2RpZmll
cl9pc19zZXQoZXYtPm1vZGlmaWVycywgIlNoaWZ0IikpCiAgICAgLCBtX2N0cmxLZXkoZXZhc19r
ZXlfbW9kaWZpZXJfaXNfc2V0KGV2LT5tb2RpZmllcnMsICJDb250cm9sIikpCiAgICAgLCBtX2Fs
dEtleShldmFzX2tleV9tb2RpZmllcl9pc19zZXQoZXYtPm1vZGlmaWVycywgIkFsdCIpKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU3lzdGVtVGltZUVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU3lzdGVtVGltZUVmbC5jcHAJKHJldmlzaW9uIDU4NzMxKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU3lzdGVtVGltZUVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDkgKzMyLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZG91YmxlIGN1cnJl
bnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgcmV0dXJuIGVjb3JlX3Rp
bWVfZ2V0KCk7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUg
bW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKIH0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRB
bmltYXRpb24oYm9vbCBjYQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB3ZSBhcmVuJ3Qg
YWxyZWFkeSBhbmltYXRpbmcsIHNldCBub3cgYXMgdGhlIGFuaW1hdGlvbiBzdGFydCB0aW1lLgot
ICAgIGNvbnN0IGRvdWJsZSB0aW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBjb25zdCBkb3VibGUg
dGltZSA9IG1vbm90b25pY1RpbWUoKTsKICAgICBpZiAoIW1fZGVzaXJlZEZyYW1lU3RhcnRUaW1l
KQogICAgICAgICBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSA9IHRpbWU7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0JKHJldmlz
aW9uIDU4NzMxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXll
ckNBLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgc3RhdGljIGNvbnN0IGZs
b2F0IGNBbmltYXRpb25BbG1vc3RaZXJvRAogLy8gV2ViQ29yZSB0aW1lLCB3aGljaCBpcyBzeXN0
ZW0gdGltZSAoVVRDKS4KIHN0YXRpYyBDRlRpbWVJbnRlcnZhbCBjdXJyZW50VGltZVRvTWVkaWFU
aW1lKGRvdWJsZSB0KQogewotICAgIHJldHVybiBDQUN1cnJlbnRNZWRpYVRpbWUoKSArIHQgLSBX
VEY6OmN1cnJlbnRUaW1lKCk7CisgICAgcmV0dXJuIENBQ3VycmVudE1lZGlhVGltZSgpICsgdCAt
IFdURjo6bW9ub3RvbmljVGltZSgpOwogfQogCiBzdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3Vy
cmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKIHsKLSAgICByZXR1cm4gV1RGOjpjdXJyZW50VGlt
ZSgpICsgdCAtIENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIHJldHVybiBXVEY6Om1vbm90b25p
Y1RpbWUoKSArIHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpAQCAtMjA2MSw3ICsyMDYxLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldFRy
YW5zZm9ybUFuaW1hdAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3VzcGVuZEFuaW1hdGlvbnMo
ZG91YmxlIHRpbWUpCiB7Ci0gICAgZG91YmxlIHQgPSBjdXJyZW50VGltZVRvTWVkaWFUaW1lKHRp
bWUgPyB0aW1lIDogY3VycmVudFRpbWUoKSk7CisgICAgZG91YmxlIHQgPSBjdXJyZW50VGltZVRv
TWVkaWFUaW1lKHRpbWUgPyB0aW1lIDogbW9ub3RvbmljVGltZSgpKTsKICAgICBbcHJpbWFyeUxh
eWVyKCkgc2V0U3BlZWQ6MF07CiAgICAgW3ByaW1hcnlMYXllcigpIHNldFRpbWVPZmZzZXQ6dF07
CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0xheWVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsNyArNjg0LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpub3RpZnlBbmltYXRpbwogewogICAgIC8vIFdlYkNv
cmUgbm90aWZpZXMgamF2YXNjcmlwdCB3aGVuIHRoZSBhbmltYXRpb24gc3RhcnRzCiAgICAgLy8g
aGVyZSB3ZSdyZSBsZXR0aW5nIGl0IGtub3cKLSAgICBtX2xheWVyLT5jbGllbnQoKS0+bm90aWZ5
QW5pbWF0aW9uU3RhcnRlZChtX2xheWVyLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgIG1fbGF5
ZXItPmNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKG1fbGF5ZXIsIG1vbm90b25pY1Rp
bWUoKSk7CiB9CiAKIEdyYXBoaWNzTGF5ZXJRdDo6R3JhcGhpY3NMYXllclF0KEdyYXBoaWNzTGF5
ZXJDbGllbnQqIGNsaWVudCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAko
cmV2aXNpb24gNTg3MzEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgsNyArMzA4
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhdXNlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fc3RhcnRlZFBsYXlpbmcgPSBmYWxzZTsKICNpZiBEUkFXX0ZSQU1FX1JBVEUKLSAgICBt
X3RpbWVTdG9wcGVkUGxheWluZyA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBtX3RpbWVTdG9w
cGVkUGxheWluZyA9IFdURjo6bW9ub3RvbmljVGltZSgpOwogI2VuZGlmCiAgICAgbV9xdE1vdmll
LT5wYXVzZSgpOwogfQpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
OjpkaWRFbmQoKQogCiAgICAgbV9zdGFydGVkUGxheWluZyA9IGZhbHNlOwogI2lmIERSQVdfRlJB
TUVfUkFURQotICAgIG1fdGltZVN0b3BwZWRQbGF5aW5nID0gV1RGOjpjdXJyZW50VGltZSgpOwor
ICAgIG1fdGltZVN0b3BwZWRQbGF5aW5nID0gV1RGOjptb25vdG9uaWNUaW1lKCk7CiAjZW5kaWYK
ICAgICB1cGRhdGVTdGF0ZXMoKTsKICAgICBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsKQEAgLTY3
NCw3ICs2NzQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGFpbnRDb21wbGV0ZWQoCiAK
ICNpZiBEUkFXX0ZSQU1FX1JBVEUKICAgICBpZiAobV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nID4g
MTApIHsKLSAgICAgICAgZG91YmxlIGludGVydmFsID0gIG1fc3RhcnRlZFBsYXlpbmcgPyBXVEY6
OmN1cnJlbnRUaW1lKCkgLSBtX3RpbWVTdGFydGVkUGxheWluZyA6IG1fdGltZVN0b3BwZWRQbGF5
aW5nIC0gbV90aW1lU3RhcnRlZFBsYXlpbmc7CisgICAgICAgIGRvdWJsZSBpbnRlcnZhbCA9ICBt
X3N0YXJ0ZWRQbGF5aW5nID8gV1RGOjptb25vdG9uaWNUaW1lKCkgLSBtX3RpbWVTdGFydGVkUGxh
eWluZyA6IG1fdGltZVN0b3BwZWRQbGF5aW5nIC0gbV90aW1lU3RhcnRlZFBsYXlpbmc7CiAgICAg
ICAgIGRvdWJsZSBmcmFtZVJhdGUgPSAobV9mcmFtZUNvdW50V2hpbGVQbGF5aW5nIC0gMSkgLyBp
bnRlcnZhbDsKICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgICAgIENHUmVjdCBkcmF3UmVjdCA9IHJlY3Q7CkBAIC03OTEsNyAr
NzkxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om1vdmllTmV3SW1hZ2VBdgogICAgICAg
ICAvLyBUbyBlbGltaW5hdGUgcHJlcm9sbCBjb3N0cyBmcm9tIG91ciBjYWxjdWxhdGlvbiwgb3Vy
IGZyYW1lIHJhdGUgY2FsY3VsYXRpb24gZXhjbHVkZXMKICAgICAgICAgLy8gdGhlIGZpcnN0IGZy
YW1lIGRyYXduIGFmdGVyIHBsYXliYWNrIHN0YXJ0cy4KICAgICAgICAgaWYgKG1fZnJhbWVDb3Vu
dFdoaWxlUGxheWluZyA9PSAxKQotICAgICAgICAgICAgbV90aW1lU3RhcnRlZFBsYXlpbmcgPSBX
VEY6OmN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBtX3RpbWVTdGFydGVkUGxheWluZyA9IFdU
Rjo6bW9ub3RvbmljVGltZSgpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXIuY3BwCShyZXZpc2lvbiA1ODczMSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgV0tDQUNGTGF5ZXI6OnByaW50VHJlZSgpIGNv
bnN0CiAgICAgLy8gUHJpbnQgaGVhZGluZyBpbmZvCiAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBi
b3VuZHMoKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuXG4qKiBSZW5kZXIgdHJlZSBhdCB0aW1l
ICVnIChib3VuZHMgJWcsICVnICVneCVnKSAqKlxuXG4iLCAKLSAgICAgICAgY3VycmVudFRpbWUo
KSwgcm9vdEJvdW5kcy5vcmlnaW4ueCwgcm9vdEJvdW5kcy5vcmlnaW4ueSwgcm9vdEJvdW5kcy5z
aXplLndpZHRoLCByb290Qm91bmRzLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgY3VycmVudFVUQ1Rp
bWUoKSwgcm9vdEJvdW5kcy5vcmlnaW4ueCwgcm9vdEJvdW5kcy5vcmlnaW4ueSwgcm9vdEJvdW5k
cy5zaXplLndpZHRoLCByb290Qm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAgIC8vIFByaW50IGxh
eWVyIHRyZWUgZnJvbSB0aGUgcm9vdAogICAgIHByaW50TGF5ZXIoMCk7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NyArNTMsNyBAQCB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUoZG91YmxlIGZpcmVUCiB7CiAg
ICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CiAKLSAgICBkb3VibGUgaW50ZXJ2
YWwgPSBmaXJlVGltZSAtIGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGludGVydmFsID0gZmly
ZVRpbWUgLSBtb25vdG9uaWNUaW1lKCk7CiAgICAgZ3VpbnQgaW50ZXJ2YWxJbk1TOwogICAgIGlm
IChpbnRlcnZhbCA8IDApCiAgICAgICAgIGludGVydmFsSW5NUyA9IDA7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2hhaWt1L1NoYXJlZFRpbWVySGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvU2hhcmVkVGltZXJIYWlrdS5jcHAJKHJldmlzaW9uIDU4NzMxKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9TaGFyZWRUaW1lckhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFNoYXJlZFRpbWVySGFpa3U6OnN0YXJ0KGRvdWJs
ZSBmaXJlCiB7CiAgICAgbV9zaG91bGRSdW4gPSB0cnVlOwogCi0gICAgZG91YmxlIGludGVydmFs
SW5TZWNvbmRzID0gZmlyZVRpbWUgLSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBpbnRlcnZh
bEluU2Vjb25kcyA9IGZpcmVUaW1lIC0gbW9ub3RvbmljVGltZSgpOwogICAgIGJpZ3RpbWVfdCBp
bnRlcnZhbEluTWljcm9TZWNvbmRzID0gaW50ZXJ2YWxJblNlY29uZHMgPCAwID8gMCA6IGludGVy
dmFsSW5TZWNvbmRzICogMTAwMDAwMDsKIAogICAgIEJNZXNzYWdlUnVubmVyOjpTdGFydFNlbmRp
bmcoTG9vcGVyKCksIG5ldyBCTWVzc2FnZShGSVJFX01FU1NBR0UpLCBpbnRlcnZhbEluTWljcm9T
ZWNvbmRzLCAxKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2
ZW50UXQuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZv
cm1Nb3VzZUV2ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQo
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCwgaW50IGNsaWNrQ291bnQpCiB7Ci0gICAg
bV90aW1lc3RhbXAgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgbV90aW1lc3RhbXAgPSBtb25v
dG9uaWNUaW1lKCk7CiAKICAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKCkpIHsKICAgICBjYXNlIFFF
dmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlRG91YmxlQ2xpY2s6CkBAIC03Myw3ICs3Myw3IEBAIFBs
YXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFEKIAogUGxhdGZvcm1Nb3VzZUV2
ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoUUlucHV0RXZlbnQqIGV2ZW50LCBpbnQgY2xpY2tDb3Vu
dCkKIHsKLSAgICBtX3RpbWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBtX3RpbWVz
dGFtcCA9IG1vbm90b25pY1RpbWUoKTsKIAogICAgIFFNb3VzZUV2ZW50KiBtZSA9IDA7CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFyZWRUaW1lclF0LmNwcAkocmV2aXNpb24gNTg3MzEpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MSw3ICs5MSw3IEBAIFNoYXJlZFRpbWVyUXQqIFNoYXJlZFRpbWVyUXQ6Omluc3QoKQogCiB2
b2lkIFNoYXJlZFRpbWVyUXQ6OnN0YXJ0KGRvdWJsZSBmaXJlVGltZSkKIHsKLSAgICBkb3VibGUg
aW50ZXJ2YWwgPSBmaXJlVGltZSAtIGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGludGVydmFs
ID0gZmlyZVRpbWUgLSBtb25vdG9uaWNUaW1lKCk7CiAgICAgdW5zaWduZWQgaW50IGludGVydmFs
SW5NUzsKICAgICBpZiAoaW50ZXJ2YWwgPCAwKQogICAgICAgICBpbnRlcnZhbEluTVMgPSAwOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2luY2UuY3BwCShyZXZp
c2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkVGltZXJXaW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIHNldFNoYXJlZFRpbWVy
RmlyZVRpbWUoZG91YmxlIGZpcmVUCiB7CiAgICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbik7CiAKLSAgICBkb3VibGUgaW50ZXJ2YWwgPSAoZmlyZVRpbWUgLSBjdXJyZW50VGltZSgp
KSAqIDEwMDAuOworICAgIGRvdWJsZSBpbnRlcnZhbCA9IChmaXJlVGltZSAtIG1vbm90b25pY1Rp
bWUoKSkgKiAxMDAwLjsKICAgICB1bnNpZ25lZCBpbnRlcnZhbEluTVMgPSBpbnRlcnZhbCA8IFVT
RVJfVElNRVJfTUlOSU1VTQogICAgICAgICA/IFVTRVJfVElNRVJfTUlOSU1VTQogICAgICAgICA6
IGludGVydmFsID4gVVNFUl9USU1FUl9NQVhJTVVNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4
L01vdXNlRXZlbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9Nb3Vz
ZUV2ZW50V3guY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvTW91
c2VFdmVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBQbGF0Zm9ybU1v
dXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChjCiAgICAgZWxzZQogICAgICAgICBtX2NsaWNr
Q291bnQgPSBjbGlja0NvdW50OwogCi0gICAgbV90aW1lc3RhbXAgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CisgICAgbV90aW1lc3RhbXAgPSBXVEY6Om1vbm90b25pY1RpbWUoKTsKIH0KIAogfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS93eC9TaGFyZWRUaW1lcld4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3d4L1NoYXJlZFRpbWVyV3guY3BwCShyZXZpc2lvbiA1ODczMSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vd3gvU2hhcmVkVGltZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVUaW1lKGRvdWJsZSBmaXJlVAog
ewogICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwogICAgIAotICAgIGRvdWJs
ZSBpbnRlcnZhbCA9IGZpcmVUaW1lIC0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgaW50ZXJ2
YWwgPSBmaXJlVGltZSAtIG1vbm90b25pY1RpbWUoKTsKICAgICAKICAgICBpZiAoIXdrVGltZXIp
CiAgICAgICAgIHdrVGltZXIgPSBuZXcgV2ViS2l0VGltZXIoKTsKSW5kZXg6IFdlYkNvcmUvcGx1
Z2lucy93aW4vUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmNwcAkocmV2aXNpb24g
NTg3MzEpCisrKyBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUGx1Z2luTWVzc2FnZVRo
cm90dGxlcldpbjo6YXBwZW5kTWUKIAogICAgIC8vIElmIGl0IGhhcyBiZWVuIG1vcmUgdGhhbiBN
ZXNzYWdlRGlyZWN0UHJvY2Vzc2luZ0ludGVydmFsIGJldHdlZW4gdGhyb3R0bGVkIG1lc3NhZ2Vz
LAogICAgIC8vIGdvIGFoZWFkIGFuZCBwcm9jZXNzIGEgbWVzc2FnZSBkaXJlY3RseS4KLSAgICBk
b3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGN1cnJl
bnRUaW1lID0gV1RGOjptb25vdG9uaWNUaW1lKCk7CiAgICAgaWYgKGN1cnJlbnRUaW1lIC0gbV9s
YXN0TWVzc2FnZVRpbWUgPiBNZXNzYWdlRGlyZWN0UHJvY2Vzc2luZ0ludGVydmFsKSB7CiAgICAg
ICAgIHByb2Nlc3NRdWV1ZWRNZXNzYWdlKCk7CiAgICAgICAgIG1fbGFzdE1lc3NhZ2VUaW1lID0g
Y3VycmVudFRpbWU7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgUmVu
ZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyOjpzaG91bGQKICAgICAvLyBJZiB0aGVyZSBpcyBubyBk
YXRhIHlldCwgd2Ugd2lsbCBwYWludCB0aGUgZmlyc3Qgc2NhbGUgYXQgaGlnaCBxdWFsaXR5IGFu
ZCByZWNvcmQgdGhlIHBhaW50IHRpbWUgaW4gY2FzZSBhIHNlY29uZCBzY2FsZSBoYXBwZW5zCiAg
ICAgLy8gdmVyeSBzb29uLgogICAgIGlmICghZGF0YSkgewotICAgICAgICBkYXRhID0gbmV3IFJl
bmRlckJveE1vZGVsU2NhbGVEYXRhKG9iamVjdCwgc2l6ZSwgY3VycmVudFRyYW5zZm9ybSwgY3Vy
cmVudFRpbWUoKSwgZmFsc2UpOworICAgICAgICBkYXRhID0gbmV3IFJlbmRlckJveE1vZGVsU2Nh
bGVEYXRhKG9iamVjdCwgc2l6ZSwgY3VycmVudFRyYW5zZm9ybSwgbW9ub3RvbmljVGltZSgpLCBm
YWxzZSk7CiAgICAgICAgIGlmICghZ0JveE1vZGVsT2JqZWN0cykKICAgICAgICAgICAgIGdCb3hN
b2RlbE9iamVjdHMgPSBuZXcgSGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlckJv
eE1vZGVsU2NhbGVEYXRhKj47CiAgICAgICAgIGdCb3hNb2RlbE9iamVjdHMtPnNldChvYmplY3Qs
IGRhdGEpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxTY2FsZU9ic2Vy
dmVyOjpzaG91bGQKIAogICAgIC8vIFdlIGhhdmUgZGF0YSBhbmQgb3VyIHNpemUganVzdCBjaGFu
Z2VkLiAgSWYgdGhpcyBjaGFuZ2UgaGFwcGVuZWQgcXVpY2tseSwgZ28gaW50byBsb3cgcXVhbGl0
eSBtb2RlIGFuZCB0aGVuIHNldCBhIHJlcGFpbnQKICAgICAvLyB0aW1lciB0byBwYWludCBpbiBo
aWdoIHF1YWxpdHkgbW9kZS4gIE90aGVyd2lzZSBpdCBpcyBvayB0byBqdXN0IHBhaW50IGluIGhp
Z2ggcXVhbGl0eSBtb2RlLgotICAgIGRvdWJsZSBuZXdUaW1lID0gY3VycmVudFRpbWUoKTsKKyAg
ICBkb3VibGUgbmV3VGltZSA9IG1vbm90b25pY1RpbWUoKTsKICAgICBkYXRhLT5zZXRVc2VMb3dR
dWFsaXR5U2NhbGUobmV3VGltZSAtIGRhdGEtPmxhc3RQYWludFRpbWUoKSA8IGNMb3dRdWFsaXR5
VGltZVRocmVzaG9sZCk7CiAgICAgZGF0YS0+c2V0TGFzdFBhaW50VGltZShuZXdUaW1lKTsKICAg
ICBkYXRhLT5zZXRUcmFuc2Zvcm0oY3VycmVudFRyYW5zZm9ybSk7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgUmVu
ZGVySW1hZ2VTY2FsZU9ic2VydmVyOjpzaG91bGRJbWEKICAgICAvLyBJZiB0aGVyZSBpcyBubyBk
YXRhIHlldCwgd2Ugd2lsbCBwYWludCB0aGUgZmlyc3Qgc2NhbGUgYXQgaGlnaCBxdWFsaXR5IGFu
ZCByZWNvcmQgdGhlIHBhaW50IHRpbWUgaW4gY2FzZSBhIHNlY29uZCBzY2FsZSBoYXBwZW5zCiAg
ICAgLy8gdmVyeSBzb29uLgogICAgIGlmICghZGF0YSkgewotICAgICAgICBkYXRhID0gbmV3IFJl
bmRlckltYWdlU2NhbGVEYXRhKGltYWdlLCBzaXplLCBjdXJyZW50VGltZSgpLCBmYWxzZSk7Cisg
ICAgICAgIGRhdGEgPSBuZXcgUmVuZGVySW1hZ2VTY2FsZURhdGEoaW1hZ2UsIHNpemUsIG1vbm90
b25pY1RpbWUoKSwgZmFsc2UpOwogICAgICAgICBpZiAoIWdJbWFnZXMpCiAgICAgICAgICAgICBn
SW1hZ2VzID0gbmV3IEhhc2hNYXA8UmVuZGVySW1hZ2UqLCBSZW5kZXJJbWFnZVNjYWxlRGF0YSo+
OwogICAgICAgICBnSW1hZ2VzLT5zZXQoaW1hZ2UsIGRhdGEpOwpAQCAtMTY0LDcgKzE2NCw3IEBA
IGJvb2wgUmVuZGVySW1hZ2VTY2FsZU9ic2VydmVyOjpzaG91bGRJbWEKIAogICAgIC8vIFdlIGhh
dmUgZGF0YSBhbmQgb3VyIHNpemUganVzdCBjaGFuZ2VkLiAgSWYgdGhpcyBjaGFuZ2UgaGFwcGVu
ZWQgcXVpY2tseSwgZ28gaW50byBsb3cgcXVhbGl0eSBtb2RlIGFuZCB0aGVuIHNldCBhIHJlcGFp
bnQKICAgICAvLyB0aW1lciB0byBwYWludCBpbiBoaWdoIHF1YWxpdHkgbW9kZS4gIE90aGVyd2lz
ZSBpdCBpcyBvayB0byBqdXN0IHBhaW50IGluIGhpZ2ggcXVhbGl0eSBtb2RlLgotICAgIGRvdWJs
ZSBuZXdUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbmV3VGltZSA9IG1vbm90b25p
Y1RpbWUoKTsKICAgICBkYXRhLT5zZXRVc2VMb3dRdWFsaXR5U2NhbGUobmV3VGltZSAtIGRhdGEt
PnRpbWUoKSA8IGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7CiAgICAgZGF0YS0+c2V0VGltZShu
ZXdUaW1lKTsKICAgICBkYXRhLT5zZXRTaXplKHNpemUpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiA1ODczMSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNSw3ICsyMDUsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9z
CiAjaWYgUFJPRklMRV9MQVlFUl9SRUJVSUxECiAgICAgKyttX3Jvb3RMYXllclVwZGF0ZUNvdW50
OwogICAgIAotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAg
ZG91YmxlIHN0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljVGltZSgpOwogI2VuZGlmICAgICAgICAK
IAogICAgIGlmIChjaGVja0ZvckhpZXJhcmNoeVVwZGF0ZSkgewpAQCAtMjQzLDcgKzI0Myw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3MKICAgICB9CiAgICAgCiAj
aWYgUFJPRklMRV9MQVlFUl9SRUJVSUxECi0gICAgZG91YmxlIGVuZFRpbWUgPSBXVEY6OmN1cnJl
bnRUaW1lKCk7CisgICAgZG91YmxlIGVuZFRpbWUgPSBXVEY6Om1vbm90b25pY1RpbWUoKTsKICAg
ICBpZiAodXBkYXRlUm9vdCA9PSByb290UmVuZGVyTGF5ZXIoKSkKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJVcGRhdGUgJWQ6IGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyBmb3IgdGhl
IHdvcmxkIHRvb2sgJWZtc1xuIiwKICAgICAgICAgICAgICAgICAgICAgbV9yb290TGF5ZXJVcGRh
dGVDb3VudCwgMTAwMC4wICogKGVuZFRpbWUgLSBzdGFydFRpbWUpKTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQcm9ncmVzcy5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyUHJvZ3Jlc3M6OgogCiBkb3VibGUgUmVu
ZGVyUHJvZ3Jlc3M6OmFuaW1hdGlvblByb2dyZXNzKCkKIHsKLSAgICByZXR1cm4gbV9hbmltYXRp
bmcgPyAoZm1vZCgoY3VycmVudFRpbWUoKSAtIG1fYW5pbWF0aW9uU3RhcnRUaW1lKSwgbV9hbmlt
YXRpb25EdXJhdGlvbikgLyBtX2FuaW1hdGlvbkR1cmF0aW9uKSA6IDA7CisgICAgcmV0dXJuIG1f
YW5pbWF0aW5nID8gKGZtb2QoKG1vbm90b25pY1RpbWUoKSAtIG1fYW5pbWF0aW9uU3RhcnRUaW1l
KSwgbV9hbmltYXRpb25EdXJhdGlvbikgLyBtX2FuaW1hdGlvbkR1cmF0aW9uKSA6IDA7CiB9CiAK
IHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8UmVuZGVyUHJv
Z3Jlc3M+KikKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjp1cGRhdGVB
bmltYXRpb25TdGF0CiAKICAgICBtX2FuaW1hdGluZyA9IGFuaW1hdGluZzsKICAgICBpZiAobV9h
bmltYXRpbmcpIHsKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWUgPSBjdXJyZW50VGltZSgp
OworICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZSA9IG1vbm90b25pY1RpbWUoKTsKICAgICAg
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QobV9hbmltYXRpb25SZXBlYXRJbnRlcnZh
bCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwpJbmRleDog
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCShyZXZpc2lvbiA1
ODczMSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgU01JTFRpbWUgU01JTFRpbWVDb250YWluZXI6
OmVsYXBzZWQoKSBjbwogewogICAgIGlmICghbV9iZWdpblRpbWUpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBjdXJyZW50VGltZSgpIC0gbV9iZWdpblRpbWUgLSBtX2FjY3VtdWxhdGVk
UGF1c2VUaW1lOworICAgIHJldHVybiBtb25vdG9uaWNUaW1lKCkgLSBtX2JlZ2luVGltZSAtIG1f
YWNjdW11bGF0ZWRQYXVzZVRpbWU7CiB9CiAgICAgCiBib29sIFNNSUxUaW1lQ29udGFpbmVyOjpp
c0FjdGl2ZSgpIGNvbnN0CkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgU01JTFRpbWVDb250YWluZXI6
OmlzUGF1c2VkKCkgY29uc3QKIHZvaWQgU01JTFRpbWVDb250YWluZXI6OmJlZ2luKCkKIHsKICAg
ICBBU1NFUlQoIW1fYmVnaW5UaW1lKTsKLSAgICBtX2JlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV9iZWdpblRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgdXBkYXRlQW5pbWF0aW9u
cygwKTsKIH0KIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnBh
dXNlKCkKICAgICBpZiAoIW1fYmVnaW5UaW1lKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KCFpc1BhdXNlZCgpKTsKLSAgICBtX3BhdXNlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9w
YXVzZVRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgbV90aW1lci5zdG9wKCk7CiB9CiAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpyZXN1bWUoKQogICAgIGlm
ICghbV9iZWdpblRpbWUpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7
Ci0gICAgbV9hY2N1bXVsYXRlZFBhdXNlVGltZSArPSBjdXJyZW50VGltZSgpIC0gbV9wYXVzZVRp
bWU7CisgICAgbV9hY2N1bXVsYXRlZFBhdXNlVGltZSArPSBtb25vdG9uaWNUaW1lKCkgLSBtX3Bh
dXNlVGltZTsKICAgICBtX3BhdXNlVGltZSA9IDA7CiAgICAgc3RhcnRUaW1lcigwKTsKIH0KSW5k
ZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1ODczNCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDUtMDMgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUu
Y29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeCBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQzCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorCiAyMDEwLTA1LTAzICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9u
IEhvbmV5Y3V0dC4KSW5kZXg6IFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDU4NzMxKQorKysgV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RkOjphdXRvX3B0cjxBcmd1
bWVudERlY29kZXI+IENvbm5lY3RpbwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGRvdWJs
ZSBhYnNvbHV0ZVRpbWUgPSBjdXJyZW50VGltZSgpICsgdGltZW91dDsKKyAgICBkb3VibGUgYWJz
b2x1dGVUaW1lID0gbW9ub3RvbmljVGltZSgpICsgdGltZW91dDsKICAgICAKICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVpbnQ2NF90PiBtZXNzYWdlQW5kRGVzdGluYXRpb24oc3RkOjptYWtlX3Bh
aXIobWVzc2FnZUlELnRvSW50KCksIGRlc3RpbmF0aW9uSUQpKTsKICAgICAKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTg3MzQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDUtMDMgIExlbyBZYW5nICA8bGVvLnlh
bmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NzQzCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMpOgorCiAyMDEwLTA1LTAz
ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJ
KHJldmlzaW9uIDU4NzMxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUyLDcgKzE0NTIsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6
c2NvcGVTdHJpbmdNYXRjaGVzKGluCiAKICAgICBpbnQgbWF0Y2hDb3VudCA9IDA7CiAgICAgYm9v
bCB0aW1lZE91dCA9IGZhbHNlOwotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgp
OworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBtb25vdG9uaWNUaW1lKCk7CiAgICAgZG8gewogICAg
ICAgICAvLyBGaW5kIG5leHQgb2NjdXJyZW5jZSBvZiB0aGUgc2VhcmNoIHN0cmluZy4KICAgICAg
ICAgLy8gRklYTUU6IChodHRwOi8vYi8xMDg4MjQ1KSBUaGlzIFdlYktpdCBvcGVyYXRpb24gbWF5
IHJ1biBmb3IgbG9uZ2VyCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6
c2NvcGVTdHJpbmdNYXRjaGVzKGluCiAgICAgICAgIH0KIAogICAgICAgICBtX3Jlc3VtZVNjb3Bp
bmdGcm9tUmFuZ2UgPSByZXN1bHRSYW5nZTsKLSAgICAgICAgdGltZWRPdXQgPSAoY3VycmVudFRp
bWUoKSAtIHN0YXJ0VGltZSkgPj0gbWF4U2NvcGluZ0R1cmF0aW9uOworICAgICAgICB0aW1lZE91
dCA9IChtb25vdG9uaWNUaW1lKCkgLSBzdGFydFRpbWUpID49IG1heFNjb3BpbmdEdXJhdGlvbjsK
ICAgICB9IHdoaWxlICghdGltZWRPdXQpOwogCiAgICAgLy8gUmVtZW1iZXIgd2hhdCB3ZSBzZWFy
Y2ggZm9yIGxhc3QgdGltZSwgc28gd2UgY2FuIHNraXAgc2VhcmNoaW5nIGlmIG1vcmUKSW5kZXg6
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODczNCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDUtMDMgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2ht
b2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3
NzQzCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW06CisK
IDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0JKHJldmlzaW9uIDU4NzMxKQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgKyAodm9pZClzZXRQb3NpdGlvbjooZG91YmxlKWxhdGl0dWRl
OihkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlLCAwLjAsICAvLyBhbHRpdHVkZUFjY3VyYWN5CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDAuMCwgIC8v
IGhlYWRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgMC4wKTsgIC8vIHNwZWVkCi0gICAgUmVmUHRyPEdlb3Bvc2l0aW9u
PiBwb3NpdGlvbiA9IEdlb3Bvc2l0aW9uOjpjcmVhdGUoY29vcmRpbmF0ZXMucmVsZWFzZSgpLCBj
dXJyZW50VGltZSgpICogMTAwMC4wKTsKKyAgICBSZWZQdHI8R2VvcG9zaXRpb24+IHBvc2l0aW9u
ID0gR2VvcG9zaXRpb246OmNyZWF0ZShjb29yZGluYXRlcy5yZWxlYXNlKCksIG1vbm90b25pY1Rp
bWUoKSAqIDEwMDAuMCk7CiAgICAgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0UG9zaXRpb24o
cG9zaXRpb24ucmVsZWFzZSgpKTsKICNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4NzM0KQor
KysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMC0wNS0wMyAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGJ1ZyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMKKworICAgICAgICAqIFdl
YkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6ZGlkRmluaXNoKToKKwogMjAxMC0wNS0wMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJL
aXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAJKHJldmlzaW9uIDU4NzMxKQorKysgV2ViS2l0L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnUKIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFN0
YXJ0KCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9zdGFydFRpbWUgPSBtX2RhdGFUaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICBtX3N0YXJ0VGltZSA9IG1fZGF0YVRpbWUgPSBtb25vdG9uaWNU
aW1lKCk7CiAgICAgbV9yZWNlaXZlZCA9IDA7CiAgICAgTE9HKERvd25sb2FkLCAiRE9XTkxPQUQg
LSBTdGFydGVkICVwIGF0ICUuM2Ygc2Vjb25kcyIsIHRoaXMsIG1fc3RhcnRUaW1lKTsKICNlbmRp
ZgpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKENG
SW5kZXgKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9yZWNlaXZlZCArPSBsZW5ndGg7Ci0gICAg
ZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50ID0gbW9u
b3RvbmljVGltZSgpOwogICAgIGlmIChjdXJyZW50IC0gbV9kYXRhVGltZSA+IDIuMCkKICAgICAg
ICAgTE9HKERvd25sb2FkLCAiRE9XTkxPQUQgLSAlcCBoYW5nZWQgZm9yICUuM2Ygc2Vjb25kcyAt
IFJlY2VpdmVkICVpIGJ5dGVzIGZvciBhIHRvdGFsIG9mICVpIiwgdGhpcywgY3VycmVudCAtIG1f
ZGF0YVRpbWUsIGxlbmd0aCwgbV9yZWNlaXZlZCk7CiAgICAgbV9kYXRhVGltZSA9IGN1cnJlbnQ7
CkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkQ3JlYXRlRGVzdGluYXRp
b24oQwogdm9pZCBXZWJEb3dubG9hZDo6ZGlkRmluaXNoKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgTE9HKERvd25sb2FkLCAiRE9XTkxPQUQgLSBGaW5pc2hlZCAlcCBhZnRlciAlaSBieXRlcyBh
bmQgJS4zZiBzZWNvbmRzIiwgdGhpcywgbV9yZWNlaXZlZCwgY3VycmVudFRpbWUoKSAtIG1fc3Rh
cnRUaW1lKTsKKyAgICBMT0coRG93bmxvYWQsICJET1dOTE9BRCAtIEZpbmlzaGVkICVwIGFmdGVy
ICVpIGJ5dGVzIGFuZCAlLjNmIHNlY29uZHMiLCB0aGlzLCBtX3JlY2VpdmVkLCBtb25vdG9uaWNU
aW1lKCkgLSBtX3N0YXJ0VGltZSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVCghbV9idW5kbGVQYXRo
LmlzRW1wdHkoKSAmJiAhbV9kZXN0aW5hdGlvbi5pc0VtcHR5KCkpOwo=
</data>
<flag name="review"
          id="39083"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55193</attachid>
            <date>2010-05-05 19:12:47 -0700</date>
            <delta_ts>2010-05-05 22:08:47 -0700</delta_ts>
            <desc>A separated patch</desc>
            <filename>currentTime-JavaScriptCore.patch</filename>
            <type>text/plain</type>
            <size>15193</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4ODU1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAtMDUtMDUgIExlbyBZYW5n
ICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpcnN0IHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMKKworICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChTdG9wV2F0Y2g6OnN0YXJ0KToKKyAgICAgICAgKFN0b3BXYXRjaDo6c3RvcCk6CisgICAg
ICAgICogcGNyZS9wY3JlX2V4ZWMuY3BwOgorICAgICAgICAoSGlzdG9ncmFtVGltZUxvZ2dlcjo6
SGlzdG9ncmFtVGltZUxvZ2dlcik6CisgICAgICAgIChIaXN0b2dyYW1UaW1lTG9nZ2VyOjp+SGlz
dG9ncmFtVGltZUxvZ2dlcik6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRDb3VudCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHA6CisgICAgICAgIChKU0M6OmdldENQVVRpbWUp
OgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5jcHA6CisgICAgICAgIChXVEY6OmN1cnJlbnRV
VENUaW1lKToKKyAgICAgICAgKFdURjo6bW9ub3RvbmljVGltZSk6CisgICAgICAgICogd3RmL0N1
cnJlbnRUaW1lLmg6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdURjo6
Y3VycmVudFVUQ1RpbWVNUyk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lTVMpOgorICAgICAg
ICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OmNhbGN1bGF0ZVVUQ09mZnNldCk6
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OmpzQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hG
dW5jdGlvbnNGcm9tTWFpblRocmVhZCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RG
OjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KToKKyAgICAg
ICAgKiB3dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRp
dGlvbjo6dGltZWRXYWl0KToKKyAgICAgICAgKiB3dGYvcXQvVGhyZWFkaW5nUXQuY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisKIDIwMTAtMDUtMDUgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEphdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHBy
aXZhdGU6CiAKIHZvaWQgU3RvcFdhdGNoOjpzdGFydCgpCiB7Ci0gICAgbV9zdGFydFRpbWUgPSBj
dXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZSgpOwogfQogCiB2
b2lkIFN0b3BXYXRjaDo6c3RvcCgpCiB7Ci0gICAgbV9zdG9wVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV9zdG9wVGltZSA9IG1vbm90b25pY1RpbWUoKTsKIH0KIAogbG9uZyBTdG9wV2F0Y2g6
OmdldEVsYXBzZWRNUygpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCShyZXZpc2lv
biA1ODc0NSkKKysrIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2NCwxNCArMjE2NCwxNCBAQCB2b2lkIEhpc3RvZ3JhbTo6YWRkKGNvbnN0IEpT
UmVnRXhwKiByZSwgCiAKIEhpc3RvZ3JhbVRpbWVMb2dnZXI6Okhpc3RvZ3JhbVRpbWVMb2dnZXIo
Y29uc3QgSlNSZWdFeHAqIHJlKQogICAgIDogbV9yZShyZSkKLSAgICAsIG1fc3RhcnRUaW1lKGN1
cnJlbnRUaW1lTVMoKSkKKyAgICAsIG1fc3RhcnRUaW1lKG1vbm90b25pY1RpbWUoKSAqIDEwMDAu
MCkKIHsKIH0KIAogSGlzdG9ncmFtVGltZUxvZ2dlcjo6fkhpc3RvZ3JhbVRpbWVMb2dnZXIoKQog
ewogICAgIHN0YXRpYyBIaXN0b2dyYW0gaGlzdG9ncmFtOwotICAgIGhpc3RvZ3JhbS5hZGQobV9y
ZSwgY3VycmVudFRpbWVNUygpIC0gbV9zdGFydFRpbWUpOworICAgIGhpc3RvZ3JhbS5hZGQobV9y
ZSwgbW9ub3RvbmljVGltZSgpICogMTAwMC4wIC0gbV9zdGFydFRpbWUpOwogfQogCiAjZW5kaWYK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDU4
NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBkb3VibGUgZ2V0Q291bnQoKQogICAgIFF1
ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjb3VudGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihjb3VudGVyLlF1YWRQYXJ0KSAvIGZyZXF1ZW5jeS5RdWFkUGFydDsKICNlbHNlCi0g
ICAgcmV0dXJuIGN1cnJlbnRUaW1lTVMoKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZSgpICog
MTAwMC4wOwogI2VuZGlmCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwgZmlyc3RTdHJpbmdpZmllclRv
TWFyaygwKQogICAgICwgbWFya1N0YWNrKGpzQXJyYXlWUHRyKQogICAgICwgY2FjaGVkVVRDT2Zm
c2V0KE5hTikKLSAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VGltZSgp
KSkKKyAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VVRDVGltZSgpKSkK
ICAgICAsIG1heFJlZW50cnlEZXB0aCh0aHJlYWRTdGFja1R5cGUgPT0gVGhyZWFkU3RhY2tUeXBl
U21hbGwgPyBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCA6IE1heExhcmdlVGhyZWFkUmVlbnRy
eURlcHRoKQogI2lmbmRlZiBOREVCVUcKICAgICAsIGV4Y2x1c2l2ZVRocmVhZCgwKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDU4NzQ1
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBnZXRDUFVUaW1l
KCkKICAgICByZXR1cm4gR0VUVVBUSU1FTVMoKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZXR1cm4gdGhlIHRpbWUgdGhlIGN1cnJlbnQgdGhyZWFkIGhhcyBzcGVudCBleGVjdXRp
bmcuCi0gICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKiAxMDAwOworICAgIHJldHVybiBtb25vdG9u
aWNUaW1lKCkgKiAxMDAwOwogI2VuZGlmCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9D
dXJyZW50VGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRU
aW1lLmNwcAkocmV2aXNpb24gNTg3NDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjEsNiArNjIsOSBAQCBleHRlcm4gIkMi
IHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICp0KTsKICNpbmNsdWRlIDxBRUVTdGRMaWIuaD4KICNl
bHNlCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdGltZXMuaD4KKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTU2LDcgKzE2MCw3IEBAIHN0YXRpYyBib29sIHFw
Y0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWlsYWJsZTsKIH0KIAotZG91YmxlIGN1cnJlbnRU
aW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgLy8gVXNlIGEgY29tYmluYXRp
b24gb2YgZnRpbWUgYW5kIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyLgogICAgIC8vIGZ0aW1lIHJl
dHVybnMgdGhlIGluZm9ybWF0aW9uIHdlIHdhbnQsIGJ1dCBkb2Vzbid0IGhhdmUgc3VmZmljaWVu
dCByZXNvbHV0aW9uLgpAQCAtMjAwLDYgKzIwNCwxMiBAQCBkb3VibGUgY3VycmVudFRpbWUoKQog
ICAgIHJldHVybiB1dGMgLyAxMDAwLjA7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29y
cmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENU
aW1lKCk7Cit9CisKICNlbHNlCiAKIHN0YXRpYyBkb3VibGUgY3VycmVudFN5c3RlbVRpbWUoKQpA
QCAtMjI1LDcgKzIzNSw3IEBAIHN0YXRpYyBkb3VibGUgY3VycmVudFN5c3RlbVRpbWUoKQogICAg
IHJldHVybiB0LlF1YWRQYXJ0ICogMC4wMDAwMDAxIC0gMTE2NDQ0NzM2MDAuMDsKIH0KIAotZG91
YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgc3RhdGlj
IGJvb2wgaW5pdCA9IGZhbHNlOwogICAgIHN0YXRpYyBkb3VibGUgbGFzdFRpbWU7CkBAIC0yNDcs
NiArMjU3LDEyIEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAgICAgcmV0dXJuIHRpbWVOb3c7CiB9
CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGlt
ZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbmRpZiAvLyBVU0Uo
UVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUikKIAogI2VsaWYgUExBVEZPUk0oR1RLKQpAQCAtMjU1
LDIxICsyNzEsMzMgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIC8vIGJldHRlciBhY2N1cmFjeSBj
b21wYXJlZCB3aXRoIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgZ19nZXRfY3VycmVudF90aW1l
OgogLy8gKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoL3A/aGw9ZW4jSEhuTlJqa3Mx
dDAvZ2xpYi0yLjUuMi9nbGliL2dtYWluLmMmcT1nX2dldF9jdXJyZW50X3RpbWUpLgogLy8gTm9u
LVdpbmRvd3MgR1RLIGJ1aWxkcyBjb3VsZCB1c2UgZ2V0dGltZW9mZGF5KCkgZGlyZWN0bHkgYnV0
IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeSBsZXRzIHVzZSBHVEsgZnVuY3Rpb24uCi1kb3Vi
bGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1cnJlbnRVVENUaW1lKCkKIHsKICAgICBHVGltZVZh
bCBub3c7CiAgICAgZ19nZXRfY3VycmVudF90aW1lKCZub3cpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxkb3VibGU+KG5vdy50dl9zZWMpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihub3cudHZfdXNl
YyAvIDEwMDAwMDAuMCk7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citk
b3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9
CisKICNlbGlmIFBMQVRGT1JNKFdYKQogCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1
cnJlbnRVVENUaW1lKCkKIHsKICAgICB3eERhdGVUaW1lIG5vdyA9IHd4RGF0ZVRpbWU6OlVOb3co
KTsKICAgICByZXR1cm4gKGRvdWJsZSlub3cuR2V0VGlja3MoKSArIChkb3VibGUpKG5vdy5HZXRN
aWxsaXNlY29uZCgpIC8gMTAwMC4wKTsKIH0KIAorLy8gRklYTUU6IGltcGxlbWVudCBpdCBjb3Jy
ZWN0bHkKK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1Rp
bWUoKTsKK30KKwogI2VsaWYgUExBVEZPUk0oQlJFV01QKQogCiAvLyBHRVRVVENTRUNPTkRTIHJl
dHVybnMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDE5ODAvMDEvMDYgMDA6MDA6MDAgVVRD
LApAQCAtMjc3LDIyICszMDUsNDUgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIC8vIG9jY3VycmVu
Y2Ugb2YgMDA6MDA6MDAgbG9jYWwgdGltZS4KIC8vIFdlIGNhbiBjb21iaW5lIEdFVFVUQ1NFQ09O
RFMgYW5kIEdFVFRJTUVNUyB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMK
IC8vIHNpbmNlIDE5NzAvMDEvMDEgMDA6MDA6MDAgVVRDLgotZG91YmxlIGN1cnJlbnRUaW1lKCkK
K2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgLy8gZGlmZlNlY29uZHMgaXMgdGhlIG51
bWJlciBvZiBzZWNvbmRzIGZyb20gMTk3MC8wMS8wMSB0byAxOTgwLzAxLzA2CiAgICAgY29uc3Qg
dW5zaWduZWQgZGlmZlNlY29uZHMgPSAzMTU5NjQ4MDA7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGRvdWJsZT4oZGlmZlNlY29uZHMgKyBHRVRVVENTRUNPTkRTKCkgKyAoKEdFVFRJTUVNUygpICUg
MTAwMCkgLyBtc1BlclNlY29uZCkpOwogfQogCisvLyBGSVhNRTogaW1wbGVtZW50IGl0IGNvcnJl
Y3RseQorZG91YmxlIG1vbm90b25pY1RpbWUoKQoreworICAgIHJldHVybiBjdXJyZW50VVRDVGlt
ZSgpOworfQogI2Vsc2UKIAotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRD
VGltZSgpCiB7CiAgICAgc3RydWN0IHRpbWV2YWwgbm93OwogICAgIGdldHRpbWVvZmRheSgmbm93
LCAwKTsKICAgICByZXR1cm4gbm93LnR2X3NlYyArIG5vdy50dl91c2VjIC8gMTAwMDAwMC4wOwog
fQogCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgLy8gdG1zVW51c2VkIGlzIGp1c3Qg
Zm9yIHN5c3RlbSB3aGljaCBkb2VzIGFjY2VwdCB0aW1lcygwKSBjYWxsLgorICAgIHN0YXRpYyBz
dHJ1Y3QgdG1zIHRtc1VudXNlZDsKKyAgICBzdGF0aWMgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJl
bnRVVENUaW1lKCk7CisgICAgc3RhdGljIGNsb2NrX3Qgc3RhcnRUaWNrcyA9IHRpbWVzKCZ0bXNV
bnVzZWQpOworICAgIHN0YXRpYyBsb25nIGludCB0aWNrc1BlclNlY29uZCA9IHN5c2NvbmYoX1ND
X0NMS19UQ0spOworCisgICAgY2xvY2tfdCBjdXJyZW50VGlja3MgPSB0aW1lcygmdG1zVW51c2Vk
KTsKKworICAgIC8vIE92ZXJmbG93LCBqdXN0IGZhbGxiYWNrIHRvIGN1cnJlbnRVVENUaW1lKCkK
KyAgICBpZiAoVU5MSUtFTFkoc3RhcnRUaWNrcyA9PSBzdGF0aWNfY2FzdDxjbG9ja190PigtMSkg
fHwgY3VycmVudFRpY2tzID09IHN0YXRpY19jYXN0PGNsb2NrX3Q+KC0xKSkpCisgICAgICAgIHJl
dHVybiBjdXJyZW50VVRDVGltZSgpOworCisgICAgQVNTRVJUKHRpY2tzUGVyU2Vjb25kID4gMCk7
CisgICAgcmV0dXJuIHN0YXJ0VGltZSArIHN0YXRpY19jYXN0PGRvdWJsZT4oY3VycmVudFRpY2tz
IC0gc3RhcnRUaWNrcykgLyB0aWNrc1BlclNlY29uZDsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHJldmlzaW9uIDU4NzQ1
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDE0ICszOSwyMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAg
ICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFs
bHkgYXMgZ29vZCBvciBiZXR0ZXIgCiAgICAgLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotICAgIGRv
dWJsZSBjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VVRDVGltZSgpOworICAgIGlu
bGluZSBkb3VibGUgY3VycmVudFRpbWUoKSB7IHJldHVybiBjdXJyZW50VVRDVGltZSgpOyB9CiAK
ICAgICAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCi0gICAgaW5saW5lIGRvdWJsZSBj
dXJyZW50VGltZU1TKCkKKyAgICBpbmxpbmUgZG91YmxlIGN1cnJlbnRVVENUaW1lTVMoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKiAxMDAwLjA7IAorICAgICAgICByZXR1
cm4gY3VycmVudFVUQ1RpbWUoKSAqIDEwMDAuMDsgCiAgICAgfQogCisgICAgaW5saW5lIGRvdWJs
ZSBjdXJyZW50VGltZU1TKCkgeyByZXR1cm4gY3VycmVudFVUQ1RpbWVNUygpOyB9CisKKyAgICAv
LyBKdXN0IGxpa2UgY3VycmVudFVUQ1RpbWUsIGJ1dCB0aGUgdGltZSB3aWxsIG5vdCBnbyBiYWNr
d29yZCBldmVuIGlmCisgICAgLy8gdGhlIHN5c3RlbSB0aW1lIGlzIGFkanVzdGVkIGJhY2t3b3Jk
LiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2ljYWxseSB1c2VkCisgICAgLy8gdG8gaW1wbGVtZW50IHJl
bGV0aXZlIHRpbWUgYmFzZWQgZnVuY3Rpb25hbGl0aWVzLCBlLmcuIHRpbWVyIGFuZCBhbmltYXRp
b24uCisgICAgZG91YmxlIG1vbm90b25pY1RpbWUoKTsKKwogICAgIGlubGluZSB2b2lkIGdldExv
Y2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQogICAg
IHsKICAgICAjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpIHx8IENPTVBJTEVSKE1JTkdXKSB8
fCBPUyhXSU5DRSkKQEAgLTYxLDYgKzY5LDggQEAgbmFtZXNwYWNlIFdURiB7CiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjdXJyZW50VGltZTsKK3VzaW5nIFdURjo6Y3VycmVudFVU
Q1RpbWU7Cit1c2luZyBXVEY6Om1vbm90b25pY1RpbWU7CiB1c2luZyBXVEY6OmdldExvY2FsVGlt
ZTsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9E
YXRlTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNw
cAkocmV2aXNpb24gNTg3NDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODAsNyArMzgwLDcgQEAgaW50IGVxdWl2YWxlbnRZZWFyRm9yRFNU
KGludCB5ZWFyKQogc3RhdGljIGludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCkKIHsKICNpZiBQ
TEFURk9STShCUkVXTVApCi0gICAgdGltZV90IGxvY2FsVGltZSA9IHN0YXRpY19jYXN0PHRpbWVf
dD4oY3VycmVudFRpbWUoKSk7CisgICAgdGltZV90IGxvY2FsVGltZSA9IHN0YXRpY19jYXN0PHRp
bWVfdD4oY3VycmVudFVUQ1RpbWUoKSk7CiAjZWxzZQogICAgIHRpbWVfdCBsb2NhbFRpbWUgPSB0
aW1lKDApOwogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24gNTg3NDUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIGlubGluZSBkb3VibGUganNDdXJy
ZW50VGltZSgpCiB7CiAgICAgLy8gSmF2YVNjcmlwdCBkb2Vzbid0IHJlY29nbml6ZSBmcmFjdGlv
bnMgb2YgYSBtaWxsaXNlY29uZC4KLSAgICByZXR1cm4gZmxvb3IoV1RGOjpjdXJyZW50VGltZU1T
KCkpOworICAgIHJldHVybiBmbG9vcihXVEY6OmN1cnJlbnRVVENUaW1lTVMoKSk7CiB9CiAKIGNv
bnN0IGNoYXIgKiBjb25zdCB3ZWVrZGF5TmFtZVs3XSA9IHsgIk1vbiIsICJUdWUiLCAiV2VkIiwg
IlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIgfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9N
YWluVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVh
ZC5jcHAJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0
aW9uc0Zyb21NYWluVGhyZWFkKCkKICAgICBpZiAoY2FsbGJhY2tzUGF1c2VkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZSgpOwogCiAgICAgRnVuY3Rpb25XaXRoQ29udGV4
dCBpbnZvY2F0aW9uOwogICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9p
ZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKICAgICAgICAgLy8geWllbGQgc28g
dGhlIHVzZXIgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZC4gT3RoZXJ3aXNlIHVzZXIgbWF5IG5vdCBi
ZSBhYmxlIHRvIGV2ZW4gY2xvc2UgdGhlIHdpbmRvdy4KICAgICAgICAgLy8gVGhpcyBjb2RlIGhh
cyBlZmZlY3Qgb25seSBpbiBjYXNlIHRoZSBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWlu
VGhyZWFkKCkgaXMgaW1wbGVtZW50ZWQgaW4gYSB3YXkgdGhhdAogICAgICAgICAvLyBhbGxvd3Mg
aW5wdXQgZXZlbnRzIHRvIGJlIHByb2Nlc3NlZCBiZWZvcmUgd2UgYXJlIGJhY2sgaGVyZS4KLSAg
ICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUgPiBtYXhSdW5Mb29wU3VzcGVuc2lv
blRpbWUpIHsKKyAgICAgICAgaWYgKG1vbm90b25pY1RpbWUoKSAtIHN0YXJ0VGltZSA+IG1heFJ1
bkxvb3BTdXNwZW5zaW9uVGltZSkgewogICAgICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0
aW9uc09uTWFpblRocmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gNTg3NDUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgd2FpdChNdXRl
eCYgbXV0ZXgpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWdu
YWxlZCBiZWZvcmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyBy
ZWFjaGVkIG9yIGlzIGluIHRoZSBwYXN0LgotICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4g
c2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVk
IHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJyZW50VGltZSgpLgorICAgIC8v
IFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAx
OTcwLiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RG
Ojptb25vdG9uaWNUaW1lKCkuCiAgICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJz
b2x1dGVUaW1lKTsKICAgICB2b2lkIHNpZ25hbCgpOwogICAgIHZvaWQgYnJvYWRjYXN0KCk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAJKHJldmlzaW9uIDU4
NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11
dGV4JiBtdXRleCkKIAogYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChNdXRleCYgbXV0
ZXgsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpCiB7Ci0gICAgaWYgKGFic29sdXRlVGltZSA8IGN1cnJl
bnRUaW1lKCkpCisgICAgaWYgKGFic29sdXRlVGltZSA8IG1vbm90b25pY1RpbWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFic29sdXRlVGltZSA+IElOVF9NQVgpIHsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUs
NyArNDU1LDcgQEAgdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11dGV4KQogCiBi
b29sIFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29s
dXRlVGltZSkKIHsKLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7
CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNUaW1lKCk7CiAKICAgICAv
LyBUaW1lIGlzIGluIHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgogICAgIGlmIChhYnNv
bHV0ZVRpbWUgPCBjdXJyZW50VGltZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhy
ZWFkaW5nR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL1RocmVh
ZGluZ0d0ay5jcHAJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9U
aHJlYWRpbmdHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBU
aHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11dGV4KQogYm9vbCBUaHJlYWRDb25kaXRpb246
OnRpbWVkV2FpdChNdXRleCYgbXV0ZXgsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpCiB7CiAgICAgLy8g
VGltZSBpcyBpbiB0aGUgcGFzdCAtIHJldHVybiByaWdodCBhd2F5LgotICAgIGlmIChhYnNvbHV0
ZVRpbWUgPCBjdXJyZW50VGltZSgpKQorICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBtb25vdG9uaWNU
aW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBUaW1lIGlzIHRvbyBm
YXIgaW4gdGhlIGZ1dHVyZSBmb3IgZ19jb25kX3RpbWVkX3dhaXQgLSB3YWl0IGZvcmV2ZXIuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAJKHJldmlzaW9uIDU4NzQ1KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRl
eCkKIAogYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChNdXRleCYgbXV0ZXgsIGRvdWJs
ZSBhYnNvbHV0ZVRpbWUpCiB7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50
VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljVGltZSgpOwog
CiAgICAgLy8gVGltZSBpcyBpbiB0aGUgcGFzdCAtIHJldHVybiBpbW1lZGlhdGVseS4KICAgICBp
ZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55205</attachid>
            <date>2010-05-05 22:08:47 -0700</date>
            <delta_ts>2011-01-27 23:14:27 -0800</delta_ts>
            <desc>A separated patch (JavaScript Core part)</desc>
            <filename>currentTime-JavaScriptCore.patch</filename>
            <type>text/plain</type>
            <size>15677</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4ODU1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAtMDUtMDUgIExlbyBZYW5n
ICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpcnN0IHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMKKworICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChTdG9wV2F0Y2g6OnN0YXJ0KToKKyAgICAgICAgKFN0b3BXYXRjaDo6c3RvcCk6CisgICAg
ICAgICogcGNyZS9wY3JlX2V4ZWMuY3BwOgorICAgICAgICAoSGlzdG9ncmFtVGltZUxvZ2dlcjo6
SGlzdG9ncmFtVGltZUxvZ2dlcik6CisgICAgICAgIChIaXN0b2dyYW1UaW1lTG9nZ2VyOjp+SGlz
dG9ncmFtVGltZUxvZ2dlcik6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRDb3VudCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHA6CisgICAgICAgIChKU0M6OmdldENQVVRpbWUp
OgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5jcHA6CisgICAgICAgIChXVEY6OmN1cnJlbnRV
VENUaW1lKToKKyAgICAgICAgKFdURjo6bW9ub3RvbmljVGltZSk6CisgICAgICAgICogd3RmL0N1
cnJlbnRUaW1lLmg6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdURjo6
Y3VycmVudFVUQ1RpbWVNUyk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lTVMpOgorICAgICAg
ICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OmNhbGN1bGF0ZVVUQ09mZnNldCk6
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OmpzQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hG
dW5jdGlvbnNGcm9tTWFpblRocmVhZCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RG
OjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KToKKyAgICAg
ICAgKiB3dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRp
dGlvbjo6dGltZWRXYWl0KToKKyAgICAgICAgKiB3dGYvcXQvVGhyZWFkaW5nUXQuY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisKIDIwMTAtMDUtMDUgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEphdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxMiArMTI2LDEyIEBAIHBy
aXZhdGU6CiAKIHZvaWQgU3RvcFdhdGNoOjpzdGFydCgpCiB7Ci0gICAgbV9zdGFydFRpbWUgPSBj
dXJyZW50VGltZSgpOworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZSgpOwogfQogCiB2
b2lkIFN0b3BXYXRjaDo6c3RvcCgpCiB7Ci0gICAgbV9zdG9wVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV9zdG9wVGltZSA9IG1vbm90b25pY1RpbWUoKTsKIH0KIAogbG9uZyBTdG9wV2F0Y2g6
OmdldEVsYXBzZWRNUygpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCShyZXZpc2lv
biA1ODc0NSkKKysrIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2NCwxNCArMjE2NCwxNCBAQCB2b2lkIEhpc3RvZ3JhbTo6YWRkKGNvbnN0IEpT
UmVnRXhwKiByZSwgCiAKIEhpc3RvZ3JhbVRpbWVMb2dnZXI6Okhpc3RvZ3JhbVRpbWVMb2dnZXIo
Y29uc3QgSlNSZWdFeHAqIHJlKQogICAgIDogbV9yZShyZSkKLSAgICAsIG1fc3RhcnRUaW1lKGN1
cnJlbnRUaW1lTVMoKSkKKyAgICAsIG1fc3RhcnRUaW1lKG1vbm90b25pY1RpbWUoKSAqIDEwMDAu
MCkKIHsKIH0KIAogSGlzdG9ncmFtVGltZUxvZ2dlcjo6fkhpc3RvZ3JhbVRpbWVMb2dnZXIoKQog
ewogICAgIHN0YXRpYyBIaXN0b2dyYW0gaGlzdG9ncmFtOwotICAgIGhpc3RvZ3JhbS5hZGQobV9y
ZSwgY3VycmVudFRpbWVNUygpIC0gbV9zdGFydFRpbWUpOworICAgIGhpc3RvZ3JhbS5hZGQobV9y
ZSwgbW9ub3RvbmljVGltZSgpICogMTAwMC4wIC0gbV9zdGFydFRpbWUpOwogfQogCiAjZW5kaWYK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDU4
NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBkb3VibGUgZ2V0Q291bnQoKQogICAgIFF1
ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjb3VudGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihjb3VudGVyLlF1YWRQYXJ0KSAvIGZyZXF1ZW5jeS5RdWFkUGFydDsKICNlbHNlCi0g
ICAgcmV0dXJuIGN1cnJlbnRUaW1lTVMoKTsKKyAgICByZXR1cm4gbW9ub3RvbmljVGltZSgpICog
MTAwMC4wOwogI2VuZGlmCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwgZmlyc3RTdHJpbmdpZmllclRv
TWFyaygwKQogICAgICwgbWFya1N0YWNrKGpzQXJyYXlWUHRyKQogICAgICwgY2FjaGVkVVRDT2Zm
c2V0KE5hTikKLSAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VGltZSgp
KSkKKyAgICAsIHdlYWtSYW5kb20oc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VVRDVGltZSgpKSkK
ICAgICAsIG1heFJlZW50cnlEZXB0aCh0aHJlYWRTdGFja1R5cGUgPT0gVGhyZWFkU3RhY2tUeXBl
U21hbGwgPyBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCA6IE1heExhcmdlVGhyZWFkUmVlbnRy
eURlcHRoKQogI2lmbmRlZiBOREVCVUcKICAgICAsIGV4Y2x1c2l2ZVRocmVhZCgwKQpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDU4NzQ1
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBnZXRDUFVUaW1l
KCkKICAgICByZXR1cm4gR0VUVVBUSU1FTVMoKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZXR1cm4gdGhlIHRpbWUgdGhlIGN1cnJlbnQgdGhyZWFkIGhhcyBzcGVudCBleGVjdXRp
bmcuCi0gICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKiAxMDAwOworICAgIHJldHVybiBtb25vdG9u
aWNUaW1lKCkgKiAxMDAwOwogI2VuZGlmCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9D
dXJyZW50VGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRU
aW1lLmNwcAkocmV2aXNpb24gNTg3NDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjEsNiArNjIsOSBAQCBleHRlcm4gIkMi
IHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICp0KTsKICNpbmNsdWRlIDxBRUVTdGRMaWIuaD4KICNl
bHNlCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdGltZXMuaD4KKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTU2LDcgKzE2MCw3IEBAIHN0YXRpYyBib29sIHFw
Y0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIGF2YWlsYWJsZTsKIH0KIAotZG91YmxlIGN1cnJlbnRU
aW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgLy8gVXNlIGEgY29tYmluYXRp
b24gb2YgZnRpbWUgYW5kIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyLgogICAgIC8vIGZ0aW1lIHJl
dHVybnMgdGhlIGluZm9ybWF0aW9uIHdlIHdhbnQsIGJ1dCBkb2Vzbid0IGhhdmUgc3VmZmljaWVu
dCByZXNvbHV0aW9uLgpAQCAtMjAwLDYgKzIwNCwxNyBAQCBkb3VibGUgY3VycmVudFRpbWUoKQog
ICAgIHJldHVybiB1dGMgLyAxMDAwLjA7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29y
cmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENU
aW1lKCk7Cit9CisKK2RvdWJsZSBjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRV
VENUaW1lKCk7Cit9CisKICNlbHNlCiAKIHN0YXRpYyBkb3VibGUgY3VycmVudFN5c3RlbVRpbWUo
KQpAQCAtMjI1LDcgKzI0MCw3IEBAIHN0YXRpYyBkb3VibGUgY3VycmVudFN5c3RlbVRpbWUoKQog
ICAgIHJldHVybiB0LlF1YWRQYXJ0ICogMC4wMDAwMDAxIC0gMTE2NDQ0NzM2MDAuMDsKIH0KIAot
ZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdCA9IGZhbHNlOwogICAgIHN0YXRpYyBkb3VibGUgbGFzdFRpbWU7CkBAIC0y
NDcsNiArMjYyLDE3IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAgICAgcmV0dXJuIHRpbWVOb3c7
CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3Rvbmlj
VGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKK2RvdWJsZSBjdXJy
ZW50VGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbmRpZiAv
LyBVU0UoUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUikKIAogI2VsaWYgUExBVEZPUk0oR1RLKQpA
QCAtMjU1LDIxICsyODEsNDMgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIC8vIGJldHRlciBhY2N1
cmFjeSBjb21wYXJlZCB3aXRoIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgZ19nZXRfY3VycmVu
dF90aW1lOgogLy8gKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoL3A/aGw9ZW4jSEhu
TlJqa3MxdDAvZ2xpYi0yLjUuMi9nbGliL2dtYWluLmMmcT1nX2dldF9jdXJyZW50X3RpbWUpLgog
Ly8gTm9uLVdpbmRvd3MgR1RLIGJ1aWxkcyBjb3VsZCB1c2UgZ2V0dGltZW9mZGF5KCkgZGlyZWN0
bHkgYnV0IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeSBsZXRzIHVzZSBHVEsgZnVuY3Rpb24u
Ci1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1cnJlbnRVVENUaW1lKCkKIHsKICAgICBH
VGltZVZhbCBub3c7CiAgICAgZ19nZXRfY3VycmVudF90aW1lKCZub3cpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KG5vdy50dl9zZWMpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihub3cu
dHZfdXNlYyAvIDEwMDAwMDAuMCk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKFdYKQorLy8gRklYTUU6
IGltcGxlbWVudCBpdCBjb3JyZWN0bHkKK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkKK3sKKyAgICBy
ZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KIAogZG91YmxlIGN1cnJlbnRUaW1lKCkKIHsKKyAg
ICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKworI2VsaWYgUExBVEZPUk0oV1gpCisKK2Rv
dWJsZSBjdXJyZW50VVRDVGltZSgpCit7CiAgICAgd3hEYXRlVGltZSBub3cgPSB3eERhdGVUaW1l
OjpVTm93KCk7CiAgICAgcmV0dXJuIChkb3VibGUpbm93LkdldFRpY2tzKCkgKyAoZG91YmxlKShu
b3cuR2V0TWlsbGlzZWNvbmQoKSAvIDEwMDAuMCk7CiB9CiAKKy8vIEZJWE1FOiBpbXBsZW1lbnQg
aXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJl
bnRVVENUaW1lKCk7Cit9CisKK2RvdWJsZSBjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIGN1
cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbGlmIFBMQVRGT1JNKEJSRVdNUCkKIAogLy8gR0VUVVRD
U0VDT05EUyByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTgwLzAxLzA2IDAw
OjAwOjAwIFVUQywKQEAgLTI3NywyMiArMzI1LDU1IEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAv
LyBvY2N1cnJlbmNlIG9mIDAwOjAwOjAwIGxvY2FsIHRpbWUuCiAvLyBXZSBjYW4gY29tYmluZSBH
RVRVVENTRUNPTkRTIGFuZCBHRVRUSU1FTVMgdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgbWls
bGlzZWNvbmRzCiAvLyBzaW5jZSAxOTcwLzAxLzAxIDAwOjAwOjAwIFVUQy4KLWRvdWJsZSBjdXJy
ZW50VGltZSgpCitkb3VibGUgY3VycmVudFVUQ1RpbWUoKQogewogICAgIC8vIGRpZmZTZWNvbmRz
IGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIDE5NzAvMDEvMDEgdG8gMTk4MC8wMS8wNgog
ICAgIGNvbnN0IHVuc2lnbmVkIGRpZmZTZWNvbmRzID0gMzE1OTY0ODAwOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KGRpZmZTZWNvbmRzICsgR0VUVVRDU0VDT05EUygpICsgKChHRVRU
SU1FTVMoKSAlIDEwMDApIC8gbXNQZXJTZWNvbmQpKTsKIH0KIAotI2Vsc2UKKy8vIEZJWE1FOiBp
bXBsZW1lbnQgaXQgY29ycmVjdGx5Citkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0
dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CiAKIGRvdWJsZSBjdXJyZW50VGltZSgpCiB7CisgICAg
cmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisjZWxzZQorCitkb3VibGUgY3VycmVudFVUQ1Rp
bWUoKQorewogICAgIHN0cnVjdCB0aW1ldmFsIG5vdzsKICAgICBnZXR0aW1lb2ZkYXkoJm5vdywg
MCk7CiAgICAgcmV0dXJuIG5vdy50dl9zZWMgKyBub3cudHZfdXNlYyAvIDEwMDAwMDAuMDsKIH0K
IAorZG91YmxlIG1vbm90b25pY1RpbWUoKQoreworICAgIC8vIHRtc1VudXNlZCBpcyBqdXN0IGZv
ciBzeXN0ZW0gd2hpY2ggZG9lcyBhY2NlcHQgdGltZXMoMCkgY2FsbC4KKyAgICBzdGF0aWMgc3Ry
dWN0IHRtcyB0bXNVbnVzZWQ7CisgICAgc3RhdGljIGRvdWJsZSBzdGFydFRpbWUgPSBjdXJyZW50
VVRDVGltZSgpOworICAgIHN0YXRpYyBjbG9ja190IHN0YXJ0VGlja3MgPSB0aW1lcygmdG1zVW51
c2VkKTsKKyAgICBzdGF0aWMgbG9uZyBpbnQgdGlja3NQZXJTZWNvbmQgPSBzeXNjb25mKF9TQ19D
TEtfVENLKTsKKworICAgIGNsb2NrX3QgY3VycmVudFRpY2tzID0gdGltZXMoJnRtc1VudXNlZCk7
CisKKyAgICAvLyBPdmVyZmxvdywganVzdCBmYWxsYmFjayB0byBjdXJyZW50VVRDVGltZSgpCisg
ICAgaWYgKFVOTElLRUxZKHN0YXJ0VGlja3MgPT0gc3RhdGljX2Nhc3Q8Y2xvY2tfdD4oLTEpIHx8
IGN1cnJlbnRUaWNrcyA9PSBzdGF0aWNfY2FzdDxjbG9ja190PigtMSkpKQorICAgICAgICByZXR1
cm4gY3VycmVudFVUQ1RpbWUoKTsKKworICAgIEFTU0VSVCh0aWNrc1BlclNlY29uZCA+IDApOwor
ICAgIHJldHVybiBzdGFydFRpbWUgKyBzdGF0aWNfY2FzdDxkb3VibGU+KGN1cnJlbnRUaWNrcyAt
IHN0YXJ0VGlja3MpIC8gdGlja3NQZXJTZWNvbmQ7Cit9CisKK2RvdWJsZSBjdXJyZW50VGltZSgp
Cit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiA1ODc0
NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxNCArMzksMjcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgLy8gUmV0dXJucyB0aGUgY3Vy
cmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgog
ICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3Vh
bGx5IGFzIGdvb2Qgb3IgYmV0dGVyIAogICAgIC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KKyAgICBk
b3VibGUgY3VycmVudFVUQ1RpbWUoKTsKKworICAgIC8vIFRvIGJlIHJlbW92ZWQgd2hlbiBhbGwg
Y2FsbHMgdG8gY3VycmVudFRpbWUgYXJlIGNoYW5nZWQKKyAgICAvLyB0byBjdXJyZW50VVRDVGlt
ZSBvciBtb25vdG9uaWNUaW1lCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKICAgICAvLyBT
YW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCi0gICAgaW5saW5lIGRvdWJsZSBjdXJyZW50VGlt
ZU1TKCkKKyAgICBpbmxpbmUgZG91YmxlIGN1cnJlbnRVVENUaW1lTVMoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKiAxMDAwLjA7IAorICAgICAgICByZXR1cm4gY3VycmVu
dFVUQ1RpbWUoKSAqIDEwMDAuMDsgCiAgICAgfQogCisgICAgLy8gVG8gYmUgcmVtb3ZlZCB3aGVu
IGFsbCBjYWxscyB0byBjdXJyZW50VGltZU1TIGFyZSBjaGFuZ2VkCisgICAgLy8gdG8gY3VycmVu
dFVUQ1RpbWVNUworICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpIHsgcmV0dXJuIGN1
cnJlbnRVVENUaW1lTVMoKTsgfQorCisgICAgLy8gSnVzdCBsaWtlIGN1cnJlbnRVVENUaW1lLCBi
dXQgdGhlIHRpbWUgd2lsbCBub3QgZ28gYmFja3dvcmQgZXZlbiBpZgorICAgIC8vIHRoZSBzeXN0
ZW0gdGltZSBpcyBhZGp1c3RlZCBiYWNrd29yZC4gVGhpcyBmdW5jdGlvbiBpcyBiYXNpY2FsbHkg
dXNlZAorICAgIC8vIHRvIGltcGxlbWVudCByZWxldGl2ZSB0aW1lIGJhc2VkIGZ1bmN0aW9uYWxp
dGllcywgZS5nLiB0aW1lciBhbmQgYW5pbWF0aW9uLgorICAgIGRvdWJsZSBtb25vdG9uaWNUaW1l
KCk7CisKICAgICBpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90KiBsb2NhbFRp
bWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKICAgICB7CiAgICAgI2lmIENPTVBJTEVSKE1TVkM3X09S
X0xPV0VSKSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCkBAIC02MSw2ICs3NCw4IEBA
IG5hbWVzcGFjZSBXVEYgewogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y3VycmVu
dFRpbWU7Cit1c2luZyBXVEY6OmN1cnJlbnRVVENUaW1lOwordXNpbmcgV1RGOjptb25vdG9uaWNU
aW1lOwogdXNpbmcgV1RGOjpnZXRMb2NhbFRpbWU7CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9o
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw3
IEBAIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcikKIHN0YXRpYyBpbnQzMl90IGNh
bGN1bGF0ZVVUQ09mZnNldCgpCiB7CiAjaWYgUExBVEZPUk0oQlJFV01QKQotICAgIHRpbWVfdCBs
b2NhbFRpbWUgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGN1cnJlbnRUaW1lKCkpOworICAgIHRpbWVf
dCBsb2NhbFRpbWUgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGN1cnJlbnRVVENUaW1lKCkpOwogI2Vs
c2UKICAgICB0aW1lX3QgbG9jYWxUaW1lID0gdGltZSgwKTsKICNlbmRpZgpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L0RhdGVNYXRoLmgJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVN
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIHRpbWVDbGlwKGRv
dWJsZSk7CiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQogewogICAgIC8vIEphdmFTY3Jp
cHQgZG9lc24ndCByZWNvZ25pemUgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gICAgcmV0
dXJuIGZsb29yKFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICByZXR1cm4gZmxvb3IoV1RGOjpj
dXJyZW50VVRDVGltZU1TKCkpOwogfQogCiBjb25zdCBjaGFyICogY29uc3Qgd2Vla2RheU5hbWVb
N10gPSB7ICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iIH07
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcg
KzEyNyw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgaWYg
KGNhbGxiYWNrc1BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHN0YXJ0VGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIHN0YXJ0VGltZSA9IG1vbm90b25pY1RpbWUo
KTsKIAogICAgIEZ1bmN0aW9uV2l0aENvbnRleHQgaW52b2NhdGlvbjsKICAgICB3aGlsZSAodHJ1
ZSkgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRo
cmVhZCgpCiAgICAgICAgIC8vIHlpZWxkIHNvIHRoZSB1c2VyIGlucHV0IGNhbiBiZSBwcm9jZXNz
ZWQuIE90aGVyd2lzZSB1c2VyIG1heSBub3QgYmUgYWJsZSB0byBldmVuIGNsb3NlIHRoZSB3aW5k
b3cuCiAgICAgICAgIC8vIFRoaXMgY29kZSBoYXMgZWZmZWN0IG9ubHkgaW4gY2FzZSB0aGUgc2No
ZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpIGlzIGltcGxlbWVudGVkIGluIGEg
d2F5IHRoYXQKICAgICAgICAgLy8gYWxsb3dzIGlucHV0IGV2ZW50cyB0byBiZSBwcm9jZXNzZWQg
YmVmb3JlIHdlIGFyZSBiYWNrIGhlcmUuCi0gICAgICAgIGlmIChjdXJyZW50VGltZSgpIC0gc3Rh
cnRUaW1lID4gbWF4UnVuTG9vcFN1c3BlbnNpb25UaW1lKSB7CisgICAgICAgIGlmIChtb25vdG9u
aWNUaW1lKCkgLSBzdGFydFRpbWUgPiBtYXhSdW5Mb29wU3VzcGVuc2lvblRpbWUpIHsKICAgICAg
ICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgJKHJldmlzaW9uIDU4NzQ1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGltZSwgZmFs
c2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFzdC4KLSAg
ICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEphbnVhcnkg
MSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6b25lIGFz
IFdURjo6Y3VycmVudFRpbWUoKS4KKyAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29u
ZHMsIHN0YXJ0aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1
c2UgdGhlIHNhbWUgdGltZSB6b25lIGFzIFdURjo6bW9ub3RvbmljVGltZSgpLgogICAgIGJvb2wg
dGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7CiAgICAgdm9pZCBzaWduYWwo
KTsKICAgICB2b2lkIGJyb2FkY2FzdCgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdQdGhyZWFkcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2
b2lkIFRocmVhZENvbmRpdGlvbjo6d2FpdChNdXRleCYgbXV0ZXgpCiAKIGJvb2wgVGhyZWFkQ29u
ZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewot
ICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBjdXJyZW50VGltZSgpKQorICAgIGlmIChhYnNvbHV0ZVRp
bWUgPCBtb25vdG9uaWNUaW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChh
YnNvbHV0ZVRpbWUgPiBJTlRfTUFYKSB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2lu
LmNwcAkocmV2aXNpb24gNTg3NDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0
aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKIAogYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2Fp
dChNdXRleCYgbXV0ZXgsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpCiB7Ci0gICAgZG91YmxlIGN1cnJl
bnRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdU
Rjo6bW9ub3RvbmljVGltZSgpOwogCiAgICAgLy8gVGltZSBpcyBpbiB0aGUgcGFzdCAtIHJldHVy
biBpbW1lZGlhdGVseS4KICAgICBpZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUpCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCShyZXZpc2lvbiA1ODc0NSkK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBt
dXRleCkKIGJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKQogewogICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3QgLSByZXR1cm4g
cmlnaHQgYXdheS4KLSAgICBpZiAoYWJzb2x1dGVUaW1lIDwgY3VycmVudFRpbWUoKSkKKyAgICBp
ZiAoYWJzb2x1dGVUaW1lIDwgbW9ub3RvbmljVGltZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgLy8gVGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgZm9yIGdfY29uZF90
aW1lZF93YWl0IC0gd2FpdCBmb3JldmVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3F0L1Ro
cmVhZGluZ1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFk
aW5nUXQuY3BwCShyZXZpc2lvbiA1ODc0NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJl
YWRpbmdRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFRocmVh
ZENvbmRpdGlvbjo6d2FpdChNdXRleCYgbXV0ZXgpCiAKIGJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0
aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewotICAgIGRvdWJs
ZSBjdXJyZW50VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVudFRp
bWUgPSBXVEY6Om1vbm90b25pY1RpbWUoKTsKIAogICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3Qg
LSByZXR1cm4gaW1tZWRpYXRlbHkuCiAgICAgaWYgKGFic29sdXRlVGltZSA8IGN1cnJlbnRUaW1l
KQo=
</data>
<flag name="review"
          id="39334"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80421</attachid>
            <date>2011-01-27 23:14:27 -0800</date>
            <delta_ts>2011-01-28 01:48:38 -0800</delta_ts>
            <desc>Patch part 1: base line</desc>
            <filename>0001-2011-01-27-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>14038</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBjNmMzMWI2NTZmZGFiZDFlNTQzMzQ4YWY2YzkwMzNmNGE3NjBjODAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBGcmksIDI4IEphbiAyMDExIDE0OjU5OjI3ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
MjAxMS0wMS0yNyAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBSZW1vdmUgZGVwZW5kZW5j
eSBvZiBqc0N1cnJlbnRUaW1lKCkgb24gY3VycmVudFRpbWUoKQogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0MwoKICAgICAgICBSZW5hbWUgY3VycmVu
dFRpbWUgdG8gY3VycmVudFVUQ1RpbWUgYW5kIGtlZXAgY3VycmVudFRpbWUgZm9yIGEgd2hpbGUu
CiAgICAgICAgUmVuYW1lIGN1cnJlbnRUaW1lTVMgdG8gY3VycmVudFVUQ1RpbWVNUyBhbmQga2Vl
cCBjdXJyZW50VGltZU1TIGZvciBhCiAgICAgICAgd2hpbGUuIFRoZSByZWFzb24gb2Yga2VlcGlu
ZyBjdXJyZW50VGltZSBhbmQgY3VycmVudFRpbWVNUyBpcyB0aGF0IHRoaXMKICAgICAgICBwYXRj
aCBkb2Vzbid0IGNoYW5nZSB0aGUgY2FsbCBzaXRlcyB5ZXQuIE90aGVyIGNvbWluZyBwYXRjaGVz
IHdpbGwgY2hhbmdlCiAgICAgICAgbGFyZ2UgbnVtYmVyIG9mIGNhbGwgc2l0ZXMgZ3JhZHVhbGx5
LgogICAgICAgIEFkZCBtb25vdG9uaWNUaW1lIHRvIHJlcGxhY2UgY3VycmVudFRpbWUgd2hlcmUg
bW9ub3RvbmljIHRpbWUgc2hvdWxkIGJlCiAgICAgICAgdXNlZC4gVGhpcyBwYXRjaCBkb2Vzbid0
IGNoYW5nZSB0aGlzIGtpbmQgb2YgY2FsbCBzaXRlIGVpdGhvci4gT3RoZXIKICAgICAgICBjb21p
bmcgcGF0Y2hlcyB3aWxsIHRha2UgY2FyZSBvZiB0aGVtIGdyYWR1YWxseS4gQWZ0ZXIgYWxsIGNh
bGwgc2l0ZXMKICAgICAgICBoYXZlIGJlZW4gY2hhbmdlZCB3ZSBzaGFsbCBpbXBsbWVudCBtb25v
dG9uaWNUaW1lLiBDdXJyZW50bHksIGV4Y2VwdCBmb3IKICAgICAgICBQT1NJWCBiYXNlZCBwb3J0
aW5nLCB3ZSBqdXN0IHJlZGlyZWN0IGl0IHRvIGN1cnJlbnRVVENUaW1lLgoKICAgICAgICBObyBm
dW5jdGlvbmFsaXR5IGNoYW5nZSwgbm8gbmV3IHRlc3RzLgoKICAgICAgICAqIHd0Zi9DdXJyZW50
VGltZS5jcHA6CiAgICAgICAgKFdURjo6Y3VycmVudFVUQ1RpbWUpOgogICAgICAgIChXVEY6Om1v
bm90b25pY1RpbWUpOgogICAgICAgIChXVEY6OmN1cnJlbnRUaW1lKToKICAgICAgICAqIHd0Zi9D
dXJyZW50VGltZS5oOgogICAgICAgIChXVEY6OmN1cnJlbnRVVENUaW1lTVMpOgogICAgICAgIChX
VEY6OmN1cnJlbnRUaW1lTVMpOgogICAgICAgIChXVEY6OmdldExvY2FsVGltZSk6CiAgICAgICAg
KiBzcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHA6CiAgICAgICAgKFdURjo6Y3VycmVudFVUQ1Rp
bWUpOgogICAgICAgIChXVEY6Om1vbm90b25pY1RpbWUpOgogICAgICAgIChXVEY6OmN1cnJlbnRU
aW1lKToKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICB8ICAgMjkgKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmNwcCAgICAgICAgICB8ICAgOTYgKysrKysrKysrKysrKysrKysrLS0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaCAgICAgICAgICAgIHwgICA1OCArKysrKysrKy0tLS0K
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAy
NCArKysrKwogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50VGltZS5j
cHAgfCAgIDE2ICsrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDI2IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIyZTc0YzMuLjcwM2EzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTAxLTI3ICBM
ZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGVwZW5kZW5jeSBvZiBqc0N1
cnJlbnRUaW1lKCkgb24gY3VycmVudFRpbWUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMKKworICAgICAgICBSZW5hbWUgY3VycmVudFRpbWUg
dG8gY3VycmVudFVUQ1RpbWUgYW5kIGtlZXAgY3VycmVudFRpbWUgZm9yIGEgd2hpbGUuCisgICAg
ICAgIFJlbmFtZSBjdXJyZW50VGltZU1TIHRvIGN1cnJlbnRVVENUaW1lTVMgYW5kIGtlZXAgY3Vy
cmVudFRpbWVNUyBmb3IgYQorICAgICAgICB3aGlsZS4gVGhlIHJlYXNvbiBvZiBrZWVwaW5nIGN1
cnJlbnRUaW1lIGFuZCBjdXJyZW50VGltZU1TIGlzIHRoYXQgdGhpcworICAgICAgICBwYXRjaCBk
b2Vzbid0IGNoYW5nZSB0aGUgY2FsbCBzaXRlcyB5ZXQuIE90aGVyIGNvbWluZyBwYXRjaGVzIHdp
bGwgY2hhbmdlCisgICAgICAgIGxhcmdlIG51bWJlciBvZiBjYWxsIHNpdGVzIGdyYWR1YWxseS4K
KyAgICAgICAgQWRkIG1vbm90b25pY1RpbWUgdG8gcmVwbGFjZSBjdXJyZW50VGltZSB3aGVyZSBt
b25vdG9uaWMgdGltZSBzaG91bGQgYmUKKyAgICAgICAgdXNlZC4gVGhpcyBwYXRjaCBkb2Vzbid0
IGNoYW5nZSB0aGlzIGtpbmQgb2YgY2FsbCBzaXRlIGVpdGhvci4gT3RoZXIKKyAgICAgICAgY29t
aW5nIHBhdGNoZXMgd2lsbCB0YWtlIGNhcmUgb2YgdGhlbSBncmFkdWFsbHkuIEFmdGVyIGFsbCBj
YWxsIHNpdGVzCisgICAgICAgIGhhdmUgYmVlbiBjaGFuZ2VkIHdlIHNoYWxsIGltcGxtZW50IG1v
bm90b25pY1RpbWUuIEN1cnJlbnRseSwgZXhjZXB0IGZvcgorICAgICAgICBQT1NJWCBiYXNlZCBw
b3J0aW5nLCB3ZSBqdXN0IHJlZGlyZWN0IGl0IHRvIGN1cnJlbnRVVENUaW1lLgorCisgICAgICAg
IE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiB3dGYv
Q3VycmVudFRpbWUuY3BwOgorICAgICAgICAoV1RGOjpjdXJyZW50VVRDVGltZSk6CisgICAgICAg
IChXVEY6Om1vbm90b25pY1RpbWUpOgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZSk6CisgICAg
ICAgICogd3RmL0N1cnJlbnRUaW1lLmg6CisgICAgICAgIChXVEY6OmN1cnJlbnRVVENUaW1lTVMp
OgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZU1TKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxU
aW1lKToKKwogMjAxMS0wMS0yNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0N1cnJlbnRUaW1lLmNwcAppbmRleCA1NjcyNGNiLi5kNGViMjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDExIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYxLDYgKzYyLDkgQEAgZXh0
ZXJuICJDIiB0aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqdCk7CiAjaW5jbHVkZSA8QUVFU3RkTGli
Lmg+CiAjZWxzZQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3RpbWVzLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTE1Niw3ICsxNjAsNyBAQCBzdGF0aWMg
Ym9vbCBxcGNBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLWRvdWJsZSBj
dXJyZW50VGltZSgpCitkb3VibGUgY3VycmVudFVUQ1RpbWUoKQogewogICAgIC8vIFVzZSBhIGNv
bWJpbmF0aW9uIG9mIGZ0aW1lIGFuZCBRdWVyeVBlcmZvcm1hbmNlQ291bnRlci4KICAgICAvLyBm
dGltZSByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB3ZSB3YW50LCBidXQgZG9lc24ndCBoYXZlIHN1
ZmZpY2llbnQgcmVzb2x1dGlvbi4KQEAgLTIyNCw3ICsyMjgsNyBAQCBzdGF0aWMgZG91YmxlIGN1
cnJlbnRTeXN0ZW1UaW1lKCkKICAgICByZXR1cm4gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDEx
NjQ0NDczNjAwLjA7CiB9CiAKLWRvdWJsZSBjdXJyZW50VGltZSgpCitkb3VibGUgY3VycmVudFVU
Q1RpbWUoKQogewogICAgIHN0YXRpYyBib29sIGluaXQgPSBmYWxzZTsKICAgICBzdGF0aWMgZG91
YmxlIGxhc3RUaW1lOwpAQCAtMjQ4LDI3ICsyNTIsNjkgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkK
IAogI2VuZGlmIC8vIFVTRShRVUVSWV9QRVJGT1JNQU5DRV9DT1VOVEVSKQogCisvLyBGSVhNRTog
QWZ0ZXIgd2UgY2hhbmdlIGFsbCBjYWxsIHNpdGVzIG9mIGN1cnJlbnRUaW1lKCkgd2hpY2ggc2hv
dWxkCisvLyB1c2UgbW9ub3RvbmljVGltZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBtb25vdG9uaWNU
aW1lIGNvcnJlY3RseS4gU28KKy8vIGZhciB3ZSBqdXN0IGFkZCBza2VsZXRvbiBoZXJlIGFuZCBs
ZXQgaXQgd29yayBhcyB0aGUgY3VycmVudCBiZWhhdmlvci4KK2RvdWJsZSBtb25vdG9uaWNUaW1l
KCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKworLy8gRklYTUU6IFRvIGJl
IHJlbW92ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgY2hhbmdlIHRvIGN1cnJlbnRV
VENUaW1lLgorZG91YmxlIGN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1Rp
bWUoKTsKK30KKwogI2VsaWYgUExBVEZPUk0oR1RLKQogCiAvLyBOb3RlOiBHVEsgb24gV2luZG93
cyB3aWxsIHBpY2sgdXAgdGhlIFBMQVRGT1JNKFdJTikgaW1wbGVtZW50YXRpb24gYWJvdmUgd2hp
Y2ggcHJvdmlkZXMKIC8vIGJldHRlciBhY2N1cmFjeSBjb21wYXJlZCB3aXRoIFdpbmRvd3MgaW1w
bGVtZW50YXRpb24gb2YgZ19nZXRfY3VycmVudF90aW1lOgogLy8gKGh0dHA6Ly93d3cuZ29vZ2xl
LmNvbS9jb2Rlc2VhcmNoL3A/aGw9ZW4jSEhuTlJqa3MxdDAvZ2xpYi0yLjUuMi9nbGliL2dtYWlu
LmMmcT1nX2dldF9jdXJyZW50X3RpbWUpLgogLy8gTm9uLVdpbmRvd3MgR1RLIGJ1aWxkcyBjb3Vs
ZCB1c2UgZ2V0dGltZW9mZGF5KCkgZGlyZWN0bHkgYnV0IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0
ZW5jeSBsZXRzIHVzZSBHVEsgZnVuY3Rpb24uCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91Ymxl
IGN1cnJlbnRVVENUaW1lKCkKIHsKICAgICBHVGltZVZhbCBub3c7CiAgICAgZ19nZXRfY3VycmVu
dF90aW1lKCZub3cpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy50dl9zZWMp
ICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihub3cudHZfdXNlYyAvIDEwMDAwMDAuMCk7CiB9CiAKLSNl
bGlmIFBMQVRGT1JNKFdYKQorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyBvZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1vbm90b25pY1RpbWUsIHdl
IHNob3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHkuIFNvCisvLyBmYXIgd2Ug
anVzdCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMgdGhlIGN1cnJlbnQgYmVo
YXZpb3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENU
aW1lKCk7Cit9CiAKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gYWxsIGNhbGxzIHRvIGN1
cnJlbnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KIGRvdWJsZSBjdXJyZW50VGltZSgp
CiB7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKKyNlbGlmIFBMQVRGT1JNKFdY
KQorCitkb3VibGUgY3VycmVudFVUQ1RpbWUoKQorewogICAgIHd4RGF0ZVRpbWUgbm93ID0gd3hE
YXRlVGltZTo6VU5vdygpOwogICAgIHJldHVybiAoZG91YmxlKW5vdy5HZXRUaWNrcygpICsgKGRv
dWJsZSkobm93LkdldE1pbGxpc2Vjb25kKCkgLyAxMDAwLjApOwogfQogCisvLyBGSVhNRTogQWZ0
ZXIgd2UgY2hhbmdlIGFsbCBjYWxsIHNpdGVzIG9mIGN1cnJlbnRUaW1lKCkgd2hpY2ggc2hvdWxk
CisvLyB1c2UgbW9ub3RvbmljVGltZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBtb25vdG9uaWNUaW1l
IGNvcnJlY3RseS4gU28KKy8vIGZhciB3ZSBqdXN0IGFkZCBza2VsZXRvbiBoZXJlIGFuZCBsZXQg
aXQgd29yayBhcyB0aGUgY3VycmVudCBiZWhhdmlvci4KK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkK
K3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKworLy8gRklYTUU6IFRvIGJlIHJl
bW92ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgY2hhbmdlIHRvIGN1cnJlbnRVVENU
aW1lLgorZG91YmxlIGN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUo
KTsKK30KKwogI2VsaWYgUExBVEZPUk0oQlJFV01QKQogCiAvLyBHRVRVVENTRUNPTkRTIHJldHVy
bnMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDE5ODAvMDEvMDYgMDA6MDA6MDAgVVRDLApA
QCAtMjc2LDIyICszMjIsNjAgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIC8vIG9jY3VycmVuY2Ug
b2YgMDA6MDA6MDAgbG9jYWwgdGltZS4KIC8vIFdlIGNhbiBjb21iaW5lIEdFVFVUQ1NFQ09ORFMg
YW5kIEdFVFRJTUVNUyB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMKIC8v
IHNpbmNlIDE5NzAvMDEvMDEgMDA6MDA6MDAgVVRDLgotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2Rv
dWJsZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgLy8gZGlmZlNlY29uZHMgaXMgdGhlIG51bWJl
ciBvZiBzZWNvbmRzIGZyb20gMTk3MC8wMS8wMSB0byAxOTgwLzAxLzA2CiAgICAgY29uc3QgdW5z
aWduZWQgZGlmZlNlY29uZHMgPSAzMTU5NjQ4MDA7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4oZGlmZlNlY29uZHMgKyBHRVRVVENTRUNPTkRTKCkgKyAoKEdFVFRJTUVNUygpICUgMTAw
MCkgLyBtc1BlclNlY29uZCkpOwogfQogCi0jZWxzZQorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5n
ZSBhbGwgY2FsbCBzaXRlcyBvZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1v
bm90b25pY1RpbWUsIHdlIHNob3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHku
IFNvCisvLyBmYXIgd2UganVzdCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMg
dGhlIGN1cnJlbnQgYmVoYXZpb3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0
dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CiAKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4g
YWxsIGNhbGxzIHRvIGN1cnJlbnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KIGRvdWJs
ZSBjdXJyZW50VGltZSgpCiB7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKKyNl
bHNlCisKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCit7CiAgICAgc3RydWN0IHRpbWV2YWwgbm93
OwogICAgIGdldHRpbWVvZmRheSgmbm93LCAwKTsKICAgICByZXR1cm4gbm93LnR2X3NlYyArIG5v
dy50dl91c2VjIC8gMTAwMDAwMC4wOwogfQogCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7Cisg
ICAgIC8vIHRtc1VudXNlZCBpcyBqdXN0IGZvciBzeXN0ZW0gd2hpY2ggZG9lcyBhY2NlcHQgdGlt
ZXMoMCkgY2FsbC4KKyAgICAgc3RhdGljIHN0cnVjdCB0bXMgdG1zVW51c2VkOworICAgICBzdGF0
aWMgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRVVENUaW1lKCk7CisgICAgIHN0YXRpYyBjbG9j
a190IHN0YXJ0VGlja3MgPSB0aW1lcygmdG1zVW51c2VkKTsKKyAgICAgc3RhdGljIGxvbmcgaW50
IHRpY2tzUGVyU2Vjb25kID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7CisKKyAgICAgY2xvY2tfdCBj
dXJyZW50VGlja3MgPSB0aW1lcygmdG1zVW51c2VkKTsKKworICAgICAvLyBPdmVyZmxvdywganVz
dCBmYWxsYmFjayB0byBjdXJyZW50VVRDVGltZSgpCisgICAgIGlmIChVTkxJS0VMWShzdGFydFRp
Y2tzID09IHN0YXRpY19jYXN0PGNsb2NrX3Q+KC0xKSB8fCBjdXJyZW50VGlja3MgPT0gc3RhdGlj
X2Nhc3Q8Y2xvY2tfdD4oLTEpKSkKKyAgICAgICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOwor
CisgICAgIEFTU0VSVCh0aWNrc1BlclNlY29uZCA+IDApOworICAgICByZXR1cm4gc3RhcnRUaW1l
ICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihjdXJyZW50VGlja3MgLSBzdGFydFRpY2tzKSAvIHRpY2tz
UGVyU2Vjb25kOworfQorCisvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIGFsbCBjYWxscyB0
byBjdXJyZW50VGltZSBjaGFuZ2UgdG8gY3VycmVudFVUQ1RpbWUuCitkb3VibGUgY3VycmVudFRp
bWUoKQoreworICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOworfQorCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1
cnJlbnRUaW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5k
ZXggNzExOTY1Ni4uYTlkOWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DdXJyZW50VGltZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBU
b3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwzMiArMzcsNTEgQEAKIAogbmFt
ZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNl
Y29uZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCi0gICAgLy8gUHJlY2lzaW9uIHZh
cmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0
ZXIgCi0gICAgLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50VGltZSgp
OworLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZy
b20gSmFudWFyeSAxLCAxOTcwLgorLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxh
dGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIKKy8vIHRoYW4gYSBtaWxsaXNl
Y29uZC4KK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpOwogCi0gICAgLy8gU2FtZSB0aGluZywgaW4g
bWlsbGlzZWNvbmRzLgotICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCi0gICAgewot
ICAgICAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCi0gICAgfQorLy8gRklYTUU6
IFRvIGJlIHJlbW92ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgYXJlIGNoYW5nZWQK
Ky8vIHRvIGN1cnJlbnRVVENUaW1lIG9yIG1vbm90b25pY1RpbWUuCisvLyBJZiB5b3UgYXJlIGdv
aW5nIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBwbGVhc2UgY29uc2lkZXIgY3VycmVudFVUQ1RpbWUK
Ky8vIG9yIG1vbnRvbmljVGltZS4KK2RvdWJsZSBjdXJyZW50VGltZSgpOwogCi0gICAgaW5saW5l
IHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxv
Y2FsVE0pCi0gICAgewotICAgICNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgfHwgQ09NUElM
RVIoTUlOR1cpIHx8IE9TKFdJTkNFKQotICAgICAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9j
YWxUaW1lKTsKLSAgICAjZWxpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICBsb2NhbHRpbWVfcyhs
b2NhbFRNLCBsb2NhbFRpbWUpOwotICAgICNlbHNlCi0gICAgICAgIGxvY2FsdGltZV9yKGxvY2Fs
VGltZSwgbG9jYWxUTSk7Ci0gICAgI2VuZGlmCi0gICAgfQorLy8gU2FtZSB0aGluZywgaW4gbWls
bGlzZWNvbmRzLgoraW5saW5lIGRvdWJsZSBjdXJyZW50VVRDVGltZU1TKCkKK3sKKyAgICByZXR1
cm4gY3VycmVudFVUQ1RpbWUoKSAqIDEwMDAuMDsKK30KKworLy8gRklYTUU6IFRvIGJlIHJlbW92
ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWVNUyBhcmUgY2hhbmdlZAorLy8gdG8gY3Vy
cmVudFVUQ1RpbWVNUworLy8gSWYgeW91IGFyZSBnb2luZyB0byBjYWxsIHRoaXMgZnVuY3Rpb24g
cGxlYXNlIGNhbGwgY3VycmVudFVUQ1RpbWVNUy4KK2lubGluZSBkb3VibGUgY3VycmVudFRpbWVN
UygpIHsgcmV0dXJuIGN1cnJlbnRVVENUaW1lTVMoKTsgfQorCisvLyBKdXN0IGxpa2UgY3VycmVu
dFVUQ1RpbWUsIGJ1dCB0aGUgdGltZSB3aWxsIG5vdCBnbyBiYWNrd29yZCBldmVuIGlmCisvLyB0
aGUgc3lzdGVtIHRpbWUgaXMgYWRqdXN0ZWQgYmFja3dvcmQuIFRoaXMgZnVuY3Rpb24gaXMgYmFz
aWNhbGx5IHVzZWQKKy8vIHRvIGltcGxlbWVudCByZWxldGl2ZSB0aW1lIGJhc2VkIGZ1bmN0aW9u
YWxpdGllcywgZS5nLiB0aW1lciBhbmQgYW5pbWF0aW9uLgorZG91YmxlIG1vbm90b25pY1RpbWUo
KTsKKworaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBz
dHJ1Y3QgdG0qIGxvY2FsVE0pCit7CisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpIHx8IENP
TVBJTEVSKE1JTkdXKSB8fCBPUyhXSU5DRSkKKyAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9j
YWxUaW1lKTsKKyNlbGlmIENPTVBJTEVSKE1TVkMpCisgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwg
bG9jYWxUaW1lKTsKKyNlbHNlCisgICAgbG9jYWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsK
KyNlbmRpZgorfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjdXJyZW50VVRD
VGltZTsKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7Cit1c2luZyBXVEY6OmN1cnJlbnRVVENUaW1l
TVM7CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lTVM7Cit1c2luZyBXVEY6Om1vbm90b25pY1RpbWU7
CiB1c2luZyBXVEY6OmdldExvY2FsVGltZTsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDlkMTVhZS4uMWM2OTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wMS0yNyAgTGVvIFlhbmcgIDxs
ZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb2YganNDdXJyZW50VGltZSgp
IG9uIGN1cnJlbnRUaW1lKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM3NzQzCisKKyAgICAgICAgUmVuYW1lIGN1cnJlbnRUaW1lIHRvIGN1cnJlbnRV
VENUaW1lIGFuZCBrZWVwIGN1cnJlbnRUaW1lIGZvciBhIHdoaWxlLgorICAgICAgICBUaGUgcmVh
c29uIG9mIGtlZXBpbmcgY3VycmVudFRpbWUgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgY2hh
bmdlCisgICAgICAgIHRoZSBjYWxsIHNpdGVzIHlldC4gT3RoZXIgY29taW5nIHBhdGNoZXMgd2ls
bCBjaGFuZ2UgbGFyZ2UgbnVtYmVyIG9mCisgICAgICAgIGNhbGwgc2l0ZXMgZ3JhZHVhbGx5Lgor
ICAgICAgICBBZGQgbW9ub3RvbmljVGltZSB0byByZXBsYWNlIGN1cnJlbnRUaW1lIHdoZXJlIG1v
bm90b25pYyB0aW1lIHNob3VsZCBiZQorICAgICAgICB1c2VkLiBUaGlzIHBhdGNoIGRvZXNuJ3Qg
Y2hhbmdlIHRoaXMga2luZCBvZiBjYWxsIHNpdGUgZWl0aG9yLiBPdGhlcgorICAgICAgICBjb21p
bmcgcGF0Y2hlcyB3aWxsIHRha2UgY2FyZSBvZiB0aGVtIGdyYWR1YWxseS4gQWZ0ZXIgYWxsIGNh
bGwgc2l0ZXMKKyAgICAgICAgaGF2ZSBiZWVuIGNoYW5nZWQgd2Ugc2hhbGwgaW1wbG1lbnQgbW9u
b3RvbmljVGltZS4gQ3VycmVudGx5IHdlIGp1c3QKKyAgICAgICAgcmVkaXJlY3QgaXQgdG8gY3Vy
cmVudFVUQ1RpbWUuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UsIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIHNyYy9DaHJvbWl1bUN1cnJlbnRUaW1lLmNwcDoKKyAgICAgICAg
KFdURjo6Y3VycmVudFVUQ1RpbWUpOgorICAgICAgICAoV1RGOjptb25vdG9uaWNUaW1lKToKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRpbWUpOgorCiAyMDExLTAxLTI3ICBGaW5udXIgVGhvcmFyaW5z
c29uICA8ZmlubnVyLndlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2ph
biBWYWZhaS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVt
Q3VycmVudFRpbWUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJy
ZW50VGltZS5jcHAKaW5kZXggMWVjY2M0MS4uMDNmODU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAKQEAgLTM2LDkgKzM2LDIz
IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1
cnJlbnRVVENUaW1lKCkKIHsKICAgICByZXR1cm4gV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+Y3Vy
cmVudFRpbWUoKTsKIH0KIAorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBhbGwgY2FsbCBzaXRl
cyBvZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1vbm90b25pY1RpbWUsIHdl
IHNob3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHkuIFNvCisvLyBmYXIgd2Ug
anVzdCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMgdGhlIGN1cnJlbnQgYmVo
YXZpb3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENU
aW1lKCk7Cit9CisKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gYWxsIGNhbGxzIHRvIGN1
cnJlbnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KK2RvdWJsZSBjdXJyZW50VGltZSgp
Cit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBX
VEYKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80427</attachid>
            <date>2011-01-28 01:48:38 -0800</date>
            <delta_ts>2011-01-29 22:52:03 -0800</delta_ts>
            <desc>Patch part 1: base line</desc>
            <filename>0001-2011-01-27-Leo-Yang-leo.yang-torchmobile.com.cn.patch</filename>
            <type>text/plain</type>
            <size>14776</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA2ZjZlNGIxODMxMjIyMjQ3MmQxMzZkMDJmY2FlZGU0MTQzZWRkN2NmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBGcmksIDI4IEphbiAyMDExIDE0OjU5OjI3ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
MjAxMS0wMS0yNyBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kg
b2YganNDdXJyZW50VGltZSgpIG9uIGN1cnJlbnRUaW1lKCkKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMKCiAgICAgICAgUmVuYW1lIGN1cnJlbnRU
aW1lIHRvIGN1cnJlbnRVVENUaW1lIGFuZCBrZWVwIGN1cnJlbnRUaW1lIGZvciBhIHdoaWxlLgog
ICAgICAgIFJlbmFtZSBjdXJyZW50VGltZU1TIHRvIGN1cnJlbnRVVENUaW1lTVMgYW5kIGtlZXAg
Y3VycmVudFRpbWVNUyBmb3IgYQogICAgICAgIHdoaWxlLiBUaGUgcmVhc29uIG9mIGtlZXBpbmcg
Y3VycmVudFRpbWUgYW5kIGN1cnJlbnRUaW1lTVMgaXMgdGhhdCB0aGlzCiAgICAgICAgcGF0Y2gg
ZG9lc24ndCBjaGFuZ2UgdGhlIGNhbGwgc2l0ZXMgeWV0LiBPdGhlciBjb21pbmcgcGF0Y2hlcyB3
aWxsIGNoYW5nZQogICAgICAgIGxhcmdlIG51bWJlciBvZiBjYWxsIHNpdGVzIGdyYWR1YWxseS4K
ICAgICAgICBBZGQgbW9ub3RvbmljVGltZSB0byByZXBsYWNlIGN1cnJlbnRUaW1lIHdoZXJlIG1v
bm90b25pYyB0aW1lIHNob3VsZCBiZQogICAgICAgIHVzZWQuIFRoaXMgcGF0Y2ggZG9lc24ndCBj
aGFuZ2UgdGhpcyBraW5kIG9mIGNhbGwgc2l0ZSBlaXRob3IuIE90aGVyCiAgICAgICAgY29taW5n
IHBhdGNoZXMgd2lsbCB0YWtlIGNhcmUgb2YgdGhlbSBncmFkdWFsbHkuIEFmdGVyIGFsbCBjYWxs
IHNpdGVzCiAgICAgICAgaGF2ZSBiZWVuIGNoYW5nZWQgd2Ugc2hhbGwgaW1wbG1lbnQgbW9ub3Rv
bmljVGltZS4gQ3VycmVudGx5LCBleGNlcHQgZm9yCiAgICAgICAgUE9TSVggYmFzZWQgcG9ydGlu
Zywgd2UganVzdCByZWRpcmVjdCBpdCB0byBjdXJyZW50VVRDVGltZS4KCiAgICAgICAgTm8gZnVu
Y3Rpb25hbGl0eSBjaGFuZ2UsIG5vIG5ldyB0ZXN0cy4KCiAgICAgICAgKiB3dGYvQ3VycmVudFRp
bWUuY3BwOgogICAgICAgIChXVEY6OmN1cnJlbnRVVENUaW1lKToKICAgICAgICAoV1RGOjptb25v
dG9uaWNUaW1lKToKICAgICAgICAoV1RGOjpjdXJyZW50VGltZSk6CiAgICAgICAgKiB3dGYvQ3Vy
cmVudFRpbWUuaDoKICAgICAgICAoV1RGOjpjdXJyZW50VVRDVGltZU1TKToKICAgICAgICAoV1RG
OjpjdXJyZW50VGltZU1TKToKICAgICAgICAoV1RGOjpnZXRMb2NhbFRpbWUpOgogICAgICAgICog
c3JjL0Nocm9taXVtQ3VycmVudFRpbWUuY3BwOgogICAgICAgIChXVEY6OmN1cnJlbnRVVENUaW1l
KToKICAgICAgICAoV1RGOjptb25vdG9uaWNUaW1lKToKICAgICAgICAoV1RGOjpjdXJyZW50VGlt
ZSk6Ci0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgfCAgIDI5ICsrKysrKwogLi4uL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiAg
ICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuY3BwICAgICAgICAgIHwgICA5NiArKysrKysrKysrKysrKysrKystLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oICAgICAgICAgICAgfCAgIDU4ICsrKysrKysrLS0t
LQogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCAg
IDI0ICsrKysrCiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWl1bUN1cnJlbnRUaW1l
LmNwcCB8ICAgMTYgKysrLQogNiBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgMjYg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjJlNzRjMy4uNzAzYTNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDEtMjcg
IExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBkZXBlbmRlbmN5IG9mIGpz
Q3VycmVudFRpbWUoKSBvbiBjdXJyZW50VGltZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0MworCisgICAgICAgIFJlbmFtZSBjdXJyZW50VGlt
ZSB0byBjdXJyZW50VVRDVGltZSBhbmQga2VlcCBjdXJyZW50VGltZSBmb3IgYSB3aGlsZS4KKyAg
ICAgICAgUmVuYW1lIGN1cnJlbnRUaW1lTVMgdG8gY3VycmVudFVUQ1RpbWVNUyBhbmQga2VlcCBj
dXJyZW50VGltZU1TIGZvciBhCisgICAgICAgIHdoaWxlLiBUaGUgcmVhc29uIG9mIGtlZXBpbmcg
Y3VycmVudFRpbWUgYW5kIGN1cnJlbnRUaW1lTVMgaXMgdGhhdCB0aGlzCisgICAgICAgIHBhdGNo
IGRvZXNuJ3QgY2hhbmdlIHRoZSBjYWxsIHNpdGVzIHlldC4gT3RoZXIgY29taW5nIHBhdGNoZXMg
d2lsbCBjaGFuZ2UKKyAgICAgICAgbGFyZ2UgbnVtYmVyIG9mIGNhbGwgc2l0ZXMgZ3JhZHVhbGx5
LgorICAgICAgICBBZGQgbW9ub3RvbmljVGltZSB0byByZXBsYWNlIGN1cnJlbnRUaW1lIHdoZXJl
IG1vbm90b25pYyB0aW1lIHNob3VsZCBiZQorICAgICAgICB1c2VkLiBUaGlzIHBhdGNoIGRvZXNu
J3QgY2hhbmdlIHRoaXMga2luZCBvZiBjYWxsIHNpdGUgZWl0aG9yLiBPdGhlcgorICAgICAgICBj
b21pbmcgcGF0Y2hlcyB3aWxsIHRha2UgY2FyZSBvZiB0aGVtIGdyYWR1YWxseS4gQWZ0ZXIgYWxs
IGNhbGwgc2l0ZXMKKyAgICAgICAgaGF2ZSBiZWVuIGNoYW5nZWQgd2Ugc2hhbGwgaW1wbG1lbnQg
bW9ub3RvbmljVGltZS4gQ3VycmVudGx5LCBleGNlcHQgZm9yCisgICAgICAgIFBPU0lYIGJhc2Vk
IHBvcnRpbmcsIHdlIGp1c3QgcmVkaXJlY3QgaXQgdG8gY3VycmVudFVUQ1RpbWUuCisKKyAgICAg
ICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UsIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHd0
Zi9DdXJyZW50VGltZS5jcHA6CisgICAgICAgIChXVEY6OmN1cnJlbnRVVENUaW1lKToKKyAgICAg
ICAgKFdURjo6bW9ub3RvbmljVGltZSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKFdURjo6Y3VycmVudFVUQ1RpbWVN
Uyk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lTVMpOgorICAgICAgICAoV1RGOjpnZXRMb2Nh
bFRpbWUpOgorCiAyMDExLTAxLTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDAxMzczNmEuLjYzNGI0Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCkBAIC0xMDcsNiArMTA3LDcgQEAgRVhQT1JUUwogICAgID9jcmVhdGVUeXBlRXJyb3JASlND
QEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCiAgICAgP2N1
cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgID9jdXJyZW50VGltZUBXVEZAQFlBTlhaCisgICAg
P2N1cnJlbnRVVENUaW1lQFdURkBAWUFOWFoKICAgICA/ZGF0YUBDU3RyaW5nQFdURkBAUUJFUEJE
WFoKICAgICA/ZGF0ZVRvRGF5c0Zyb20xOTcwQFdURkBAWUFOSEhIQFoKICAgICA/ZGF5SW5Nb250
aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1
cnJlbnRUaW1lLmNwcAppbmRleCA1NjcyNGNiLi5kNGViMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYxLDYgKzYyLDkgQEAgZXh0ZXJu
ICJDIiB0aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqdCk7CiAjaW5jbHVkZSA8QUVFU3RkTGliLmg+
CiAjZWxzZQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3RpbWVzLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTE1Niw3ICsxNjAsNyBAQCBzdGF0aWMgYm9v
bCBxcGNBdmFpbGFibGUoKQogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLWRvdWJsZSBjdXJy
ZW50VGltZSgpCitkb3VibGUgY3VycmVudFVUQ1RpbWUoKQogewogICAgIC8vIFVzZSBhIGNvbWJp
bmF0aW9uIG9mIGZ0aW1lIGFuZCBRdWVyeVBlcmZvcm1hbmNlQ291bnRlci4KICAgICAvLyBmdGlt
ZSByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB3ZSB3YW50LCBidXQgZG9lc24ndCBoYXZlIHN1ZmZp
Y2llbnQgcmVzb2x1dGlvbi4KQEAgLTIyNCw3ICsyMjgsNyBAQCBzdGF0aWMgZG91YmxlIGN1cnJl
bnRTeXN0ZW1UaW1lKCkKICAgICByZXR1cm4gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDExNjQ0
NDczNjAwLjA7CiB9CiAKLWRvdWJsZSBjdXJyZW50VGltZSgpCitkb3VibGUgY3VycmVudFVUQ1Rp
bWUoKQogewogICAgIHN0YXRpYyBib29sIGluaXQgPSBmYWxzZTsKICAgICBzdGF0aWMgZG91Ymxl
IGxhc3RUaW1lOwpAQCAtMjQ4LDI3ICsyNTIsNjkgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAog
I2VuZGlmIC8vIFVTRShRVUVSWV9QRVJGT1JNQU5DRV9DT1VOVEVSKQogCisvLyBGSVhNRTogQWZ0
ZXIgd2UgY2hhbmdlIGFsbCBjYWxsIHNpdGVzIG9mIGN1cnJlbnRUaW1lKCkgd2hpY2ggc2hvdWxk
CisvLyB1c2UgbW9ub3RvbmljVGltZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBtb25vdG9uaWNUaW1l
IGNvcnJlY3RseS4gU28KKy8vIGZhciB3ZSBqdXN0IGFkZCBza2VsZXRvbiBoZXJlIGFuZCBsZXQg
aXQgd29yayBhcyB0aGUgY3VycmVudCBiZWhhdmlvci4KK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkK
K3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKworLy8gRklYTUU6IFRvIGJlIHJl
bW92ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgY2hhbmdlIHRvIGN1cnJlbnRVVENU
aW1lLgorZG91YmxlIGN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUo
KTsKK30KKwogI2VsaWYgUExBVEZPUk0oR1RLKQogCiAvLyBOb3RlOiBHVEsgb24gV2luZG93cyB3
aWxsIHBpY2sgdXAgdGhlIFBMQVRGT1JNKFdJTikgaW1wbGVtZW50YXRpb24gYWJvdmUgd2hpY2gg
cHJvdmlkZXMKIC8vIGJldHRlciBhY2N1cmFjeSBjb21wYXJlZCB3aXRoIFdpbmRvd3MgaW1wbGVt
ZW50YXRpb24gb2YgZ19nZXRfY3VycmVudF90aW1lOgogLy8gKGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS9jb2Rlc2VhcmNoL3A/aGw9ZW4jSEhuTlJqa3MxdDAvZ2xpYi0yLjUuMi9nbGliL2dtYWluLmMm
cT1nX2dldF9jdXJyZW50X3RpbWUpLgogLy8gTm9uLVdpbmRvd3MgR1RLIGJ1aWxkcyBjb3VsZCB1
c2UgZ2V0dGltZW9mZGF5KCkgZGlyZWN0bHkgYnV0IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5j
eSBsZXRzIHVzZSBHVEsgZnVuY3Rpb24uCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1
cnJlbnRVVENUaW1lKCkKIHsKICAgICBHVGltZVZhbCBub3c7CiAgICAgZ19nZXRfY3VycmVudF90
aW1lKCZub3cpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy50dl9zZWMpICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihub3cudHZfdXNlYyAvIDEwMDAwMDAuMCk7CiB9CiAKLSNlbGlm
IFBMQVRGT1JNKFdYKQorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyBv
ZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1vbm90b25pY1RpbWUsIHdlIHNo
b3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHkuIFNvCisvLyBmYXIgd2UganVz
dCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMgdGhlIGN1cnJlbnQgYmVoYXZp
b3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1l
KCk7Cit9CiAKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gYWxsIGNhbGxzIHRvIGN1cnJl
bnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KIGRvdWJsZSBjdXJyZW50VGltZSgpCiB7
CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKKyNlbGlmIFBMQVRGT1JNKFdYKQor
Citkb3VibGUgY3VycmVudFVUQ1RpbWUoKQorewogICAgIHd4RGF0ZVRpbWUgbm93ID0gd3hEYXRl
VGltZTo6VU5vdygpOwogICAgIHJldHVybiAoZG91YmxlKW5vdy5HZXRUaWNrcygpICsgKGRvdWJs
ZSkobm93LkdldE1pbGxpc2Vjb25kKCkgLyAxMDAwLjApOwogfQogCisvLyBGSVhNRTogQWZ0ZXIg
d2UgY2hhbmdlIGFsbCBjYWxsIHNpdGVzIG9mIGN1cnJlbnRUaW1lKCkgd2hpY2ggc2hvdWxkCisv
LyB1c2UgbW9ub3RvbmljVGltZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBtb25vdG9uaWNUaW1lIGNv
cnJlY3RseS4gU28KKy8vIGZhciB3ZSBqdXN0IGFkZCBza2VsZXRvbiBoZXJlIGFuZCBsZXQgaXQg
d29yayBhcyB0aGUgY3VycmVudCBiZWhhdmlvci4KK2RvdWJsZSBtb25vdG9uaWNUaW1lKCkKK3sK
KyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsKK30KKworLy8gRklYTUU6IFRvIGJlIHJlbW92
ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgY2hhbmdlIHRvIGN1cnJlbnRVVENUaW1l
LgorZG91YmxlIGN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFVUQ1RpbWUoKTsK
K30KKwogI2VsaWYgUExBVEZPUk0oQlJFV01QKQogCiAvLyBHRVRVVENTRUNPTkRTIHJldHVybnMg
dGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDE5ODAvMDEvMDYgMDA6MDA6MDAgVVRDLApAQCAt
Mjc2LDIyICszMjIsNjAgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIC8vIG9jY3VycmVuY2Ugb2Yg
MDA6MDA6MDAgbG9jYWwgdGltZS4KIC8vIFdlIGNhbiBjb21iaW5lIEdFVFVUQ1NFQ09ORFMgYW5k
IEdFVFRJTUVNUyB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMKIC8vIHNp
bmNlIDE5NzAvMDEvMDEgMDA6MDA6MDAgVVRDLgotZG91YmxlIGN1cnJlbnRUaW1lKCkKK2RvdWJs
ZSBjdXJyZW50VVRDVGltZSgpCiB7CiAgICAgLy8gZGlmZlNlY29uZHMgaXMgdGhlIG51bWJlciBv
ZiBzZWNvbmRzIGZyb20gMTk3MC8wMS8wMSB0byAxOTgwLzAxLzA2CiAgICAgY29uc3QgdW5zaWdu
ZWQgZGlmZlNlY29uZHMgPSAzMTU5NjQ4MDA7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4oZGlmZlNlY29uZHMgKyBHRVRVVENTRUNPTkRTKCkgKyAoKEdFVFRJTUVNUygpICUgMTAwMCkg
LyBtc1BlclNlY29uZCkpOwogfQogCi0jZWxzZQorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBh
bGwgY2FsbCBzaXRlcyBvZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1vbm90
b25pY1RpbWUsIHdlIHNob3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHkuIFNv
CisvLyBmYXIgd2UganVzdCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMgdGhl
IGN1cnJlbnQgYmVoYXZpb3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJu
IGN1cnJlbnRVVENUaW1lKCk7Cit9CiAKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gYWxs
IGNhbGxzIHRvIGN1cnJlbnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KIGRvdWJsZSBj
dXJyZW50VGltZSgpCiB7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKKyNlbHNl
CisKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCit7CiAgICAgc3RydWN0IHRpbWV2YWwgbm93Owog
ICAgIGdldHRpbWVvZmRheSgmbm93LCAwKTsKICAgICByZXR1cm4gbm93LnR2X3NlYyArIG5vdy50
dl91c2VjIC8gMTAwMDAwMC4wOwogfQogCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAg
IC8vIHRtc1VudXNlZCBpcyBqdXN0IGZvciBzeXN0ZW0gd2hpY2ggZG9lcyBhY2NlcHQgdGltZXMo
MCkgY2FsbC4KKyAgICAgc3RhdGljIHN0cnVjdCB0bXMgdG1zVW51c2VkOworICAgICBzdGF0aWMg
ZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRVVENUaW1lKCk7CisgICAgIHN0YXRpYyBjbG9ja190
IHN0YXJ0VGlja3MgPSB0aW1lcygmdG1zVW51c2VkKTsKKyAgICAgc3RhdGljIGxvbmcgaW50IHRp
Y2tzUGVyU2Vjb25kID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7CisKKyAgICAgY2xvY2tfdCBjdXJy
ZW50VGlja3MgPSB0aW1lcygmdG1zVW51c2VkKTsKKworICAgICAvLyBPdmVyZmxvdywganVzdCBm
YWxsYmFjayB0byBjdXJyZW50VVRDVGltZSgpCisgICAgIGlmIChVTkxJS0VMWShzdGFydFRpY2tz
ID09IHN0YXRpY19jYXN0PGNsb2NrX3Q+KC0xKSB8fCBjdXJyZW50VGlja3MgPT0gc3RhdGljX2Nh
c3Q8Y2xvY2tfdD4oLTEpKSkKKyAgICAgICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOworCisg
ICAgIEFTU0VSVCh0aWNrc1BlclNlY29uZCA+IDApOworICAgICByZXR1cm4gc3RhcnRUaW1lICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihjdXJyZW50VGlja3MgLSBzdGFydFRpY2tzKSAvIHRpY2tzUGVy
U2Vjb25kOworfQorCisvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIGFsbCBjYWxscyB0byBj
dXJyZW50VGltZSBjaGFuZ2UgdG8gY3VycmVudFVUQ1RpbWUuCitkb3VibGUgY3VycmVudFRpbWUo
KQoreworICAgIHJldHVybiBjdXJyZW50VVRDVGltZSgpOworfQorCiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJl
bnRUaW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXgg
NzExOTY1Ni4uYTlkOWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9D
dXJyZW50VGltZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUu
aApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBUb3Jj
aCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwzMiArMzcsNTEgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29u
ZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCi0gICAgLy8gUHJlY2lzaW9uIHZhcmll
cyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIg
Ci0gICAgLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpOwor
Ly8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20g
SmFudWFyeSAxLCAxOTcwLgorLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZv
cm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIKKy8vIHRoYW4gYSBtaWxsaXNlY29u
ZC4KK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpOwogCi0gICAgLy8gU2FtZSB0aGluZywgaW4gbWls
bGlzZWNvbmRzLgotICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCi0gICAgewotICAg
ICAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCi0gICAgfQorLy8gRklYTUU6IFRv
IGJlIHJlbW92ZWQgd2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWUgYXJlIGNoYW5nZWQKKy8v
IHRvIGN1cnJlbnRVVENUaW1lIG9yIG1vbm90b25pY1RpbWUuCisvLyBJZiB5b3UgYXJlIGdvaW5n
IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBwbGVhc2UgY29uc2lkZXIgY3VycmVudFVUQ1RpbWUKKy8v
IG9yIG1vbnRvbmljVGltZS4KK2RvdWJsZSBjdXJyZW50VGltZSgpOwogCi0gICAgaW5saW5lIHZv
aWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2Fs
VE0pCi0gICAgewotICAgICNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgfHwgQ09NUElMRVIo
TUlOR1cpIHx8IE9TKFdJTkNFKQotICAgICAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9jYWxU
aW1lKTsKLSAgICAjZWxpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICBsb2NhbHRpbWVfcyhsb2Nh
bFRNLCBsb2NhbFRpbWUpOwotICAgICNlbHNlCi0gICAgICAgIGxvY2FsdGltZV9yKGxvY2FsVGlt
ZSwgbG9jYWxUTSk7Ci0gICAgI2VuZGlmCi0gICAgfQorLy8gU2FtZSB0aGluZywgaW4gbWlsbGlz
ZWNvbmRzLgoraW5saW5lIGRvdWJsZSBjdXJyZW50VVRDVGltZU1TKCkKK3sKKyAgICByZXR1cm4g
Y3VycmVudFVUQ1RpbWUoKSAqIDEwMDAuMDsKK30KKworLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQg
d2hlbiBhbGwgY2FsbHMgdG8gY3VycmVudFRpbWVNUyBhcmUgY2hhbmdlZAorLy8gdG8gY3VycmVu
dFVUQ1RpbWVNUworLy8gSWYgeW91IGFyZSBnb2luZyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gcGxl
YXNlIGNhbGwgY3VycmVudFVUQ1RpbWVNUy4KK2lubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygp
IHsgcmV0dXJuIGN1cnJlbnRVVENUaW1lTVMoKTsgfQorCisvLyBKdXN0IGxpa2UgY3VycmVudFVU
Q1RpbWUsIGJ1dCB0aGUgdGltZSB3aWxsIG5vdCBnbyBiYWNrd29yZCBldmVuIGlmCisvLyB0aGUg
c3lzdGVtIHRpbWUgaXMgYWRqdXN0ZWQgYmFja3dvcmQuIFRoaXMgZnVuY3Rpb24gaXMgYmFzaWNh
bGx5IHVzZWQKKy8vIHRvIGltcGxlbWVudCByZWxldGl2ZSB0aW1lIGJhc2VkIGZ1bmN0aW9uYWxp
dGllcywgZS5nLiB0aW1lciBhbmQgYW5pbWF0aW9uLgorZG91YmxlIG1vbm90b25pY1RpbWUoKTsK
KworaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1
Y3QgdG0qIGxvY2FsVE0pCit7CisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpIHx8IENPTVBJ
TEVSKE1JTkdXKSB8fCBPUyhXSU5DRSkKKyAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9jYWxU
aW1lKTsKKyNlbGlmIENPTVBJTEVSKE1TVkMpCisgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9j
YWxUaW1lKTsKKyNlbHNlCisgICAgbG9jYWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsKKyNl
bmRpZgorfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjdXJyZW50VVRDVGlt
ZTsKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7Cit1c2luZyBXVEY6OmN1cnJlbnRVVENUaW1lTVM7
CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1lTVM7Cit1c2luZyBXVEY6Om1vbm90b25pY1RpbWU7CiB1
c2luZyBXVEY6OmdldExvY2FsVGltZTsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDlkMTVhZS4uMWM2OTI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wMS0yNyAgTGVvIFlhbmcgIDxsZW8u
eWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb2YganNDdXJyZW50VGltZSgpIG9u
IGN1cnJlbnRUaW1lKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NzQzCisKKyAgICAgICAgUmVuYW1lIGN1cnJlbnRUaW1lIHRvIGN1cnJlbnRVVENU
aW1lIGFuZCBrZWVwIGN1cnJlbnRUaW1lIGZvciBhIHdoaWxlLgorICAgICAgICBUaGUgcmVhc29u
IG9mIGtlZXBpbmcgY3VycmVudFRpbWUgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdl
CisgICAgICAgIHRoZSBjYWxsIHNpdGVzIHlldC4gT3RoZXIgY29taW5nIHBhdGNoZXMgd2lsbCBj
aGFuZ2UgbGFyZ2UgbnVtYmVyIG9mCisgICAgICAgIGNhbGwgc2l0ZXMgZ3JhZHVhbGx5LgorICAg
ICAgICBBZGQgbW9ub3RvbmljVGltZSB0byByZXBsYWNlIGN1cnJlbnRUaW1lIHdoZXJlIG1vbm90
b25pYyB0aW1lIHNob3VsZCBiZQorICAgICAgICB1c2VkLiBUaGlzIHBhdGNoIGRvZXNuJ3QgY2hh
bmdlIHRoaXMga2luZCBvZiBjYWxsIHNpdGUgZWl0aG9yLiBPdGhlcgorICAgICAgICBjb21pbmcg
cGF0Y2hlcyB3aWxsIHRha2UgY2FyZSBvZiB0aGVtIGdyYWR1YWxseS4gQWZ0ZXIgYWxsIGNhbGwg
c2l0ZXMKKyAgICAgICAgaGF2ZSBiZWVuIGNoYW5nZWQgd2Ugc2hhbGwgaW1wbG1lbnQgbW9ub3Rv
bmljVGltZS4gQ3VycmVudGx5IHdlIGp1c3QKKyAgICAgICAgcmVkaXJlY3QgaXQgdG8gY3VycmVu
dFVUQ1RpbWUuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UsIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIHNyYy9DaHJvbWl1bUN1cnJlbnRUaW1lLmNwcDoKKyAgICAgICAgKFdU
Rjo6Y3VycmVudFVUQ1RpbWUpOgorICAgICAgICAoV1RGOjptb25vdG9uaWNUaW1lKToKKyAgICAg
ICAgKFdURjo6Y3VycmVudFRpbWUpOgorCiAyMDExLTAxLTI3ICBGaW5udXIgVGhvcmFyaW5zc29u
ICA8ZmlubnVyLndlYmtpdEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBW
YWZhaS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQ3Vy
cmVudFRpbWUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50
VGltZS5jcHAKaW5kZXggMWVjY2M0MS4uMDNmODU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1DdXJyZW50VGltZS5jcHAKQEAgLTM2LDkgKzM2LDIzIEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1kb3VibGUgY3VycmVudFRpbWUoKQorZG91YmxlIGN1cnJl
bnRVVENUaW1lKCkKIHsKICAgICByZXR1cm4gV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+Y3VycmVu
dFRpbWUoKTsKIH0KIAorLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBhbGwgY2FsbCBzaXRlcyBv
ZiBjdXJyZW50VGltZSgpIHdoaWNoIHNob3VsZAorLy8gdXNlIG1vbm90b25pY1RpbWUsIHdlIHNo
b3VsZCBpbXBsZW1lbnQgbW9ub3RvbmljVGltZSBjb3JyZWN0bHkuIFNvCisvLyBmYXIgd2UganVz
dCBhZGQgc2tlbGV0b24gaGVyZSBhbmQgbGV0IGl0IHdvcmsgYXMgdGhlIGN1cnJlbnQgYmVoYXZp
b3IuCitkb3VibGUgbW9ub3RvbmljVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1l
KCk7Cit9CisKKy8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gYWxsIGNhbGxzIHRvIGN1cnJl
bnRUaW1lIGNoYW5nZSB0byBjdXJyZW50VVRDVGltZS4KK2RvdWJsZSBjdXJyZW50VGltZSgpCit7
CisgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXVEYK
LS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95495</attachid>
            <date>2011-05-31 15:30:42 -0700</date>
            <delta_ts>2011-05-31 16:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37743-20110531153041.patch</filename>
            <type>text/plain</type>
            <size>4553</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc3NDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlh
NjA2MjY2NDQ1Y2VmMmZiNWI4Yzg2ZThiNTQ4NTgyNTJkMmZjMzYuLjMyZTE4MzJmYzllMjY4YTBj
ZjQyNjVkMWEyNGM3YTJiN2U1NDJkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA1LTMxICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgY3VycmVudFRpY2tDb3VudCgpIHRvIGdldCBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgdGlt
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDMK
KworICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5jcHA6IEFkZCBjdXJyZW50VGlja0NvdW50KCkg
Zm9yIG1hYyBhbmQgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiB0aGF0IGp1c3Qgd3JhcHMgY3Vy
cmVudFRpbWUoKS4KKyAgICAgICAgKFdURjo6Y3VycmVudFRpY2tDb3VudCk6CisgICAgICAgICog
d3RmL0N1cnJlbnRUaW1lLmg6IEFkZCBjdXJyZW50VGlja0NvdW50KCkuCisKIDIwMTEtMDUtMzAg
IEhvam9uZyBIYW4gIDxob2pvbmcuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DdXJyZW50VGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmNwcAppbmRleCA0MjA1MjI3NjA4NWU4MjA5ZWM4M2U5MWUxMTYwZGNhNzNjYmIxZDhmLi5iOWE0
NDZjY2YzYTFmMmExOWU1MDY4NDBmNTlhYjBmZDE2ZjUxNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcApAQCAtMzMsNyArMzMsMTAgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGltZS5oIgogCi0jaWYgT1MoV0lORE9XUykKKyNp
ZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNpbmNsdWRlIDxz
eXMvdGltZS5oPgorI2VsaWYgT1MoV0lORE9XUykKIAogLy8gV2luZG93cyBpcyBmaXJzdCBzaW5j
ZSB3ZSB3YW50IHRvIHVzZSBoaXJlcyB0aW1lcnMsIGRlc3BpdGUgVVNFKENGKQogLy8gYmVpbmcg
ZGVmaW5lZC4KQEAgLTI5NCw0ICsyOTcsMzEgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisKK3VpbnQ2NF90IGN1cnJlbnRUaWNrQ291bnQoKQor
eworICAgIC8vIEJhc2VkIG9uIGxpc3RpbmcgIzIgZnJvbSBBcHBsZSBRQSAxMzk4LgorICAgIHN0
YXRpYyBtYWNoX3RpbWViYXNlX2luZm9fZGF0YV90IHRpbWViYXNlSW5mbzsKKyAgICBpZiAoIXRp
bWViYXNlSW5mby5kZW5vbSkgeworICAgICAgICBrZXJuX3JldHVybl90IGtyID0gbWFjaF90aW1l
YmFzZV9pbmZvKCZ0aW1lYmFzZUluZm8pOworICAgICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9
PSBLRVJOX1NVQ0NFU1MpOworICAgIH0KKyAgICByZXR1cm4gKG1hY2hfYWJzb2x1dGVfdGltZSgp
ICogdGltZWJhc2VJbmZvLm51bWVyKSAvICgxMDAwICogdGltZWJhc2VJbmZvLmRlbm9tKTsKK30K
KworI2Vsc2UKKwordWludDY0X3QgY3VycmVudFRpY2tDb3VudCgpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IGxhc3RUaWNrQ291bnQgPSAwOworICAgIHVpbnQ2NF90IHRpY2tDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihjdXJyZW50VGltZU1TKCkgKiAxMDAwLjApOworICAgIGlmICh0aWNr
Q291bnQgPCBsYXN0VGlja0NvdW50KQorICAgICAgICByZXR1cm4gbGFzdFRpY2tDb3VudDsKKyAg
ICBsYXN0VGlja0NvdW50ID0gdGlja0NvdW50OworICAgIHJldHVybiB0aWNrQ291bnQ7Cit9CisK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Vy
cmVudFRpbWUuaAppbmRleCA1ZmNiNjNhODFmZGYyMDNlOWRiYjk4MjU2OTlkZWVjODYxN2UwYzNi
Li5lZmRlYmVlZjcyYTBjZWFjOWQxOGFiZDdhZWNkMGExYjQ5ZGFkN2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCkBAIC01OCwxMSArNTgsMTUgQEAgaW5saW5lIHZv
aWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2Fs
VE0pCiAjZW5kaWYKIH0KIAorLy8gUHJvdmlkZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcg
Y291bnQgb2YgbWljcm9zZWNvbmRzIHNpbmNlIGFuIGFyYml0cmFyeSBwb2ludCBpbiB0aGUgcGFz
dC4KKy8vIE9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtcywgdGhpcyBmdW5jdGlvbiBvbmx5IGd1YXJh
bnRlZXMgdGhlIHJlc3VsdCB3aWxsIGJlIG5vbi1kZWNyZWFzaW5nLgordWludDY0X3QgY3VycmVu
dFRpY2tDb3VudCgpOworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjdXJyZW50
VGltZTsKIHVzaW5nIFdURjo6Y3VycmVudFRpbWVNUzsKIHVzaW5nIFdURjo6Z2V0TG9jYWxUaW1l
OwordXNpbmcgV1RGOjpjdXJyZW50VGlja0NvdW50OwogCiAjZW5kaWYgLy8gQ3VycmVudFRpbWVf
aAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWRjM2RmOWZjMTNhMWQxN2E3M2MyMGYxOGQyYmQ2YmFkOGFiMWI4
Ni4uZWRlNDZiODI0NzZkOGIxZTFjZmE5YWEwZTIzNzg1OWEyZTNkZTdlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA1LTMxICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgY3VycmVudFRpY2tDb3VudCgpIHRvIGdldCBtb25vdG9uaWNhbGx5IGluY3JlYXNp
bmcgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzc3NDMKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1N5c3RlbVRpbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGlja0NvdW50KTogQWRkIHByaW1pdGl2ZSBj
dXJyZW50VGlja0NvdW50KCkgd2hpY2gganVzdCB3cmFwcyBjdXJyZW50VGltZSgpLgorCiAyMDEx
LTA1LTMxICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TeXN0ZW1UaW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU3lzdGVtVGltZUNocm9taXVtLmNwcAppbmRleCA5M2FjOGIxMjFkNGRjZGI3
YjFhNzg1ZGQ4YjhlM2QxYmExOWY0OTY5Li5lMDYxZWNkMzNmYThhNjYyMjE3MjgwNjY1YzE2ZmI1
OWY3OWRkOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
eXN0ZW1UaW1lQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1N5c3RlbVRpbWVDaHJvbWl1bS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0
MywxNiBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogICAgIHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6
Y3VycmVudFRpbWUoKTsKIH0KIAordWludDY0X3QgY3VycmVudFRpY2tDb3VudCgpCit7CisgICAg
c3RhdGljIHVpbnQ2NF90IGxhc3RUaWNrQ291bnQgPSAwOworICAgIHVpbnQ2NF90IHRpY2tDb3Vu
dCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50VGltZU1TKCkgKiAxMDAwLjApOworICAg
IGlmICh0aWNrQ291bnQgPCBsYXN0VGlja0NvdW50KQorICAgICAgICByZXR1cm4gbGFzdFRpY2tD
b3VudDsKKyAgICBsYXN0VGlja0NvdW50ID0gdGlja0NvdW50OworICAgIHJldHVybiB0aWNrQ291
bnQ7Cit9CisKIGZsb2F0IHVzZXJJZGxlVGltZSgpCiB7CiAgICAgLy8gTmVlZGVkIGZvciBiYWNr
L2ZvcndhcmQgY2FjaGUsIHdoaWNoIHdlIGN1cnJlbnRseSBoYXZlIGRpc2FibGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95502</attachid>
            <date>2011-05-31 16:14:30 -0700</date>
            <delta_ts>2011-06-06 16:05:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37743-20110531161429.patch</filename>
            <type>text/plain</type>
            <size>4596</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc3NDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlh
NjA2MjY2NDQ1Y2VmMmZiNWI4Yzg2ZThiNTQ4NTgyNTJkMmZjMzYuLmRlZTJmOTIwMTc0NTJmYzcx
M2Y0MWY4NjE5ZWM5MDEyYjhiZTIwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA1LTMxICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgdG8gZ2V0IG1vbm90b25pY2FsbHkgaW5j
cmVhc2luZyB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzc0MworCisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmNwcDogQWRkIG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpIGZvciBtYWMgYW5kIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRp
b24gdGhhdCBqdXN0IHdyYXBzIGN1cnJlbnRUaW1lKCkuCisgICAgICAgIChXVEY6Om1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSk6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6IEFkZCBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4KKwogMjAxMS0wNS0zMCAgSG9qb25nIEhhbiAg
PGhvam9uZy5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuY3BwCmluZGV4IDQy
MDUyMjc2MDg1ZTgyMDllYzgzZTkxZTExNjBkY2E3M2NiYjFkOGYuLmU0MmRhYmIyNWQxNzk0YmIx
NmZlNjAwNjY0NWJhYTM2ZjgxZWM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQ3VycmVudFRpbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Vy
cmVudFRpbWUuY3BwCkBAIC0zMyw3ICszMywxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkN1cnJlbnRUaW1lLmgiCiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmIFBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+Cisj
ZWxpZiBPUyhXSU5ET1dTKQogCiAvLyBXaW5kb3dzIGlzIGZpcnN0IHNpbmNlIHdlIHdhbnQgdG8g
dXNlIGhpcmVzIHRpbWVycywgZGVzcGl0ZSBVU0UoQ0YpCiAvLyBiZWluZyBkZWZpbmVkLgpAQCAt
Mjk0LDQgKzI5NywzMSBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKE1BQykKKworZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCit7Cisg
ICAgLy8gQmFzZWQgb24gbGlzdGluZyAjMiBmcm9tIEFwcGxlIFFBIDEzOTguCisgICAgc3RhdGlj
IG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2VJbmZvOworICAgIGlmICghdGltZWJh
c2VJbmZvLmRlbm9tKSB7CisgICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3RpbWViYXNl
X2luZm8oJnRpbWViYXNlSW5mbyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoa3IsIGtyID09IEtF
Uk5fU1VDQ0VTUyk7CisgICAgfQorICAgIHJldHVybiAobWFjaF9hYnNvbHV0ZV90aW1lKCkgKiB0
aW1lYmFzZUluZm8ubnVtZXIpIC8gKDEuMGU5ICogdGltZWJhc2VJbmZvLmRlbm9tKTsKK30KKwor
I2Vsc2UKKworZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCit7CisgICAgc3Rh
dGljIGRvdWJsZSBsYXN0VGltZSA9IDA7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lTm93ID0gY3Vy
cmVudFRpbWUoKTsKKyAgICBpZiAoY3VycmVudFRpbWVOb3cgPCBsYXN0VGltZSkKKyAgICAgICAg
cmV0dXJuIGxhc3RUaW1lOworICAgIGxhc3RUaW1lID0gY3VycmVudFRpbWVOb3c7CisgICAgcmV0
dXJuIGN1cnJlbnRUaW1lTm93OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggNWZjYjYzYTgxZmRmMjAz
ZTlkYmI5ODI1Njk5ZGVlYzg2MTdlMGMzYi4uNzE3NzVjMjczNTM5MzZhODRhNThlNDQ3M2U2N2Ex
Yzg5MTJhMzg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaApAQCAt
NTgsMTEgKzU4LDE1IEBAIGlubGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxv
Y2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQogI2VuZGlmCiB9CiAKKy8vIFByb3ZpZGVzIGEg
bW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBhbiBhcmJpdHJh
cnkgcG9pbnQgaW4gdGhlIHBhc3QuCisvLyBPbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMsIHRoaXMg
ZnVuY3Rpb24gb25seSBndWFyYW50ZWVzIHRoZSByZXN1bHQgd2lsbCBiZSBub24tZGVjcmVhc2lu
Zy4KK2RvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7CiB1c2luZyBXVEY6OmN1cnJlbnRUaW1l
TVM7CiB1c2luZyBXVEY6OmdldExvY2FsVGltZTsKK3VzaW5nIFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lOwogCiAjZW5kaWYgLy8gQ3VycmVudFRpbWVfaAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWRjM2RmOWZjMTNhMWQxN2E3M2MyMGYxOGQyYmQ2YmFkOGFiMWI4Ni4uYWY2MDU5NzI4OTQ5Y2Nm
YmViNGRhYzJkOWFhYTU5NzczMmI0OWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTA1LTMxICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkgdG8gZ2V0IG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyB0aW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0Mwor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU3lzdGVtVGltZUNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSk6IEFkZCBwcmltaXRp
dmUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgd2hpY2gganVzdCB3cmFwcyBjdXJyZW50
VGltZSgpLgorCiAyMDExLTA1LTMxICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TeXN0ZW1UaW1lQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU3lzdGVtVGltZUNocm9taXVtLmNwcAppbmRleCA5
M2FjOGIxMjFkNGRjZGI3YjFhNzg1ZGQ4YjhlM2QxYmExOWY0OTY5Li43NmUyNzA1YzJjOTVkNWYx
NTgwNDgxYjgwMTdmNzJlOWZhYTEyM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TeXN0ZW1UaW1lQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1N5c3RlbVRpbWVDaHJvbWl1bS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Ccmlk
Z2UuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00Miw2ICs0MywxNiBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogICAgIHJldHVybiBQ
bGF0Zm9ybUJyaWRnZTo6Y3VycmVudFRpbWUoKTsKIH0KIAorZG91YmxlIG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpCit7CisgICAgc3RhdGljIGRvdWJsZSBsYXN0VGltZSA9IDA7CisgICAg
ZG91YmxlIGN1cnJlbnRUaW1lTm93ID0gY3VycmVudFRpbWUoKTsKKyAgICBpZiAoY3VycmVudFRp
bWVOb3cgPCBsYXN0VGltZSkKKyAgICAgICAgcmV0dXJuIGxhc3RUaW1lOworICAgIGxhc3RUaW1l
ID0gY3VycmVudFRpbWVOb3c7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lTm93OworfQorCiBmbG9h
dCB1c2VySWRsZVRpbWUoKQogewogICAgIC8vIE5lZWRlZCBmb3IgYmFjay9mb3J3YXJkIGNhY2hl
LCB3aGljaCB3ZSBjdXJyZW50bHkgaGF2ZSBkaXNhYmxlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95706</attachid>
            <date>2011-06-01 19:54:54 -0700</date>
            <delta_ts>2011-06-01 19:59:31 -0700</delta_ts>
            <desc>Patch based on Leo&apos;s</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>4565</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNjA2MjYuLmNjZDY0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA2LTAyICBKYXNvbiBMaXUgIDxq
YXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGN1cnJlbnRVVENUaW1lKCkgd2hpY2gg
c2hvdWxkIGJlIHVzZWQgYnkganNDdXJyZW50VGltZSgpIGFzIGNsb2NrIAorICAgICAgICB0aW1l
LkNoYW5nZSBjdXJyZW50VGltZSgpIHdpdGggbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGNvZGVz
IG9uIFVOSVguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzc0MworICAgICAgICAKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuY3BwOgorICAgICAg
ICAoV1RGOjpjdXJyZW50VVRDVGltZSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAg
ICAgICAgKFdURjo6anNDdXJyZW50VGltZSk6CisKIDIwMTEtMDUtMzAgIEhvam9uZyBIYW4gIDxo
b2pvbmcuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdh
cmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAppbmRleCA0MjA1
MjI3Li4xYzNjMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJl
bnRUaW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNw
cApAQCAtNjEsNiArNjEsOSBAQCBleHRlcm4gIkMiIHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICp0
KTsKICNpbmNsdWRlIDxBRUVTdGRMaWIuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4K
KyNpbmNsdWRlIDxzeXMvdGltZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3
dGYvQWx3YXlzSW5saW5lLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAt
MTk5LDYgKzIwMiwxMSBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogICAgIHJldHVybiB1dGMgLyAx
MDAwLjA7CiB9CiAKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCit7CisgICAgcmV0dXJuIGN1cnJl
bnRUaW1lKCk7Cit9CisKICNlbHNlCiAKIHN0YXRpYyBkb3VibGUgY3VycmVudFN5c3RlbVRpbWUo
KQpAQCAtMjQ2LDYgKzI1NCwxMSBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogICAgIHJldHVybiB0
aW1lTm93OwogfQogCitkb3VibGUgY3VycmVudFVUQ1RpbWUoKQoreworICAgIHJldHVybiBjdXJy
ZW50VGltZSgpOworfQorCiAjZW5kaWYgLy8gVVNFKFFVRVJZX1BFUkZPUk1BTkNFX0NPVU5URVIp
CiAKICNlbGlmIFBMQVRGT1JNKEdUSykKQEAgLTI2MSw2ICsyNzQsMTEgQEAgZG91YmxlIGN1cnJl
bnRUaW1lKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3cudHZfc2VjKSArIHN0
YXRpY19jYXN0PGRvdWJsZT4obm93LnR2X3VzZWMgLyAxMDAwMDAwLjApOwogfQogCitkb3VibGUg
Y3VycmVudFVUQ1RpbWUoKQoreworICAgIHJldHVybiBjdXJyZW50VGltZSgpOworfQorCiAjZWxp
ZiBQTEFURk9STShXWCkKIAogZG91YmxlIGN1cnJlbnRUaW1lKCkKQEAgLTI2OSw2ICsyODcsMTEg
QEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKICAgICByZXR1cm4gKGRvdWJsZSlub3cuR2V0VGlja3Mo
KSArIChkb3VibGUpKG5vdy5HZXRNaWxsaXNlY29uZCgpIC8gMTAwMC4wKTsKIH0KIAorZG91Ymxl
IGN1cnJlbnRVVENUaW1lKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFRpbWUoKTsKK30KKwogI2Vs
aWYgUExBVEZPUk0oQlJFV01QKQogCiAvLyBHRVRVVENTRUNPTkRTIHJldHVybnMgdGhlIG51bWJl
ciBvZiBzZWNvbmRzIHNpbmNlIDE5ODAvMDEvMDYgMDA6MDA6MDAgVVRDLApAQCAtMjgzLDE1ICsz
MDYsMzcgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihkaWZmU2Vjb25kcyArIEdFVFVUQ1NFQ09ORFMoKSArICgoR0VUVElNRU1TKCkgJSAxMDAw
KSAvIG1zUGVyU2Vjb25kKSk7CiB9CiAKK2RvdWJsZSBjdXJyZW50VVRDVGltZSgpCit7CisgICAg
cmV0dXJuIGN1cnJlbnRUaW1lKCk7Cit9CisKICNlbHNlCiAKLWRvdWJsZSBjdXJyZW50VGltZSgp
CisvLyBBZGRlZCBjdXJyZW50VVRDVGltZSB3aGljaCBzaG91bGQgYmUgdXNlZCBieSBKU2N1cnJl
bnRUaW1lKCkuIEFuZCBjaGFuZ2VkIGN1cnJlbnRUaW1lKCkgd2l0aAorLy8gbW9ub3RvbmljYWxs
eSBJbmNyZWFzaW5nIGNvZGVzLgorZG91YmxlIGN1cnJlbnRVVENUaW1lKCkKIHsKICAgICBzdHJ1
Y3QgdGltZXZhbCBub3c7CiAgICAgZ2V0dGltZW9mZGF5KCZub3csIDApOwogICAgIHJldHVybiBu
b3cudHZfc2VjICsgbm93LnR2X3VzZWMgLyAxMDAwMDAwLjA7CiB9CiAKK2RvdWJsZSBjdXJyZW50
VGltZSgpCit7CisgICAgLy8gdG1zVW51c2VkIGlzIGp1c3QgZm9yIHN5c3RlbSB3aGljaCBkb2Vz
IGFjY2VwdCB0aW1lcygwKSBjYWxsLgorICAgIHN0YXRpYyBzdHJ1Y3QgdG1zIHRtc1VudXNlZDsK
KyAgICBzdGF0aWMgZG91YmxlIHN0YXJ0VGltZSA9IGN1cnJlbnRVVENUaW1lKCk7CisgICAgc3Rh
dGljIGNsb2NrX3Qgc3RhcnRUaWNrcyA9IHRpbWVzKCZ0bXNVbnVzZWQpOworICAgIHN0YXRpYyBs
b25nIGludCB0aWNrc1BlclNlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworICAgIGNsb2Nr
X3QgY3VycmVudFRpY2tzID0gdGltZXMoJnRtc1VudXNlZCk7CisgICAgLy8gT3ZlcmZsb3csIGp1
c3QgZmFsbGJhY2sgdG8gY3VycmVudFVUQ1RpbWUoKQorICAgIGlmIChVTkxJS0VMWShzdGFydFRp
Y2tzID09IHN0YXRpY19jYXN0PGNsb2NrX3Q+KC0xKSB8fCBjdXJyZW50VGlja3MgPT0gc3RhdGlj
X2Nhc3Q8Y2xvY2tfdD4oLTEpKSkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRVVENUaW1lKCk7Cisg
ICAgQVNTRVJUKHRpY2tzUGVyU2Vjb25kID4gMCk7CisgICAgcmV0dXJuIHN0YXJ0VGltZSArIHN0
YXRpY19jYXN0PGRvdWJsZT4oY3VycmVudFRpY2tzIC0gc3RhcnRUaWNrcykgLyB0aWNrc1BlclNl
Y29uZDsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DdXJyZW50VGltZS5oCmluZGV4IDVmY2I2M2EuLjg4OTNiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAvLyBQcmVjaXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMg
dXN1YWxseSBhcyBnb29kIG9yIGJldHRlcgogLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgogZG91Ymxl
IGN1cnJlbnRUaW1lKCk7Citkb3VibGUgY3VycmVudFVUQ1RpbWUoKTsKIAogLy8gU2FtZSB0aGlu
ZywgaW4gbWlsbGlzZWNvbmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKQEAgLTYx
LDYgKzYyLDcgQEAgaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxU
aW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjpjdXJyZW50VGltZTsKK3VzaW5nIFdURjo6Y3VycmVudFVUQ1RpbWU7CiB1c2luZyBXVEY6OmN1
cnJlbnRUaW1lTVM7CiB1c2luZyBXVEY6OmdldExvY2FsVGltZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EYXRlTWF0aC5oCmluZGV4IDJhYzI4NGUuLmM2YzY5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0RhdGVNYXRoLmgKQEAgLTY1LDcgKzY1LDcgQEAgZG91YmxlIHRpbWVDbGlwKGRvdWJs
ZSk7CiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQogewogICAgIC8vIEphdmFTY3JpcHQg
ZG9lc24ndCByZWNvZ25pemUgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gICAgcmV0dXJu
IGZsb29yKFdURjo6Y3VycmVudFRpbWVNUygpKTsKKyAgICByZXR1cm4gZmxvb3IoV1RGOjpjdXJy
ZW50VVRDVGltZSgpICogMTAwMC4wKTsKIH0KIAogY29uc3QgY2hhciAqIGNvbnN0IHdlZWtkYXlO
YW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3Vu
IiB9Owo=
</data>
<flag name="review"
          id="89259"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95723</attachid>
            <date>2011-06-01 22:41:10 -0700</date>
            <delta_ts>2011-06-01 22:41:10 -0700</delta_ts>
            <desc>Patch based on Leo&apos;s</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>1711</size>
            <attacher name="Jason Liu">jasonliuwebkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNjA2MjYuLjJiNTJlZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTA2LTAyICBKYXNvbiBMaXUgIDxq
YXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSBv
biBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzc3NDMKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuY3BwOgorICAgICAgICAoV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUpOgorCiAyMDExLTA1LTMwICBIb2pvbmcgSGFuICA8aG9q
b25nLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAKaW5kZXggNDIwNTIy
Ny4uZTBiNmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAK
QEAgLTYxLDYgKzYxLDkgQEAgZXh0ZXJuICJDIiB0aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqdCk7
CiAjaW5jbHVkZSA8QUVFU3RkTGliLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN5cy90aW1lLmg+Cisj
aW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3Rm
L0Fsd2F5c0lubGluZS5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTI5
NCw0ICsyOTcsMjIgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogI2VuZGlmCiAKKyNpZiBPUyhM
SU5VWCkKKworZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCit7CisgICAgc3Rh
dGljIHN0cnVjdCB0bXMgdG1zVW51c2VkOworICAgIHN0YXRpYyBkb3VibGUgc3RhcnRUaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICBzdGF0aWMgY2xvY2tfdCBzdGFydFRpY2tzID0gdGltZXMoJnRt
c1VudXNlZCk7CisgICAgc3RhdGljIGxvbmcgaW50IHRpY2tzUGVyU2Vjb25kID0gc3lzY29uZihf
U0NfQ0xLX1RDSyk7CisgICAgY2xvY2tfdCBjdXJyZW50VGlja3MgPSB0aW1lcygmdG1zVW51c2Vk
KTsKKyAgICAvLyBPdmVyZmxvdywganVzdCBmYWxsYmFjayB0byBjdXJyZW50VGltZSgpCisgICAg
aWYgKFVOTElLRUxZKHN0YXJ0VGlja3MgPT0gc3RhdGljX2Nhc3Q8Y2xvY2tfdD4oLTEpIHx8IGN1
cnJlbnRUaWNrcyA9PSBzdGF0aWNfY2FzdDxjbG9ja190PigtMSkpKQorICAgICAgICByZXR1cm4g
Y3VycmVudFRpbWUoKTsKKyAgICBBU1NFUlQodGlja3NQZXJTZWNvbmQgPiAwKTsKKyAgICByZXR1
cm4gc3RhcnRUaW1lICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihjdXJyZW50VGlja3MgLSBzdGFydFRp
Y2tzKSAvIHRpY2tzUGVyU2Vjb25kOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV1RG
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>