<?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>51952</bug_id>
          
          <creation_ts>2011-01-05 13:54:21 -0800</creation_ts>
          <short_desc>Animations started in the same script execution block should be synchronized.</short_desc>
          <delta_ts>2011-04-26 21:04:01 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gman</cc>
    
    <cc>hyatt</cc>
    
    <cc>kbr</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>329765</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 13:54:21 -0800</bug_when>
    <thetext>Implement mozilla&apos;s animationTime property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329777</commentid>
    <comment_count>1</comment_count>
      <attachid>78040</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 14:02:57 -0800</bug_when>
    <thetext>Created attachment 78040
patch, build systems not yet updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329779</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 14:04:29 -0800</bug_when>
    <thetext>Here&apos;s an initial patch.  I still need to add AnimationTimeController.h/cpp to the build system files for all ports and wire up the appropriate clearCurrentAnimation() calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329850</commentid>
    <comment_count>3</comment_count>
      <attachid>78058</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 16:13:29 -0800</bug_when>
    <thetext>Created attachment 78058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329858</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 16:22:22 -0800</bug_when>
    <thetext>This patch adds the new files to all build systems (I hope) and hooks up the clear...() call for the Mac port.  Please double check my edits in WebKit/mac - they appear to work as I expect based off of quick checks, but I&apos;m not very familiar with that part of the code and may be doing things in a suboptimal way or missing a case.

clearCurrentAnimationTime() is a bit subtle.  The idea is that once script queries window.webkitAnimationTime, that timestamp should be preserved through the next paint so that all imperative and declarative animations can be updated and rendered with the same time parameter.  WebCore does not control the painting/compositing logic so the embedder has to notify WebCore when it has produced a frame and the animation time can be forgotten.  I&apos;ve wired this up for Chromium and Mac, but not the other ports.

The trickiness is that it&apos;s possible that after .webkitAnimationTime is queried an arbitrary amount of time can pass before the next frame is produced, for example if the page is in a background tab or a minimized window.  It doesn&apos;t make sense to use an arbitrarily old animation time in this case, so the AnimationTimeController will reset the time itself after some timeout.  Gecko&apos;s behavior for this in background tabs is to paint a 1Hz while the page is hidden and allow animations to go out of sync by up to one second, which I think is terrible and don&apos;t intend to copy.  The timer value is set at 15ms right now so that animations can still proceed smoothly in the ports that don&apos;t currently call clearCurrentAnimationTime().  The danger of having the timeout this low is that it is more likely to fire in between the script running and the paint occuring even if the page is in the foreground which could result in declarative and imperative animations getting slightly out of sync.  I think this is something we can tweak over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329868</commentid>
    <comment_count>5</comment_count>
      <attachid>78058</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-05 16:33:58 -0800</bug_when>
    <thetext>Comment on attachment 78058
Patch

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

r=me, but think about the WebHTMLView changes.

&gt; WebKit/mac/WebView/WebHTMLView.mm:3512
&gt; +    Frame* frame = [webView _mainCoreFrame];
&gt; +    if (frame &amp;&amp; frame-&gt;page())
&gt; +        frame-&gt;page()-&gt;animationTime()-&gt;clearCurrentAnimationTime();
&gt; +    

Is it correct to call clearCurrentAnimationTime() for each subframe?

You may also want to think about whether it&apos;s appropriate to call this for printing, and when views are being snapshotted.

You should make this work in WebKit2 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329934</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 17:40:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 78058 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78058&amp;action=review
&gt; 
&gt; r=me, but think about the WebHTMLView changes.
&gt; 
&gt; &gt; WebKit/mac/WebView/WebHTMLView.mm:3512
&gt; &gt; +    Frame* frame = [webView _mainCoreFrame];
&gt; &gt; +    if (frame &amp;&amp; frame-&gt;page())
&gt; &gt; +        frame-&gt;page()-&gt;animationTime()-&gt;clearCurrentAnimationTime();
&gt; &gt; +    
&gt; 
&gt; Is it correct to call clearCurrentAnimationTime() for each subframe?

I&apos;m not quite sure what you mean.  The AnimationTimeController is per-page, so the intent here is to call clearCurrentAnimationTime() on the page associated with this WebHTMLView.  If there are multiple Frames, is there a WebHTMLView associated with each FrameView (and thus a drawRect call for each?).  If so, this should be fine (if a bit redundant).

&gt; 
&gt; You may also want to think about whether it&apos;s appropriate to call this for printing, and when views are being snapshotted.
&gt; 
&gt; You should make this work in WebKit2 as well.

Sure thing.  I believe it should be sufficient to call clearCurrentAnimationTime() after the paint in ChunkedUpdateDrawingArea::paintIntoUpdateChunk() for non-composited pages and after syncCompositingLayers() in LayerBackedDrawingArea::updateLayoutRunLoopObserverFired() for composited pages.  Does that seem appropriate?  I&apos;m not sure how to run layout tests using WebKit2 but I&apos;ve tried a few manually in MiniBrowser and they seem all right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329936</commentid>
    <comment_count>7</comment_count>
      <attachid>78081</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 17:46:21 -0800</bug_when>
    <thetext>Created attachment 78081
webkit2 support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329940</commentid>
    <comment_count>8</comment_count>
      <attachid>78081</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-05 17:54:45 -0800</bug_when>
    <thetext>Comment on attachment 78081
webkit2 support

(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 78058 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78058&amp;action=review
&gt; &gt; 
&gt; &gt; r=me, but think about the WebHTMLView changes.
&gt; &gt; 
&gt; &gt; &gt; WebKit/mac/WebView/WebHTMLView.mm:3512
&gt; &gt; &gt; +    Frame* frame = [webView _mainCoreFrame];
&gt; &gt; &gt; +    if (frame &amp;&amp; frame-&gt;page())
&gt; &gt; &gt; +        frame-&gt;page()-&gt;animationTime()-&gt;clearCurrentAnimationTime();
&gt; &gt; &gt; +    
&gt; &gt; 
&gt; &gt; Is it correct to call clearCurrentAnimationTime() for each subframe?
&gt; 
&gt; I&apos;m not quite sure what you mean.  The AnimationTimeController is per-page, so the intent here is to call clearCurrentAnimationTime() on the page associated with this WebHTMLView.  If there are multiple Frames, is there a WebHTMLView associated with each FrameView (and thus a drawRect call for each?)

In WebKit1, this is true. This is probably OK since scripts and animations won&apos;t run between painting different frames, but you may get a paint notification for a subframe when the main frame has nothing to paint.

&gt; &gt; You may also want to think about whether it&apos;s appropriate to call this for printing, and when views are being snapshotted.
&gt; &gt; 
&gt; &gt; You should make this work in WebKit2 as well.
&gt; 
&gt; Sure thing.  I believe it should be sufficient to call clearCurrentAnimationTime() after the paint in ChunkedUpdateDrawingArea::paintIntoUpdateChunk() for non-composited pages

I think ChunkedUpdateDrawingArea::display() would be better. Later optimizations may result in paintIntoUpdateChunk() being called more than once.

&gt; and after syncCompositingLayers() in LayerBackedDrawingArea::updateLayoutRunLoopObserverFired() for composited pages. 

I think syncCompositingLayers() is a better place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329942</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 18:00:35 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; In WebKit1, this is true. This is probably OK since scripts and animations won&apos;t run between painting different frames, but you may get a paint notification for a subframe when the main frame has nothing to paint.

OK, that sounds find.  I&apos;ll leave bit alone, then.

&gt; 
&gt; &gt; &gt; You may also want to think about whether it&apos;s appropriate to call this for printing, and when views are being snapshotted.
&gt; &gt; &gt; 
&gt; &gt; &gt; You should make this work in WebKit2 as well.
&gt; &gt; 
&gt; &gt; Sure thing.  I believe it should be sufficient to call clearCurrentAnimationTime() after the paint in ChunkedUpdateDrawingArea::paintIntoUpdateChunk() for non-composited pages
&gt; 
&gt; I think ChunkedUpdateDrawingArea::display() would be better. Later optimizations may result in paintIntoUpdateChunk() being called more than once.

OK.  That means I&apos;ll also need to add the call to ::setSize() as that directly calls paintIntoUpdateChunk().

&gt; 
&gt; &gt; and after syncCompositingLayers() in LayerBackedDrawingArea::updateLayoutRunLoopObserverFired() for composited pages. 
&gt; 
&gt; I think syncCompositingLayers() is a better place.

Is that always called _after_ the main content has been painted?  I can&apos;t tell quite what LayerBackedDrawingArea::m_syncTimer is supposed to do (and it&apos;s commented out currently).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329964</commentid>
    <comment_count>10</comment_count>
      <attachid>78085</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 18:27:47 -0800</bug_when>
    <thetext>Created attachment 78085
webkit2 calls moved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329970</commentid>
    <comment_count>11</comment_count>
      <attachid>78085</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-05 18:36:24 -0800</bug_when>
    <thetext>Comment on attachment 78085
webkit2 calls moved

Thanks for the review.  I&apos;ll have to land this by hand to coordinate with some chromium-side changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330232</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-06 11:07:40 -0800</bug_when>
    <thetext>Committed r75169: &lt;http://trac.webkit.org/changeset/75169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330298</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-06 12:17:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75169 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330614</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-06 19:16:15 -0800</bug_when>
    <thetext>Simon pointed out in chat that this approach doesn&apos;t work as well with hardware-driven animations as it could.  Vangelis and I discussed a different approach, I&apos;ll update this bug later tonight with details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330674</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 00:44:13 -0800</bug_when>
    <thetext>For reference: https://developer.mozilla.org/en/DOM/window.mozAnimationStartTime and the closely related https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame.  After chatting with Simon and Vangelis today, I think the approach made in my patch isn&apos;t quite ideal.

There are a few potentially useful properties of animations but it seems they are not all satisfiable at the same time:

a) Multiple animations started in the same block of script execution should be in sync
b) Software-driven and hardware-driven animations started at the same time (as far as script is concerned) should stay in sync (although the software-driven animation may be choppier)
c) The exact start times for animations should be available to script so that it can sync imperative animations with declarative animations
d) The user should be able to see the entire animation

I think (c) and (d) are in slight conflict.  Consider the following pseudo-JS:

-- start --
function startAnimation() {
  element1.style.animatedProperty = newValue;
  complexCalculationThatTakes100ms();
  element2.style.animatedProperty = newValue;
}
function updateAnimation() {
  element3.style.nonAnimatedProperty = calculateValueToMatchDeclarativeAnimation(currentTime);
}
-- end --

To satisfy properties (a) and (b), it&apos;s important that element1 and element2&apos;s animations have the same start time.  I believe this is currently the case for CoreAnimation-driven animations but not for other types (without this patch).  Additionally for the script to be able to synchronize imperative animations with element1 and element2&apos;s animations, it needs to know the start time of the animations.  For the script to sync up element3 perfectly, it also needs to know what time parameter will be used for the declarative animations for the paint following the updateAnimation() call. Mozilla&apos;s proposal (which http://trac.webkit.org/changeset/75169 roughly implemented) solves this by adding a new property mozAnimationStartTime.  The startAnimation() function can read this value to know the when the element1 and element2 animations start.  During the updateAnimation() function the value of mozAnimationStartTime is the value used for the animation updates in the subsequent paint.

The downside of this approach is that if startAnimation() takes a long time to execute (as it does in this case) the next frame isn&apos;t painted for some time after the time reported by mozAnimationStartTime/webkitAnimationTime.  Additionally there isn&apos;t a great way to calculate the value of mozAnimationStartTime for updateAnimation() if that function takes a long time to complete.  In both cases we have to end up either fibbing to the script or cutting off the start of the animation.  This doesn&apos;t seem so good.

Therefore, instead of exposing a time to script I think it makes more sense to store an internal timestamp for synchronizing animations but only expose it to script via transitionstart events.  We can start animations after script finishes executing to ensure that the user sees the start of the animation no matter how long the script takes to execute, and also to sync the start time with CoreAnimation or other compositing systems.  I don&apos;t think there is any way to provide a better value to updateAnimations() than the current time, and that&apos;s probably OK.  This should end up satisfying (a), (b), and (d).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330784</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-07 08:48:54 -0800</bug_when>
    <thetext>I think I came to the same conclusion last night. Doesn&apos;t this imply that you&apos;re only implementing something like window.mozRequestAnimationFrame(), and not mozAnimationStartTime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330790</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 08:59:44 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I think I came to the same conclusion last night. Doesn&apos;t this imply that you&apos;re only implementing something like window.mozRequestAnimationFrame(), and not mozAnimationStartTime?

Yes, and additionally not providing a timestamp to the mozRequestAnimationFrame() equivalent.  Should make things easier to spec at least!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330795</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-07 09:10:01 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I think I came to the same conclusion last night. Doesn&apos;t this imply that you&apos;re only implementing something like window.mozRequestAnimationFrame(), and not mozAnimationStartTime?
&gt; 
&gt; Yes, and additionally not providing a timestamp to the mozRequestAnimationFrame() equivalent.  Should make things easier to spec at least!

Not providing a timestamp to the callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330818</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-07 09:43:22 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; For reference: https://developer.mozilla.org/en/DOM/window.mozAnimationStartTime and the closely related https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame.  After chatting with Simon and Vangelis today, I think the approach made in my patch isn&apos;t quite ideal.
&gt; 
&gt; There are a few potentially useful properties of animations but it seems they are not all satisfiable at the same time:
&gt; 
&gt; a) Multiple animations started in the same block of script execution should be in sync
&gt; b) Software-driven and hardware-driven animations started at the same time (as far as script is concerned) should stay in sync (although the software-driven animation may be choppier)
&gt; c) The exact start times for animations should be available to script so that it can sync imperative animations with declarative animations
&gt; d) The user should be able to see the entire animation



I&apos;m not sure what it (d) means. There can be times when the user sees no animation at all. This would happen, for instance, if it is a software animation with a short duration where rendering a frame takes longer than the duration. The animation sync we added to AnimationController simply makes sure that hardware and software animations fired in the same style change pass have the same start time. There are times where this is useful in just keeping 2 software animations in sync as well. In your example below, with all software animations and no sync you&apos;d see one animation 100ms ahead of the other. With sync, they will both have the same start time, which is the time the style change cycle ended.

With hardware animations all the software animations are still in sync, but their start time is the the start time of the first hardware animation that fires its notification that it has started. We make an assumption that all hardware animations started in the same frame will have the same start start time. This is true in both our Windows and Mac implementations.



&gt; 
&gt; I think (c) and (d) are in slight conflict.  Consider the following pseudo-JS:
&gt; 
&gt; -- start --
&gt; function startAnimation() {
&gt;   element1.style.animatedProperty = newValue;
&gt;   complexCalculationThatTakes100ms();
&gt;   element2.style.animatedProperty = newValue;
&gt; }
&gt; function updateAnimation() {
&gt;   element3.style.nonAnimatedProperty = calculateValueToMatchDeclarativeAnimation(currentTime);
&gt; }
&gt; -- end --
&gt; 
&gt; To satisfy properties (a) and (b), it&apos;s important that element1 and element2&apos;s animations have the same start time.  I believe this is currently the case for CoreAnimation-driven animations but not for other types (without this patch).  



That&apos;s not so. In a pure software animation system, all animations will get the same start time. Here&apos;s how AnimationController works:

1) Style resolution for all elements starts. beginAnimationUpdate() is called.
2) For each element that has had a style change, AnimationController::updateAnimations is called with the old and new style
3) If a property with a transition has changed or an animation is found that hasn&apos;t started and should start, we put it in a &quot;waiting for start time&quot; state.
4) Putting it in this state also adds it to a list of animations that are waiting for a start time.
5) If a notifyAnimationStarted call is made, it means a hardware animation has started and we flush out all the waiters and give them this start time.
6) Style resolution for all elements completes. endAnimationUpdate() is called
7) When endAnimationUpdate() is called, if there are still waiters they are flushed with the current time.



&gt; Therefore, instead of exposing a time to script I think it makes more sense to store an internal timestamp for synchronizing animations but only expose it to script via transitionstart events.  We can start animations after script finishes executing to ensure that the user sees the start of the animation no matter how long the script takes to execute, and also to sync the start time with CoreAnimation or other compositing systems.  I don&apos;t think there is any way to provide a better value to updateAnimations() than the current time, and that&apos;s probably OK.  This should end up satisfying (a), (b), and (d).



Are you saying that the only way an author can get a start time is from transitionStart? What if the author doing animations purely with Mozilla calls? Or am I missing something?

It seems to me that AnimationController should be the authority for timing. The problem is when beginAnimationUpdate() and endAnimationUpdate() methods are called to bracket the calls. I&apos;m not sure how JS calls and style resolution relate temporally. Do the JS calls all happen between when style resolution starts and when it finishes? Anyway, I think if we can get the begin/end brackets right and always ask AnimationController for the time we should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331003</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 14:12:42 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #15)
&gt; &gt; For reference: https://developer.mozilla.org/en/DOM/window.mozAnimationStartTime and the closely related https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame.  After chatting with Simon and Vangelis today, I think the approach made in my patch isn&apos;t quite ideal.
&gt; &gt; 
&gt; &gt; There are a few potentially useful properties of animations but it seems they are not all satisfiable at the same time:
&gt; &gt; 
&gt; &gt; a) Multiple animations started in the same block of script execution should be in sync
&gt; &gt; b) Software-driven and hardware-driven animations started at the same time (as far as script is concerned) should stay in sync (although the software-driven animation may be choppier)
&gt; &gt; c) The exact start times for animations should be available to script so that it can sync imperative animations with declarative animations
&gt; &gt; d) The user should be able to see the entire animation
&gt; 
&gt; 
&gt; 
&gt; I&apos;m not sure what it (d) means. There can be times when the user sees no animation at all. This would happen, for instance, if it is a software animation with a short duration where rendering a frame takes longer than the duration. The animation sync we added to AnimationController simply makes sure that hardware and software animations fired in the same style change pass have the same start time. There are times where this is useful in just keeping 2 software animations in sync as well. In your example below, with all software animations and no sync you&apos;d see one animation 100ms ahead of the other. With sync, they will both have the same start time, which is the time the style change cycle ended.

Right.  The difficulty is that style changes can be evaluated while script is still running, which leads to odd results.  Looking at your comments below, though, I think it&apos;s actually relatively easy to rationalize this.

&gt; 
&gt; With hardware animations all the software animations are still in sync, but their start time is the the start time of the first hardware animation that fires its notification that it has started. We make an assumption that all hardware animations started in the same frame will have the same start start time. This is true in both our Windows and Mac implementations.

Yeah - that seems necessary.

&gt; 
&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; I think (c) and (d) are in slight conflict.  Consider the following pseudo-JS:
&gt; &gt; 
&gt; &gt; -- start --
&gt; &gt; function startAnimation() {
&gt; &gt;   element1.style.animatedProperty = newValue;
&gt; &gt;   complexCalculationThatTakes100ms();
&gt; &gt;   element2.style.animatedProperty = newValue;
&gt; &gt; }
&gt; &gt; function updateAnimation() {
&gt; &gt;   element3.style.nonAnimatedProperty = calculateValueToMatchDeclarativeAnimation(currentTime);
&gt; &gt; }
&gt; &gt; -- end --
&gt; &gt; 
&gt; &gt; To satisfy properties (a) and (b), it&apos;s important that element1 and element2&apos;s animations have the same start time.  I believe this is currently the case for CoreAnimation-driven animations but not for other types (without this patch).  
&gt; 
&gt; 
&gt; 
&gt; That&apos;s not so. In a pure software animation system, all animations will get the same start time. Here&apos;s how AnimationController works:

Not if complexCalculationThatTakes100ms() forces a style recalculation (which is really easy to do from javascript, just touch any property that requires layout to be up to date).  This behavior seems like a bug, though.

&gt; 
&gt; 1) Style resolution for all elements starts. beginAnimationUpdate() is called.
&gt; 2) For each element that has had a style change, AnimationController::updateAnimations is called with the old and new style
&gt; 3) If a property with a transition has changed or an animation is found that hasn&apos;t started and should start, we put it in a &quot;waiting for start time&quot; state.
&gt; 4) Putting it in this state also adds it to a list of animations that are waiting for a start time.
&gt; 5) If a notifyAnimationStarted call is made, it means a hardware animation has started and we flush out all the waiters and give them this start time.
&gt; 6) Style resolution for all elements completes. endAnimationUpdate() is called
&gt; 7) When endAnimationUpdate() is called, if there are still waiters they are flushed with the current time.
&gt; 

Thanks for the clear overview - I didn&apos;t quite understand everything that was going on in AnimationController.  I think the reason I&apos;m seeing some out of sync animations is that the &quot;waiting for start time&quot; mechanism does not always wait long enough for software driven animations.  In particular, if style resolution happens during script execution then step (7) will flush the start time for software animations potentially prematurely.  What we should do is wait for the script to finish executing before resolving the start time for waiters so that all software animations started in the same script run can get the same start time and, if any hardware driven animations are also started in the same run, the software animations can adopt the same start time as hardware driven animations.

&gt; 
&gt; 
&gt; &gt; Therefore, instead of exposing a time to script I think it makes more sense to store an internal timestamp for synchronizing animations but only expose it to script via transitionstart events.  We can start animations after script finishes executing to ensure that the user sees the start of the animation no matter how long the script takes to execute, and also to sync the start time with CoreAnimation or other compositing systems.  I don&apos;t think there is any way to provide a better value to updateAnimations() than the current time, and that&apos;s probably OK.  This should end up satisfying (a), (b), and (d).
&gt; 
&gt; 
&gt; 
&gt; Are you saying that the only way an author can get a start time is from transitionStart? What if the author doing animations purely with Mozilla calls? Or am I missing something?
&gt; 
&gt; It seems to me that AnimationController should be the authority for timing. The problem is when beginAnimationUpdate() and endAnimationUpdate() methods are called to bracket the calls. I&apos;m not sure how JS calls and style resolution relate temporally. Do the JS calls all happen between when style resolution starts and when it finishes? Anyway, I think if we can get the begin/end brackets right and always ask AnimationController for the time we should be fine.

Style resolution can be interleaved with JS calls (and often is).  My actual test page looks like this:

element1.style.left=&apos;600px&apos;;
document.body.offsetTop; // force style recalc
busyLoopMs(150);
element2.style.left=&apos;600px&apos;;

If instead of resolving start times for software driven animations in the endAnimationUpdate() call we did it via an async mechanism that synchronized with hardware driven animations (if there were any) then it sounds like everything would work out perfectly.  I&apos;ll see about implementing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331016</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 14:32:41 -0800</bug_when>
    <thetext>Committed r75276: &lt;http://trac.webkit.org/changeset/75276&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331019</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 14:35:47 -0800</bug_when>
    <thetext>Patch was reverted, reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331020</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 14:37:32 -0800</bug_when>
    <thetext>Changing the bug title since I think we&apos;ve decided not to implement mozilla&apos;s API directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331033</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-07 14:58:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75276 might have broken Qt Windows 32-bit Release, Qt Windows 32-bit Debug, and Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331142</commentid>
    <comment_count>25</comment_count>
      <attachid>78301</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-07 19:27:51 -0800</bug_when>
    <thetext>Created attachment 78301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331936</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-10 14:14:17 -0800</bug_when>
    <thetext>I&apos;m concerned about the current bracketing being done by beginAnimationUpdate()/endAnimationUpdate(). Seems like it would break sync if a midline styleChange (calling e.g., offsetTop to get a styleRecalc in the middle of the frame) is done.

Have you tested in the 3 environments (WebKit HW anim, Chrome HW anim, pure SW anim)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331938</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-01-10 14:18:16 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; I&apos;m concerned about the current bracketing being done by beginAnimationUpdate()/endAnimationUpdate(). Seems like it would break sync if a midline styleChange (calling e.g., offsetTop to get a styleRecalc in the middle of the frame) is done.

I&apos;m not quite sure what you mean here - could you describe an example?  The path that SW animations take now is essentially the same as what HW animations took before - they remain in the pending start state until a callback fires.

&gt; 
&gt; Have you tested in the 3 environments (WebKit HW anim, Chrome HW anim, pure SW anim)?

I&apos;ve tested pure SW animations and mixes of HW and software animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343573</commentid>
    <comment_count>28</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-01 15:02:22 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393109</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-26 17:00:24 -0700</bug_when>
    <thetext>You should revisit the patch. Dean has made some pretty significant changes in this part of the code. The code and maybe the technique you&apos;re using will likely have to change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393209</commentid>
    <comment_count>30</comment_count>
      <attachid>78301</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-26 18:11:39 -0700</bug_when>
    <thetext>Comment on attachment 78301
Patch

r- per Chris&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393302</commentid>
    <comment_count>31</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-26 21:04:01 -0700</bug_when>
    <thetext>The test (animation-sync) still fails on ToT, so I think some solution is still needed here.  I&apos;ll try to revive this patch against ToT when I get some time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78040</attachid>
            <date>2011-01-05 14:02:57 -0800</date>
            <delta_ts>2011-01-05 16:13:25 -0800</delta_ts>
            <desc>patch, build systems not yet updated</desc>
            <filename>bug-51952-20110105140255.patch</filename>
            <type>text/plain</type>
            <size>24016</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTRiNWJiYWJjM2JiYmI2YzI4NGU1YjdiMjdkZDFlYzhmOWMzNzI0Li40NTEyZTEy
YjJhOWU5NjFiMmI2Y2EzYTIyNjc5Y2MzNDlmYTY4MjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDEtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbW96
aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTUyCisKKyAgICAgICAgVGVzdHMgZm9yIHdpbmRvdy53
ZWJraXRBbmltYXRpb25UaW1lLgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vYW5pbWF0aW9u
LXRpbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9hbmlt
YXRpb24tdGltZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXNvdXJj
ZXMvYW5pbWF0aW9uLXRpbWUuanM6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9hbmltYXRpb24tdGltZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9hbmltYXRpb24tdGltZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZjMjM1M2QwYzg3NjA0YjNiMmNhM2QyMWQwZTY3Zjc4
MDU4YzE4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Fu
aW1hdGlvbi10aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHdp
bmRvdy53ZWJraXRBbmltYXRpb25UaW1lIHJlbWFpbnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0
IHJ1biBhbmQgdGhhdCBhbGwgYW5pbWF0aW9ucyBzdGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4g
YXJlIHN5bmNocm9uaXplZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
dGFydEFuaW1hdGlvblRpbWUgaXMgZGVmaW5lZC4KK1BBU1Mgc3RhcnRBbmltYXRpb25UaW1lIGlz
IGVuZEFuaW1hdGlvblRpbWUKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVm
dCBpcyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYyKS5sZWZ0CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9hbmltYXRpb24vYW5pbWF0aW9uLXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL2FuaW1hdGlvbi10aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZmYjBlODllZmMyMTgz
OTA1Y2Y1ZmM2ZDZiZTZjYTU4MDg1M2U4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvYW5pbWF0aW9uL2FuaW1hdGlvbi10aW1lLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZCB7CisgICAg
cG9zaXRpb246YWJzb2x1dGU7CisgICAgbGVmdDowcHg7Cit9CisKKy5kLmFuaW1hdGVkIHsKKyAg
ICBsZWZ0OjEwMHB4OworICAgICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMC4xcyBsaW5lYXI7
CisgICAgIC1tb3otdHJhbnNpdGlvbjogbGVmdCAwLjFzIGxpbmVhcjsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJkIiBpZD0iZGl2MSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJk
IiBpZD0iZGl2MiI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10aW1l
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9hbmltYXRpb24tdGltZS5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9hbmltYXRpb24tdGltZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZmNmMzEyNDMxNzRkMTZmMmE2YjAwNjdhYjI0ZTQ1ZTRiYmRlZTRiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL2FuaW1hdGlvbi10aW1lLmpz
CkBAIC0wLDAgKzEsMjggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRB
bmltYXRpb25UaW1lIHJlbWFpbnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhh
dCBhbGwgYW5pbWF0aW9ucyBzdGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9u
aXplZCIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZGl2MSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkaXYxIik7Cit2YXIgZGl2MiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaXYyIik7CisKK2RpdjEuY2xhc3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKK2RvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOyAvLyBGb3JjZSBhIHN0eWxlIHJlY2FsYyB0byBzdGFydCB0aGUg
Zmlyc3QgYW5pbWF0aW9uLgorCit2YXIgc3RhcnRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtp
dEFuaW1hdGlvblRpbWU7CitzaG91bGRCZURlZmluZWQoJ3N0YXJ0QW5pbWF0aW9uVGltZScpOwor
Cit2YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKK3doaWxlIChEYXRlLm5vdygpIC0gc3RhcnRU
aW1lIDwgMTApIHt9CisKK3ZhciBlbmRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1h
dGlvblRpbWU7CisvLyBUZXN0IHRoYXQgdGhlIHdlYmtpdEFuaW1hdGlvblRpbWUgdmFsdWUgaGFz
bid0IGNoYW5nZWQgb3V0IGZyb20gdW5kZXIgdXMuCitzaG91bGRCZSgnc3RhcnRBbmltYXRpb25U
aW1lJywgJ2VuZEFuaW1hdGlvblRpbWUnKTsKKworLy8gU3RhcnQgYSBzZWNvbmQgZGVjbGFyYXRp
dmUgYW5pbWF0aW9uIH4xMG1zIGFmdGVyIHRoZSBmaXJzdCBvbmUuICBUaGV5IHNob3VsZCBiZSBp
biBzeW5jLgorZGl2Mi5jbGFzc0xpc3QuYWRkKCJhbmltYXRlZCIpOworCit3aW5kb3cuc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZGl2MSkubGVmdCcsICd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYyKS5sZWZ0Jyk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9LCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkw
MDk2YjAzMjZkMTI3NmY5OGNiZDQ3YTM0YTljMjU4MjhhMDM4MjcuLjFjNGI0MDA5YzJlYTFhOTE3
NzBlYWY0MDRjYmNjZjNhNGJmOGRjOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0wNSAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBtb3ppbGxhJ3MgYW5pbWF0aW9uVGltZSBw
cm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTE5NTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKToKKwogMjAx
MS0wMS0wMyAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAppbmRleCA4NDkzMTJjNGIwNWVkYjgyMzRmYzBjNzU2MTRiYTk2MWQwMjhmMTBh
Li5iYmMzMmZjNWFkZDlmNjU0NmEyZTc0ODc5ZGIyODdmZDliMWMzMGJhIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNDgyLDYgKzE0ODIs
NyBAQCB2b2lkIFdlYlZpZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKICAgICAgICAg
cGFpbnRSZWN0KHJlY3QpOwogICAgIH0KICAgICBBU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgp
KTsKKyAgICB3ZWJXaWRnZXQoKS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiBQ
bGF0Zm9ybUNhbnZhcyogV2ViVmlld0hvc3Q6OmNhbnZhcygpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1ZjI5MTMzMGJiZjFlNDUxNzQw
MmRjZDA3ZjRkMzIzNTU4YTliZWQuLjQyYWQwMzkxZDRmNGYxYmZlOTQ4Yzk0YTM0ZjgzMDdhMDJj
MzNkMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDEtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnQgbW96aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTUyCisKKyAgICAg
ICAgSW1wbGVtZW50cyBtb3ppbGxhJ3MgYW5pbWF0aW9uVGltZSBwcm9wZXJ0eSBhcyBkZXNjcmli
ZWQgaGVyZToKKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dp
bmRvdy5tb3pBbmltYXRpb25TdGFydFRpbWUKKyAgICAgICAgYW5kIGh0dHA6Ly9oYWNrcy5tb3pp
bGxhLm9yZy8yMDEwLzA4L21vcmUtZWZmaWNpZW50LWphdmFzY3JpcHQtYW5pbWF0aW9ucy13aXRo
LW1venJlcXVlc3RhbmltYXRpb25mcmFtZS8KKyAgICAgICAgVGhlIHByb3BlcnR5IGlzIGNhbGxl
ZCB3ZWJraXRBbmltYXRpb25UaW1lIGFzIGNhbGxpbmcgaXQgdGhlICdTdGFydCcgdGltZSBpcyBu
b3QgdmVyeSBpbmZvcm1hdGl2ZS4KKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBleHBvc2VzIGEgbm90
aW9uIG9mIGEgJ2N1cnJlbnQnIHRpbWUgdG8gdXNlIGZvciBkZWNsYXJhdGl2ZSBhbmltYXRpb25z
IGFuZCBhbGxvd3MKKyAgICAgICAgc2NyaXB0cyB0byBzeW5jaHJvbml6ZSBpbXBlcmF0aXZlIGFu
aW1hdGlvbnMgd2l0aCBkZWNsYXJhdGl2ZSBvbmVzIGlmIHRoZXkgY2hvb3NlIHRvLiAgT25jZSBx
dWVyaWVkCisgICAgICAgIHRoaXMgdGltZSBpcyBzYXZlZCBhbmQgdXNlZCBmb3IgYWxsIGRlY2xh
cmF0aXZlIGFuaW1hdGlvbiB1cGRhdGVzIHVudGlsIHRoZSBlbWJlZGRlciBwYWludHMvY29tcG9z
aXRlcworICAgICAgICB0aGUgbmV4dCBmcmFtZSBhbmQgY2xlYXJzIGl0LCBvciA1MG1zIGVsYXBz
ZSAoaW4gY2FzZSB0aGUgZW1iZWRkZXIgaXNuJ3QgcHJvZHVjaW5nIGZyYW1lcywgZm9yIGV4YW1w
bGUKKyAgICAgICAgaWYgdGhlIHBhZ2UgaXMgaW4gYSBiYWNrZ3JvdW5kIHRhYikuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGVuc3VyZXMgdGhhdCBhbGwgZGVjbGFyYXRpdmUgYW5pbWF0aW9u
cyBzdGFydGVkIGluIHRoZSBzYW1lIHNjcmlwdCBleGVjdXRpb24gYmxvY2sKKyAgICAgICAgYXJl
IHN5bmNocm9uaXplZCBldmVuIGlmIHNvbWUgdGltZSBlbGFwc2VzIHdoaWxlIHNjcmlwdCBpcyBy
dW5uaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3QvYW5pbWF0aW9uL2FuaW1hdGlvbi10aW1lLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdEFuaW1hdGlvblRpbWUpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRs
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmN1
cnJlbnRBbmltYXRpb25UaW1lKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YW5pbWF0aW9uVGltZSk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6
OkFuaW1hdGlvblRpbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVDb250cm9sbGVyOjp+QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OmN1cnJlbnRBbmltYXRpb25UaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpjbGVhckN1cnJlbnRBbmltYXRp
b25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpjbGVh
ckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y3JlYXRlKToKKwogMjAxMS0wMS0wNCAgVG9ueSBHZW50
aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA3MGQzYmRmMmEyNDdlZjNiNDA0ZjI4ZTlhMjU3NDAwMjk0ZDBmYmY5Li40OTRk
YTk4NzY0MjQ2ZmY0OWIyZDAwMDQ1Yzc5NjdlNmI5MzZkMThiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjIxOSw2ICsyMjE5
LDggQEAKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5o
JywKKyAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5j
cHAnLAorICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oJywKICAg
ICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAnLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCAzNDk3ZjEzMTc3MGE1ZWRiZDJmY2IwNzZhYTYwYTczMzY1M2Y1YjliLi4wYWI4
OTEyNGUwZWVlZjczNmM3Y2Y0ZWY4NTAxYzUyN2JkMTQ1MWRiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
MTQ2NCw2ICsxNDY0LDEzIEBAIHZvaWQgRE9NV2luZG93OjpjbGVhckludGVydmFsKGludCB0aW1l
b3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoY29udGV4dCwgdGltZW91dElkKTsKIH0K
IAorRE9NVGltZVN0YW1wIERPTVdpbmRvdzo6d2Via2l0QW5pbWF0aW9uVGltZSgpCit7CisgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRTZWNvbmRzVG9E
T01UaW1lU3RhbXAoZi0+Y3VycmVudEFuaW1hdGlvblRpbWUoKSk7CisgICAgcmV0dXJuIGNvbnZl
cnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSk7Cit9CisKIGJvb2wgRE9NV2lu
ZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxYzg0ZjNjYWFkODU1MWY4NzllODk4ZmM0NTUxNjFk
MjI1ZGI4ODYyLi5kN2ZjN2Q1OWQ5ZWI5MGJlZTYxOGM5MTkxMTJmZTg5ZjFjZmMwMjhlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCkBAIC0yMzcsNiArMjM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBp
bnQgc2V0SW50ZXJ2YWwoUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+LCBpbnQgdGltZW91dCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIGNsZWFySW50ZXJ2YWwoaW50IHRpbWVvdXRJ
ZCk7CiAKKyAgICAgICAgLy8gV2ViS2l0IGFuaW1hdGlvbiBleHRlbnNpb25zCisgICAgICAgIERP
TVRpbWVTdGFtcCB3ZWJraXRBbmltYXRpb25UaW1lKCk7CisKICAgICAgICAgLy8gRXZlbnRzCiAg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggZjNhYTdiYTViZDkw
ZjI2MWU4ZTVlYmM0OGU0YWI5MTVjMGQ5NjdhYy4uMzcxODEwOGVhZDM3M2Y4YzQ3YzA0OGNmMjRh
YWM0M2RhYmQ2MGQ1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysr
IGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTIzNiw2ICsyMzYsOSBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgLy8gW0N1c3RvbV0gbG9uZyBzZXRJbnRlcnZhbChpbiBET01TdHJp
bmcgY29kZSwgaW4gbG9uZyB0aW1lb3V0KTsKICAgICAgICAgdm9pZCBjbGVhckludGVydmFsKGlu
IGxvbmcgaGFuZGxlKTsKIAorICAgICAgICAvLyBXZWJLaXQgYW5pbWF0aW9uIGV4dGVuc2lvbnMK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVRpbWVTdGFtcCB3ZWJraXRBbmltYXRpb25U
aW1lOworCiAgICAgICAgIC8vIEJhc2U2NAogICAgICAgICBET01TdHJpbmcgYXRvYihpbiBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzdHJpbmcpCiAgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg1NTIzYzY0Y2UxZTVhZDJhM2JkNWZmZDJjNDFh
NDgwYTQyZjg0NDkuLjVjNWFkMzcwMGE3ODM3OTQwNDM4ZGNmZWVlMDI5MDU2N2Q5NDc5NjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAKKyNpbmNsdWRlICJBbmltYXRpb25UaW1lQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkFwcGx5U3R5bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKQEAgLTgzLDYg
Kzg0LDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5o
IgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkBAIC03NTIsNiArNzU0LDE0IEBAIHZvaWQgRnJhbWU6OnRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQogICAgIH0KIH0KIAorZG91YmxlIEZyYW1lOjpj
dXJyZW50QW5pbWF0aW9uVGltZSgpCit7CisgICAgaWYgKFBhZ2UqIHAgPSBwYWdlKCkpCisgICAg
ICAgIHJldHVybiBwLT5hbmltYXRpb25UaW1lKCktPmN1cnJlbnRBbmltYXRpb25UaW1lKCk7Cisg
ICAgcmV0dXJuIGN1cnJlbnRUaW1lKCk7Cit9CisKKwogU3RyaW5nIEZyYW1lOjpkb2N1bWVudFR5
cGVTdHJpbmcoKSBjb25zdAogewogICAgIGlmIChEb2N1bWVudFR5cGUqIGRvY3R5cGUgPSBkb2N1
bWVudCgpLT5kb2N0eXBlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDFjZGZhODE4ODE4NzYwMWI4MDgxMjcwZmVmMDE0YjY3
YTYyZTliNmUuLjg5MmE1ZWE3YThiM2QxNWVhZjFiYzZkN2JiOWU2NDMxNDY0OGQwMjYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBA
IC0xMDcsNiArMTA3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgdHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpOwogCisgICAgICAgIGRvdWJsZSBjdXJyZW50
QW5pbWF0aW9uVGltZSgpOworCiAgICAgLy8gPT09PT09PT0gQWxsIHB1YmxpYyBmdW5jdGlvbnMg
YmVsb3cgdGhpcyBwb2ludCBhcmUgY2FuZGlkYXRlcyB0byBtb3ZlIG91dCBvZiBGcmFtZSBpbnRv
IGFub3RoZXIgY2xhc3MuID09PT09PT09CiAKICAgICAgICAgYm9vbCBpc0Rpc2Nvbm5lY3RlZCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IGE3OGNmYjc1MmU0MDRiZWZmYTUwMzJlMGY3YzY0MzYzZGUzMjg5ODEu
LmIyYzAyNDE1YTE3ZTdkYjU5ZTEyMWI5ZDBhYmJhOWFmNGNmNTQzNDAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwLDYg
KzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAKKyNpbmNs
dWRlICJBbmltYXRpb25UaW1lQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIkJhc2U2
NC5oIgpAQCAtMTU2LDYgKzE1Nyw3IEBAIFBhZ2U6OlBhZ2UoY29uc3QgUGFnZUNsaWVudHMmIHBh
Z2VDbGllbnRzKQogICAgICwgbV9zZXR0aW5ncyhhZG9wdFB0cihuZXcgU2V0dGluZ3ModGhpcykp
KQogICAgICwgbV9wcm9ncmVzcyhhZG9wdFB0cihuZXcgUHJvZ3Jlc3NUcmFja2VyKSkKICAgICAs
IG1fYmFja0ZvcndhcmRDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBCYWNrRm9yd2FyZENvbnRyb2xs
ZXIodGhpcywgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fYW5pbWF0
aW9uVGltZUNvbnRyb2xsZXIoQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OmNyZWF0ZSgpKQogICAg
ICwgbV90aGVtZShSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKHRoaXMpKQogICAgICwgbV9lZGl0
b3JDbGllbnQocGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50KQogICAgICwgbV9mcmFtZUNvdW50KDAp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCA3NDEzYmI2OTlkZjFmNzBkZWE1NDVmNTVhOGY3OWJmOWExYzU2MGI5Li4yYTA1N2MzODQx
NzMzYjc5MmY1MDQ3N2RiOTJhYjdkMTQwNTBiYzAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFuaW1hdGlvblRp
bWVDb250cm9sbGVyOwogICAgIGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKICAgICBjbGFz
cyBCYWNrRm9yd2FyZExpc3Q7CiAgICAgY2xhc3MgQ2hyb21lOwpAQCAtMTgyLDYgKzE4Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogICAgICAgICBQcm9ncmVzc1RyYWNrZXIqIHBy
b2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsgfQogICAgICAgICBCYWNr
Rm9yd2FyZENvbnRyb2xsZXIqIGJhY2tGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9y
d2FyZENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICAgICAgQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIq
IGFuaW1hdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblRpbWVDb250cm9sbGVy
LmdldCgpOyB9CiAKICAgICAgICAgZW51bSBWaWV3TW9kZSB7CiAgICAgICAgICAgICBWaWV3TW9k
ZUludmFsaWQsCkBAIC0zMjcsNiArMzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBPd25QdHI8UHJvZ3Jlc3NUcmFja2VyPiBtX3Byb2dyZXNzOwogICAgICAgICAKICAgICAgICAg
T3duUHRyPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4gbV9iYWNrRm9yd2FyZENvbnRyb2xsZXI7Cisg
ICAgICAgIE93blB0cjxBbmltYXRpb25UaW1lQ29udHJvbGxlcj4gbV9hbmltYXRpb25UaW1lQ29u
dHJvbGxlcjsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX21haW5GcmFtZTsKIAogICAgICAgICBS
ZWZQdHI8SGlzdG9yeUl0ZW0+IG1fZ2xvYmFsSGlzdG9yeUl0ZW07CkBAIC0zODAsNiArMzgzLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG1f
bm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCiAKKyAgICAgICAgZG91YmxlIG1fY3VycmVu
dEFuaW1hdGlvblRpbWU7CisKICAgICAgICAgVmlld01vZGUgbV92aWV3TW9kZTsKIAogICAgICAg
ICBWaWV3cG9ydEFyZ3VtZW50cyBtX3ZpZXdwb3J0QXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTEyODFkZDE4YTc2NTRj
M2VlNjI1MTM3YTRhNWM3ODczZDRkZmVmYS4uYTRlMDA2Mzc1NzJmMGY3NDZhNTU5NTlkNzgwZWQz
YmZmM2IwMzRmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25D
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGMKIGRv
dWJsZSBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YmVnaW5BbmltYXRpb25VcGRhdGVUaW1l
KCkKIHsKICAgICBpZiAobV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPT0gY0JlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZU5vdFNldCkKLSAgICAgICAgbV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUg
PSBjdXJyZW50VGltZSgpOworICAgICAgICBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9IG1f
ZnJhbWUtPmN1cnJlbnRBbmltYXRpb25UaW1lKCk7CiAgICAgcmV0dXJuIG1fYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uVGltZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2ZWRiYzgxMzIyNjE0NTgxNTIwMWNh
YTNlODcyYmVjODU1Y2ZmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbmltYXRpb25UaW1lQ29udHJv
bGxlci5oIgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK3N0YXRpYyBjb25zdCBk
b3VibGUgY0N1cnJlbnRBbmltYXRpb25UaW1lTm90U2V0ID0gLTE7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OkFuaW1hdGlvblRpbWVDb250cm9sbGVy
KCkKKyAgICA6IG1fY3VycmVudEFuaW1hdGlvblRpbWUoY0N1cnJlbnRBbmltYXRpb25UaW1lTm90
U2V0KQorICAgICwgbV9jbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXIodGhpcywgJkFuaW1h
dGlvblRpbWVDb250cm9sbGVyOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXJGaXJlZCkK
K3sKK30KKworQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6On5BbmltYXRpb25UaW1lQ29udHJvbGxl
cigpCit7Cit9CisKK2RvdWJsZSBBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y3VycmVudEFuaW1h
dGlvblRpbWUoKQoreworICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb25UaW1lID09IGNDdXJyZW50
QW5pbWF0aW9uVGltZU5vdFNldCkgeworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb25UaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBhbmltYXRpb24gdGltZSBh
ZnRlciA1MG1zIGlmIGl0IGhhc24ndCBiZWVuIGFscmVhZHkuCisgICAgICAgIG1fY2xlYXJDdXJy
ZW50QW5pbWF0aW9uVGltZVRpbWVyLnN0YXJ0T25lU2hvdCgwLjA1KTsKKyAgICB9CisgICAgcmV0
dXJuIG1fY3VycmVudEFuaW1hdGlvblRpbWU7Cit9CisKK3ZvaWQgQW5pbWF0aW9uVGltZUNvbnRy
b2xsZXI6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKQoreworICAgIG1fY3VycmVudEFuaW1h
dGlvblRpbWUgPSBjQ3VycmVudEFuaW1hdGlvblRpbWVOb3RTZXQ7CisgICAgaWYgKG1fY2xlYXJD
dXJyZW50QW5pbWF0aW9uVGltZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY2xlYXJDdXJy
ZW50QW5pbWF0aW9uVGltZVRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBBbmltYXRpb25UaW1lQ29u
dHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyRmlyZWQoVGltZXI8QW5pbWF0
aW9uVGltZUNvbnRyb2xsZXI+KikKK3sKKyAgICBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZUNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRy
b2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZjhkMGIzZjNmYmJmZjM1YjkyZjIxMjRmMTczMjFjNDFmOTU2
MTI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25U
aW1lQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQW5p
bWF0aW9uVGltZUNvbnRyb2xsZXJfaAorI2RlZmluZSBBbmltYXRpb25UaW1lQ29udHJvbGxlcl9o
CisKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIgOiBwdWJs
aWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEFuaW1hdGlv
blRpbWVDb250cm9sbGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBBbmltYXRpb25UaW1lQ29udHJvbGxlcik7CisgICAgfQorICAgIH5BbmltYXRpb25UaW1l
Q29udHJvbGxlcigpOworCisgICAgZG91YmxlIGN1cnJlbnRBbmltYXRpb25UaW1lKCk7CisgICAg
dm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCk7CisKK3ByaXZhdGU6CisgICAgQW5pbWF0
aW9uVGltZUNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50QW5pbWF0aW9uVGlt
ZVRpbWVyRmlyZWQoVGltZXI8QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI+Kik7CisKKyAgICBkb3Vi
bGUgbV9jdXJyZW50QW5pbWF0aW9uVGltZTsKKyAgICBUaW1lcjxBbmltYXRpb25UaW1lQ29udHJv
bGxlcj4gbV9jbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXI7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBBbmltYXRpb25UaW1lQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZWYwNThjMzNl
MmI2MTU4OWNhMzhhMzBlNDIxNWU3ODBlZmJhMmVmLi40YmRiZmE0N2M2NjZiZGRjYTc0YzMyYTZm
NDNiNzFmMzVhYWYwNjQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMS0w
NSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBtb3ppbGxhJ3MgYW5p
bWF0aW9uVGltZSBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE5NTIKKworICAgICAgICBXZWJLaXQgQVBJIHN1cHBvcnQgZm9yIHdlYmtp
dEFuaW1hdGlvblRpbWUuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Lmg6CisgICAgICAg
ICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnVJbXBsOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKToKKyAgICAgICAgKiBzcmMvV2ViUG9w
dXBNZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0wMS0wMyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVz
QHJpbS5jb20+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIENocm9taXVtIExpbnV4IFJl
bGVhc2UgYnVpbGQgYWZ0ZXIgY2hhbmdlc2V0IDc0ODk1IDxodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC83NDg5NT4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldpZGdldC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBkMDEw
MjcwNjVjOWU5MGMxNDc1NmU3Nzg3Y2EyNjZkZjY3ZWFlYzNiLi5kOWQzZTEwYTU5Yjg4NDBhODgy
NzhlMGFjYzk0ODJlZmNjYTBkYjEzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKQEAg
LTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB0byByZXNpemUgdGhlIFdlYldp
ZGdldC4KICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpID0gMDsKKwogICAgIC8v
IENhbGxlZCB0byBsYXlvdXQgdGhlIFdlYldpZGdldC4gIFRoaXMgTVVTVCBiZSBjYWxsZWQgYmVm
b3JlIFBhaW50LAogICAgIC8vIGFuZCBpdCBtYXkgcmVzdWx0IGluIGNhbGxzIHRvIFdlYldpZGdl
dENsaWVudDo6ZGlkSW52YWxpZGF0ZVJlY3QuCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0g
MDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDA4NWExNTc1
ZTU0YmYwZTdhNGFjOGU1ODc4YTAzODYwNTg5MmU1ZDkuLmU0ZTQ4YmM3MWZiMmNlYzhhYjNhNjIx
M2JhZTYzZDA2ZWRiMDgxYTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9w
dXBNZW51SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmNwcApAQCAtMTUxLDYgKzE1MSwxMCBAQCB2b2lkIFdlYlBvcHVwTWVudUltcGw6OnJlc2l6ZShj
b25zdCBXZWJTaXplJiBuZXdTaXplKQogICAgIH0KIH0KIAordm9pZCBXZWJQb3B1cE1lbnVJbXBs
OjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCkKK3sKK30KKwogdm9pZCBXZWJQb3B1cE1lbnVJ
bXBsOjpsYXlvdXQoKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
b3B1cE1lbnVJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaApp
bmRleCAyMjFiYTAzOGYyYzRjNzM2ZDY3N2ZhYmZhMzIyZTA1MWY5MDQyNjRjLi5jNTI4N2QzODEx
NzhhOWQ5ZWVlMTZlYjY0ZWQ0Y2NkZDA2MDgwMDU0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7CiAgICAgdmlydHVhbCBXZWJTaXplIHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJl
Y3QmIHJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZDc3YTViM2Y2MmYzZjk3ZTY0MzVmOWMxNDUwOWVkMGI0
OTlhMWU2Ny4uMzJhM2JjMTRlYzJiNGUyYzQ2ZmJhMmYwNzc1ZTI1ZDVjMTI4YmI4YSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQW5pbWF0aW9u
VGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJBdXRvRmlsbFBvcHVwTWVudUNsaWVudC5oIgog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBs
LmgiCkBAIC05NzcsNiArOTc4LDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBX
ZWJTaXplJiBuZXdTaXplKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmNsZWFyQ3Vy
cmVudEFuaW1hdGlvblRpbWUoKQoreworICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWlu
RnJhbWVJbXBsKCk7CisgICAgaWYgKHdlYmZyYW1lKQorICAgICAgICB3ZWJmcmFtZS0+ZnJhbWUo
KS0+cGFnZSgpLT5hbmltYXRpb25UaW1lKCktPmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsK
K30KKwogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0KCkKIHsKICAgICBXZWJGcmFtZUltcGwqIHdl
YmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IDgwYWJmODEzZWViZjk2MjE2NWUyMGU5OTUyYmRkNjljYWMwMmYxZGEuLmVhYjgxYjQ0NDEwYmE2
YWI5YzVlZjMzYTQzOWZiNWVmNjE5YjI2NGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogICAg
IHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVu
dEFuaW1hdGlvblRpbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKICAgICB2aXJ0dWFsIHZv
aWQgdGhlbWVDaGFuZ2VkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78058</attachid>
            <date>2011-01-05 16:13:29 -0800</date>
            <delta_ts>2011-01-05 17:46:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51952-20110105161328.patch</filename>
            <type>text/plain</type>
            <size>34778</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTRiNWJiYWJjM2JiYmI2YzI4NGU1YjdiMjdkZDFlYzhmOWMzNzI0Li5kZjdjNGE5
NjI4MzRlOGJjOWE4N2IzM2EzNDc4YTIzMTM0ZDEzZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDEtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbW96
aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTUyCisKKyAgICAgICAgVGVzdHMgZm9yIHdpbmRvdy53
ZWJraXRBbmltYXRpb25UaW1lLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tdGlt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLXRp
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0
aW9uLXRpbWUuanM6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRpbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2YzIzNTNkMGM4NzYwNGIzYjJjYTNkMjFkMGU2N2Y3ODA1OGMxODYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25U
aW1lIHJlbWFpbnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5p
bWF0aW9ucyBzdGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdGFydEFuaW1hdGlvblRpbWUgaXMg
ZGVmaW5lZC4KK1BBU1Mgc3RhcnRBbmltYXRpb25UaW1lIGlzIGVuZEFuaW1hdGlvblRpbWUKK1BB
U1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCBpcyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkaXYyKS5sZWZ0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGltZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tdGltZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZjY5NTAzZTBmMTkwNzlmMmY3YjYxYWI1MzM4OWM0NGMyNmIwZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmQgeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAg
IGxlZnQ6MHB4OworfQorCisuZC5hbmltYXRlZCB7CisgICAgbGVmdDoxMDBweDsKKyAgICAgLXdl
YmtpdC10cmFuc2l0aW9uOiBsZWZ0IDAuMXMgbGluZWFyOworICAgICAtbW96LXRyYW5zaXRpb246
IGxlZnQgMC4xcyBsaW5lYXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBjbGFzcz0i
ZCIgaWQ9ImRpdjEiPjwvZGl2PgorPGRpdiBjbGFzcz0iZCIgaWQ9ImRpdjIiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hbmltYXRpb24tdGltZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc2Ny
aXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvYW5pbWF0aW9uLXRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjZjMxMjQzMTc0ZDE2ZjJh
NmIwMDY3YWIyNGU0NWU0YmJkZWU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25UaW1lIHJlbWFp
bnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5pbWF0aW9ucyBz
dGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZCIpOword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYxIik7Cit2YXIgZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyIik7CisK
K2RpdjEuY2xhc3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9w
OyAvLyBGb3JjZSBhIHN0eWxlIHJlY2FsYyB0byBzdGFydCB0aGUgZmlyc3QgYW5pbWF0aW9uLgor
Cit2YXIgc3RhcnRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7Citz
aG91bGRCZURlZmluZWQoJ3N0YXJ0QW5pbWF0aW9uVGltZScpOworCit2YXIgc3RhcnRUaW1lID0g
RGF0ZS5ub3coKTsKK3doaWxlIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgMTApIHt9CisKK3Zh
ciBlbmRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7CisvLyBUZXN0
IHRoYXQgdGhlIHdlYmtpdEFuaW1hdGlvblRpbWUgdmFsdWUgaGFzbid0IGNoYW5nZWQgb3V0IGZy
b20gdW5kZXIgdXMuCitzaG91bGRCZSgnc3RhcnRBbmltYXRpb25UaW1lJywgJ2VuZEFuaW1hdGlv
blRpbWUnKTsKKworLy8gU3RhcnQgYSBzZWNvbmQgZGVjbGFyYXRpdmUgYW5pbWF0aW9uIH4xMG1z
IGFmdGVyIHRoZSBmaXJzdCBvbmUuICBUaGV5IHNob3VsZCBiZSBpbiBzeW5jLgorZGl2Mi5jbGFz
c0xpc3QuYWRkKCJhbmltYXRlZCIpOworCit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCcsICd3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYyKS5sZWZ0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMDk2YjAzMjZkMTI3NmY5OGNi
ZDQ3YTM0YTljMjU4MjhhMDM4MjcuLjY2MzY4ZmZhODBhZGU1NTBmYTU2M2U5MGFjYTY0Yjk1NTFk
YTdkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBtb3ppbGxhJ3MgYW5pbWF0aW9uVGltZSBwcm9wZXJ0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE5NTIKKworICAgICAgICBD
aHJvbWl1bSBEUlQgc3VwcG9ydCBmb3Igd2Via2l0QW5pbWF0aW9uVGltZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKToKKwogMjAxMS0wMS0wMyAgWWkgU2hlbiAg
PHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4
NDkzMTJjNGIwNWVkYjgyMzRmYzBjNzU2MTRiYTk2MWQwMjhmMTBhLi5iYmMzMmZjNWFkZDlmNjU0
NmEyZTc0ODc5ZGIyODdmZDliMWMzMGJhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNDgyLDYgKzE0ODIsNyBAQCB2b2lkIFdlYlZpZXdI
b3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKICAgICAgICAgcGFpbnRSZWN0KHJlY3QpOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgpKTsKKyAgICB3ZWJXaWRnZXQo
KS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiBQbGF0Zm9ybUNhbnZhcyogV2Vi
Vmlld0hvc3Q6OmNhbnZhcygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJD
b3JlL0FuZHJvaWQubWsKaW5kZXggMjBkYjY2NzMxNDIyN2Q2MzIzM2Y5YmVkZDg2NGJlZTY1ZDRh
MWIxOC4uNTMwZTZhMTlhNTk4OGEzZmViYTA5N2YwODNjMTFhZjAwY2U2MTdiOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNDQ2LDYg
KzQ0Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCVwKIAlw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgXAorCXBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9s
bGVyLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBcCiAJcGFn
ZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKIAlwYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWY3MTBkYjg2YTIwYTM4NThhMDI5YmQzMWRj
YjY1YzRiMTE5YmNhNC4uYTM3NjExNzM1OWMzYWU4MjA1N2Q3NjA4N2RmNmZhOTYxOTE5MzZkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMjc3LDYgKzEyNzcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCisgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRy
b2xsZXIuY3BwCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAogICAg
IHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NWYyOTEzMzBiYmYxZTQ1MTc0MDJkY2QwN2Y0ZDMyMzU1
OGE5YmVkLi4yMzkyYjU0Nzc3Yjg1YjJlOTNkMTY2YzJiNWQyNmIwZTc2YzZkMDE3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDExLTAxLTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IG1vemlsbGEncyBhbmltYXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIEltcGxlbWVudHMg
bW96aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkgYXMgZGVzY3JpYmVkIGhlcmU6CisgICAg
ICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0RPTS93aW5kb3cubW96QW5pbWF0
aW9uU3RhcnRUaW1lCisgICAgICAgIGFuZCBodHRwOi8vaGFja3MubW96aWxsYS5vcmcvMjAxMC8w
OC9tb3JlLWVmZmljaWVudC1qYXZhc2NyaXB0LWFuaW1hdGlvbnMtd2l0aC1tb3pyZXF1ZXN0YW5p
bWF0aW9uZnJhbWUvCisgICAgICAgIFRoZSBwcm9wZXJ0eSBpcyBjYWxsZWQgd2Via2l0QW5pbWF0
aW9uVGltZSBhcyBjYWxsaW5nIGl0IHRoZSAnU3RhcnQnIHRpbWUgaXMgbm90IHZlcnkgaW5mb3Jt
YXRpdmUuCisgICAgICAgIFRoaXMgcHJvcGVydHkgZXhwb3NlcyBhIG5vdGlvbiBvZiBhICdjdXJy
ZW50JyB0aW1lIHRvIHVzZSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyBhbmQgYWxsb3dzCisg
ICAgICAgIHNjcmlwdHMgdG8gc3luY2hyb25pemUgaW1wZXJhdGl2ZSBhbmltYXRpb25zIHdpdGgg
ZGVjbGFyYXRpdmUgb25lcyBpZiB0aGV5IGNob29zZSB0by4gIE9uY2UgcXVlcmllZAorICAgICAg
ICB0aGlzIHRpbWUgaXMgc2F2ZWQgYW5kIHVzZWQgZm9yIGFsbCBkZWNsYXJhdGl2ZSBhbmltYXRp
b24gdXBkYXRlcyB1bnRpbCB0aGUgZW1iZWRkZXIgcGFpbnRzL2NvbXBvc2l0ZXMKKyAgICAgICAg
dGhlIG5leHQgZnJhbWUgYW5kIGNsZWFycyBpdCwgb3IgMTVtcyBlbGFwc2UgKGluIGNhc2UgdGhl
IGVtYmVkZGVyIGlzbid0IHByb2R1Y2luZyBmcmFtZXMsIGZvciBleGFtcGxlCisgICAgICAgIGlm
IHRoZSBwYWdlIGlzIGluIGEgYmFja2dyb3VuZCB0YWIpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyBlbnN1cmVzIHRoYXQgYWxsIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMgc3RhcnRlZCBpbiB0
aGUgc2FtZSBzY3JpcHQgZXhlY3V0aW9uIGJsb2NrCisgICAgICAgIGFyZSBzeW5jaHJvbml6ZWQg
ZXZlbiBpZiBzb21lIHRpbWUgZWxhcHNlcyB3aGlsZSBzY3JpcHQgaXMgcnVubmluZy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2FuaW1hdGlvbi9hbmltYXRpb24tdGltZS5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojp3ZWJraXRBbmltYXRpb25UaW1lKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjdXJyZW50QW5pbWF0aW9u
VGltZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSk6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1l
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6
fkFuaW1hdGlvblRpbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVDb250cm9sbGVyOjpjdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0
aW9uVGltZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZUNv
bnRyb2xsZXI6OmNyZWF0ZSk6CisKIDIwMTEtMDEtMDQgIFRvbnkgR2VudGlsY29yZSAgPHRvbnln
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDQwNjMwNTRiMDM4ZmJkODZlYzQ4OGZmZGMwNDM2MTk4Y2Y5MDJhMTQuLmJkNjhhMDU1ZjllZDIw
YWZhNTYzZTgyZTA4YTBiNTJmN2M5NGVlZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE0MSw2ICsyMTQxLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIFwKKwlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9sbGVyLmNw
cCBcCisJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oIFwK
IAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXAogCVdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmggXAogCVdlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDU5M2JjNjBiZDA2ZTM2
ZmEzYTY2N2M3NjllYTgyNDljYWZkNzY3YzUuLmViNmY2ZGE1MTVhNWYyZjFiYjg1MzAyMjcwZDYw
NTY5NWVhN2EzZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTE4LDYgKzUxOCw3IEBAIF9fWk43V2ViQ29yZTIyY29u
dGV4dE1lbnVJdGVtVGFnQm9sZEV2CiBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVudEZyb21UZXh0RVBO
U181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzVGcmFtZUVqCitfX1pON1dlYkNvcmUyM0FuaW1hdGlvblRpbWVDb250cm9sbGVy
MjVjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpS
S05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29y
ZTIzUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmRDMUVQTlNfOERvY3VtZW50RU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiYmJiTlNfMTBFZGl0QWN0aW9uRQogX19aTjdX
ZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVj
dG9ySVBOU180Tm9kZUVMbTBFRUUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzBkM2JkZjJhMjQ3ZWYzYjQwNGYyOGU5YTI1NzQw
MDI5NGQwZmJmOS4uNDk0ZGE5ODc2NDI0NmZmNDliMmQwMDA0NWM3OTY3ZTZiOTM2ZDE4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIyMTksNiArMjIxOSw4IEBACiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGUuaCcsCisgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGM2MTQ4OThjYzdiZTc5YWJjZDNjNjM0MjMzMzY2ZDBjMzU1YmU3OWQuLjUy
MjMyMjQzMzdjZDIwZDExNDgwZDg3NjJkN2YxZjA3OWFiMTIxYmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTEwOSw2ICsxMTA5
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAgICAgcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
IFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTU5ZGNmNmRhODBhODU3MTg3YjExY2M4YTBl
ZmJmMzI0NWRkYWFkMy4uNDI0OTg3MjY4ZjE4Yzc3MGFkNmJhZmM2MjE3YjFlYmVlNzU1OGMzZSAx
MDA3NTUKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDE4Niw2ICsyNDE4Niwx
NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXGFuaW1hdGlvblxBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcYW5pbWF0aW9uXEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQmFySW5mby5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzgxZWExOWFkNTU1
OWI2N2UwZTI0ODMyZDVlZjlmZGNjZmQyMGE3Li4wMGYwZTNhYTJmOWZkMzNhODFhYmQwYzI4OGIy
YTU5Nzg0Y2VkZTQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTA4LDYgKzkwOCw4IEBACiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVl
RGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJ
CTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzg4OEY2RUMx
MjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgKi87IH07CiAJ
CTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4ODhGNkVEMTI4
Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsgfTsKKwkJMzhE
RjFCMzUxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4REYxQjMzMTJENTI4
NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAgKi87IH07CisJCTM4REYx
QjM2MTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzhERjFCMzQxMkQ1Mjg0MjAw
RjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8q
IEVkaXRpbmdCb3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NE
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCAqLzsgfTsKQEAgLTcyMjgsNiArNzIzMCw4IEBACiAJCTM3RkQ0Mjk3MTE4MzY4
NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmVlRGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
ODg4RjZFQzEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4ODhGNkVEMTI4Qzk4ODkw
MDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM4REYxQjMzMTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1l
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHA7IHBhdGggPSBhbmltYXRpb24vQW5pbWF0aW9uVGltZUNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzOERGMUIzNDEyRDUy
ODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaDsgcGF0aCA9IGFuaW1h
dGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0
aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzAyNSw2ICsxMzAyOSw4IEBACiAJCQkJMzE2RkUxMDkwRTZFMURBNzAw
QkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAogCQkJCTMxNkZFMTBBMEU2RTFE
QTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJMEYxNURBODkwRjNB
QUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJCQkJMzhE
RjFCMzMxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCAqLywK
KwkJCQkzOERGMUIzNDEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIu
aCAqLywKIAkJCQkzMTZGRTEwQjBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9u
LmNwcCAqLywKIAkJCQkzMTZGRTEwQzBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0
aW9uLmggKi8sCiAJCQkJMzE2RkUxMEQwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0
aW9uLmNwcCAqLywKQEAgLTE5MzE2LDYgKzE5MzIyLDcgQEAKIAkJCQkzMTZGRTExMjBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTQw
RTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMTVEQThBMEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhERjFCMzYxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRDBFRkFDOTA2
MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcw
OTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMjYwNCw2ICsyMjYxMSw3IEBACiAJCQkJNDlFOTEyQUEwRUZBQzkwNjAwOUQw
Q0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTEx
MzBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzOERGMUIzNTEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEyQUMwRUZBQzkwNjAwOUQwQ0FGIC8qIEFu
aW1hdGlvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlFNjQ5MjAwNTZF
NTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJD
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCAzNDk3ZjEzMTc3MGE1ZWRiZDJmY2IwNzZhYTYwYTczMzY1M2Y1Yjli
Li4wYWI4OTEyNGUwZWVlZjczNmM3Y2Y0ZWY4NTAxYzUyN2JkMTQ1MWRiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtMTQ2NCw2ICsxNDY0LDEzIEBAIHZvaWQgRE9NV2luZG93OjpjbGVhckludGVydmFsKGlu
dCB0aW1lb3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoY29udGV4dCwgdGltZW91dElk
KTsKIH0KIAorRE9NVGltZVN0YW1wIERPTVdpbmRvdzo6d2Via2l0QW5pbWF0aW9uVGltZSgpCit7
CisgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRTZWNv
bmRzVG9ET01UaW1lU3RhbXAoZi0+Y3VycmVudEFuaW1hdGlvblRpbWUoKSk7CisgICAgcmV0dXJu
IGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSk7Cit9CisKIGJvb2wg
RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7
CiAgICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLCB1c2VDYXB0dXJlKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxYzg0ZjNjYWFkODU1MWY4NzllODk4ZmM0
NTUxNjFkMjI1ZGI4ODYyLi40ZjY4ZWQzM2NiYzY4MTkwYmU1NzMyZjkwOGE1NDA0Y2Q1NTZlODIx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIERPTVdpbmRvd19oCiAjZGVm
aW5lIERPTVdpbmRvd19oCiAKKyNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMjM3LDYgKzIzOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50
IHNldEludGVydmFsKFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQp
OwogCisgICAgICAgIC8vIFdlYktpdCBhbmltYXRpb24gZXh0ZW5zaW9ucworICAgICAgICBET01U
aW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGltZSgpOworCiAgICAgICAgIC8vIEV2ZW50cwogICAg
ICAgICAvLyBFdmVudFRhcmdldCBBUEkKICAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGYzYWE3YmE1YmQ5MGYy
NjFlOGU1ZWJjNDhlNGFiOTE1YzBkOTY3YWMuLjM3MTgxMDhlYWQzNzNmOGM0N2MwNDhjZjI0YWFj
NDNkYWJkNjBkNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yMzYsNiArMjM2LDkgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIC8vIFtDdXN0b21dIGxvbmcgc2V0SW50ZXJ2YWwoaW4gRE9NU3RyaW5n
IGNvZGUsIGluIGxvbmcgdGltZW91dCk7CiAgICAgICAgIHZvaWQgY2xlYXJJbnRlcnZhbChpbiBs
b25nIGhhbmRsZSk7CiAKKyAgICAgICAgLy8gV2ViS2l0IGFuaW1hdGlvbiBleHRlbnNpb25zCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGlt
ZTsKKwogICAgICAgICAvLyBCYXNlNjQKICAgICAgICAgRE9NU3RyaW5nIGF0b2IoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgc3RyaW5nKQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NTUyM2M2NGNlMWU1YWQyYTNiZDVmZmQyYzQxYTQ4
MGE0MmY4NDQ5Li41YzVhZDM3MDBhNzgzNzk0MDQzOGRjZmVlZTAyOTA1NjdkOTQ3OTY1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBseVN0eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC04Myw2ICs4
NCw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIK
ICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIApAQCAtNzUyLDYgKzc1NCwxNCBAQCB2b2lkIEZyYW1lOjp0cmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAgICB9CiB9CiAKK2RvdWJsZSBGcmFtZTo6Y3Vy
cmVudEFuaW1hdGlvblRpbWUoKQoreworICAgIGlmIChQYWdlKiBwID0gcGFnZSgpKQorICAgICAg
ICByZXR1cm4gcC0+YW5pbWF0aW9uVGltZSgpLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOworICAg
IHJldHVybiBjdXJyZW50VGltZSgpOworfQorCisKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBl
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0gZG9jdW1l
bnQoKS0+ZG9jdHlwZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCAxY2RmYTgxODgxODc2MDFiODA4MTI3MGZlZjAxNGI2N2E2
MmU5YjZlLi44OTJhNWVhN2E4YjNkMTVlYWYxYmM2ZDdiYjllNjQzMTQ2NDhkMDI2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MTA3LDYgKzEwNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKIAorICAgICAgICBkb3VibGUgY3VycmVudEFu
aW1hdGlvblRpbWUoKTsKKwogICAgIC8vID09PT09PT09IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJl
bG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92ZSBvdXQgb2YgRnJhbWUgaW50byBh
bm90aGVyIGNsYXNzLiA9PT09PT09PQogCiAgICAgICAgIGJvb2wgaXNEaXNjb25uZWN0ZWQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBhNzhjZmI3NTJlNDA0YmVmZmE1MDMyZTBmN2M2NDM2M2RlMzI4OTgxLi5i
MmMwMjQxNWExN2U3ZGI1OWUxMjFiOWQwYWJiYTlhZjRjZjU0MzQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMCw2ICsy
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVk
ZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJCYXNlNjQu
aCIKQEAgLTE1Niw2ICsxNTcsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdl
Q2xpZW50cykKICAgICAsIG1fc2V0dGluZ3MoYWRvcHRQdHIobmV3IFNldHRpbmdzKHRoaXMpKSkK
ICAgICAsIG1fcHJvZ3Jlc3MoYWRvcHRQdHIobmV3IFByb2dyZXNzVHJhY2tlcikpCiAgICAgLCBt
X2JhY2tGb3J3YXJkQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQmFja0ZvcndhcmRDb250cm9sbGVy
KHRoaXMsIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX2FuaW1hdGlv
blRpbWVDb250cm9sbGVyKEFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpjcmVhdGUoKSkKICAgICAs
IG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKICAgICAsIG1fZWRpdG9y
Q2xpZW50KHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNzQxM2JiNjk5ZGYxZjcwZGVhNTQ1ZjU1YThmNzliZjlhMWM1NjBiOS4uMmEwNTdjMzg0MTcz
M2I3OTJmNTA0NzdkYjkyYWI3ZDE0MDUwYmMwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBbmltYXRpb25UaW1l
Q29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZENvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
QmFja0ZvcndhcmRMaXN0OwogICAgIGNsYXNzIENocm9tZTsKQEAgLTE4Miw2ICsxODMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KICAgICAgICAgQmFja0Zv
cndhcmRDb250cm9sbGVyKiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyLmdldCgpOyB9CisgICAgICAgIEFuaW1hdGlvblRpbWVDb250cm9sbGVyKiBh
bmltYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25UaW1lQ29udHJvbGxlci5n
ZXQoKTsgfQogCiAgICAgICAgIGVudW0gVmlld01vZGUgewogICAgICAgICAgICAgVmlld01vZGVJ
bnZhbGlkLApAQCAtMzI3LDYgKzMyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
T3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVzczsKICAgICAgICAgCiAgICAgICAgIE93
blB0cjxCYWNrRm9yd2FyZENvbnRyb2xsZXI+IG1fYmFja0ZvcndhcmRDb250cm9sbGVyOworICAg
ICAgICBPd25QdHI8QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uVGltZUNvbnRy
b2xsZXI7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9tYWluRnJhbWU7CiAKICAgICAgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBtX2dsb2JhbEhpc3RvcnlJdGVtOwpAQCAtMzgwLDYgKzM4Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBtX25v
dGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgogCisgICAgICAgIGRvdWJsZSBtX2N1cnJlbnRB
bmltYXRpb25UaW1lOworCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAgICAg
Vmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxMjgxZGQxOGE3NjU0YzNl
ZTYyNTEzN2E0YTVjNzg3M2Q0ZGZlZmEuLmE0ZTAwNjM3NTcyZjBmNzQ2YTU1OTU5ZDc4MGVkM2Jm
ZjNiMDM0ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiBkb3Vi
bGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgp
CiB7CiAgICAgaWYgKG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID09IGNCZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWVOb3RTZXQpCi0gICAgICAgIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPSBtX2Zy
YW1lLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOwogICAgIHJldHVybiBtX2JlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDlmNjRlN2ZiY2U2NDgwOTVkMjY2NjJl
ZTc5Nzk3NjIzNGRlOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCitzdGF0aWMgY29uc3QgZG91
YmxlIGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldCA9IC0xOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcigp
CisgICAgOiBtX2N1cnJlbnRBbmltYXRpb25UaW1lKGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNl
dCkKKyAgICAsIG1fY2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyKHRoaXMsICZBbmltYXRp
b25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyRmlyZWQpCit7
Cit9CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjp+QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIo
KQoreworfQorCitkb3VibGUgQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OmN1cnJlbnRBbmltYXRp
b25UaW1lKCkKK3sKKyAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uVGltZSA9PSBjQ3VycmVudEFu
aW1hdGlvblRpbWVOb3RTZXQpIHsKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uVGltZSA9IGN1
cnJlbnRUaW1lKCk7CisgICAgICAgIC8vIENsZWFyIG91dCB0aGUgYW5pbWF0aW9uIHRpbWUgYWZ0
ZXIgMTVtcyBpZiBpdCBoYXNuJ3QgYmVlbiBhbHJlYWR5LgorICAgICAgICBtX2NsZWFyQ3VycmVu
dEFuaW1hdGlvblRpbWVUaW1lci5zdGFydE9uZVNob3QoMC4wMTUpOworICAgIH0KKyAgICByZXR1
cm4gbV9jdXJyZW50QW5pbWF0aW9uVGltZTsKK30KKwordm9pZCBBbmltYXRpb25UaW1lQ29udHJv
bGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7CisgICAgbV9jdXJyZW50QW5pbWF0
aW9uVGltZSA9IGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldDsKKyAgICBpZiAobV9jbGVhckN1
cnJlbnRBbmltYXRpb25UaW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jbGVhckN1cnJl
bnRBbmltYXRpb25UaW1lVGltZXIuc3RvcCgpOworfQorCit2b2lkIEFuaW1hdGlvblRpbWVDb250
cm9sbGVyOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXJGaXJlZChUaW1lcjxBbmltYXRp
b25UaW1lQ29udHJvbGxlcj4qKQoreworICAgIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJv
bGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmOGQwYjNmM2ZiYmZmMzViOTJmMjEyNGYxNzMyMWM0MWY5NTYx
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBbmlt
YXRpb25UaW1lQ29udHJvbGxlcl9oCisjZGVmaW5lIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gK
KworI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmltYXRpb25UaW1lQ29udHJvbGxlciA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QW5pbWF0aW9u
VGltZUNvbnRyb2xsZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEFuaW1hdGlvblRpbWVDb250cm9sbGVyKTsKKyAgICB9CisgICAgfkFuaW1hdGlvblRpbWVD
b250cm9sbGVyKCk7CisKKyAgICBkb3VibGUgY3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICB2
b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKworcHJpdmF0ZToKKyAgICBBbmltYXRp
b25UaW1lQ29udHJvbGxlcigpOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1l
VGltZXJGaXJlZChUaW1lcjxBbmltYXRpb25UaW1lQ29udHJvbGxlcj4qKTsKKworICAgIGRvdWJs
ZSBtX2N1cnJlbnRBbmltYXRpb25UaW1lOworICAgIFRpbWVyPEFuaW1hdGlvblRpbWVDb250cm9s
bGVyPiBtX2NsZWFyQ3VycmVudEFuaW1hdGlvblRpbWVUaW1lcjsKK307CisKK30KKworI2VuZGlm
IC8vIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZlZjA1OGMzM2Uy
YjYxNTg5Y2EzOGEzMGU0MjE1ZTc4MGVmYmEyZWYuLjRiZGJmYTQ3YzY2NmJkZGNhNzRjMzJhNmY0
M2I3MWYzNWFhZjA2NDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAxLTA1
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vemlsbGEncyBhbmlt
YXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFdlYktpdCBBUEkgc3VwcG9ydCBmb3Igd2Via2l0
QW5pbWF0aW9uVGltZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAg
KiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dUltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHNyYy9XZWJQb3B1
cE1lbnVJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTAxLTAzICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgQ2hyb21pdW0gTGludXggUmVs
ZWFzZSBidWlsZCBhZnRlciBjaGFuZ2VzZXQgNzQ4OTUgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc0ODk1Pi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V2lkZ2V0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGQwMTAy
NzA2NWM5ZTkwYzE0NzU2ZTc3ODdjYTI2NmRmNjdlYWVjM2IuLjdiNTdiOWRiMDJiMmYzYWRmNGMz
OTI4MGQ4MGQzNTJmYjEwMjE0N2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV2lkZ2V0LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAt
NTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB0byByZXNpemUgdGhlIFdlYldp
ZGdldC4KICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CiAKKyAg
ICAvLyBDYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHdpZGdldCBoYXMgYmVlbiByZW5kZXJl
ZCBhbmQgdGhlIHdpZGdldAorICAgIC8vIG5vIGxvbmdlciBuZWVkcyB0byBzdG9yZSB0aGUgYW5p
bWF0aW9uIHRpbWUuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUo
KSA9IDA7CisKICAgICAvLyBDYWxsZWQgdG8gbGF5b3V0IHRoZSBXZWJXaWRnZXQuICBUaGlzIE1V
U1QgYmUgY2FsbGVkIGJlZm9yZSBQYWludCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBj
YWxscyB0byBXZWJXaWRnZXRDbGllbnQ6OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCAwODVhMTU3NWU1NGJmMGU3YTRhYzhlNTg3OGEwMzg2MDU4OTJlNWQ5Li5lNGU0OGJj
NzFmYjJjZWM4YWIzYTYyMTNiYWU2M2QwNmVkYjA4MWEyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHAKQEAgLTE1MSw2ICsxNTEsMTAgQEAgdm9pZCBXZWJQb3B1cE1l
bnVJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICAgICB9CiB9CiAKK3ZvaWQg
V2ViUG9wdXBNZW51SW1wbDo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7Cit9CisKIHZv
aWQgV2ViUG9wdXBNZW51SW1wbDo6bGF5b3V0KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
b3B1cE1lbnVJbXBsLmgKaW5kZXggMjIxYmEwMzhmMmM0YzczNmQ2NzdmYWJmYTMyMmUwNTFmOTA0
MjY0Yy4uYzUyODdkMzgxMTc4YTlkOWVlZTE2ZWI2NGVkNGNjZGQwNjA4MDA1NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQ3N2E1YjNmNjJmM2Y5N2U2
NDM1ZjljMTQ1MDllZDBiNDk5YTFlNjcuLjMyYTNiYzE0ZWMyYjRlMmM0NmZiYTJmMDc3NWUyNWQ1
YzEyOGJiOGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2lu
Y2x1ZGUgIkFuaW1hdGlvblRpbWVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQXV0b0ZpbGxQb3B1
cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0SW1wbC5oIgpAQCAtOTc3LDYgKzk3OCwxMyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICNlbmRpZgogfQogCit2b2lkIFdlYlZp
ZXdJbXBsOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCkKK3sKKyAgICBXZWJGcmFtZUltcGwq
IHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOworICAgIGlmICh3ZWJmcmFtZSkKKyAgICAgICAg
d2ViZnJhbWUtPmZyYW1lKCktPnBhZ2UoKS0+YW5pbWF0aW9uVGltZSgpLT5jbGVhckN1cnJlbnRB
bmltYXRpb25UaW1lKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgpCiB7CiAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCA4MGFiZjgxM2VlYmY5NjIxNjVlMjBlOTk1MmJkZDY5Y2FjMDJmMWRh
Li5lYWI4MWI0NDQxMGJhNmFiOWM1ZWYzM2E0MzlmYjVlZjYxOWIyNjRiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKTsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIHZpcnR1YWwg
dm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDU0ZjBhNDUyMDFkMjQ4NzI1ZmRmOGUwYTRiNDVmYjc3NWJkZGQ3YmQuLjhlYmRj
ODY2NGMyOWE3ZWM2YTNmZTc0MjQ5YTlmZTI3NmNjMDdkMmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCA8QXBwS2l0L05TQWNjZXNzaWJpbGl0eS5oPgogI2ltcG9ydCA8QXBwbGljYXRpb25T
ZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZEltYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg+CkBAIC0zNTA1LDYgKzM1MDYsMTAgQEAgc3RhdGlj
IHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIH0KICNlbmRpZgogCisgICAg
RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5Db3JlRnJhbWVdOworICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+cGFnZSgpKQorICAgICAgICBmcmFtZS0+cGFnZSgpLT5hbmltYXRpb25UaW1lKCkt
PmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICAKICAgICBpZiAod2ViVmlldykKICAg
ICAgICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRHJhd0Zy
YW1lOiksIFtzZWxmIF9mcmFtZV0pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NmVhN2Qw
ZDQ2NjQ1ZWFhM2NkMzA1YzRhNzlkNDdjYzA1ZDJmY2JhLi44OWJhYTZkNjEyMTIxNjJmMjA3Zjc3
NDc0OTk3YzFlOTA5NjZhMzMzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTEwLDYgKzExMCw3
IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgpAQCAtNTk1Nyw2
ICs1OTU4LDEwIEBAIHN0YXRpYyB2b2lkIGxheWVyU3luY1J1bkxvb3BPYnNlcnZlckNhbGxCYWNr
KENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3RpCiAgICAgICAgIC8vIHNvIHRoYXQg
dGhlIGxheWVycyBkcmF3IHdpdGggdXAtdG8tZGF0ZSBsYXlvdXQuIAogICAgICAgICBbd2ViVmll
dyBfdmlld1dpbGxEcmF3SW50ZXJuYWxdOwogICAgIH0KKyAgICAKKyAgICBGcmFtZSogZnJhbWUg
PSBbd2ViVmlldyBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdl
KCkpCisgICAgICAgIGZyYW1lLT5wYWdlKCktPmFuaW1hdGlvblRpbWUoKS0+Y2xlYXJDdXJyZW50
QW5pbWF0aW9uVGltZSgpOyAgICAKIH0KIAogLSAodm9pZClfc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyU3luYwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78081</attachid>
            <date>2011-01-05 17:46:21 -0800</date>
            <delta_ts>2011-01-05 18:27:44 -0800</delta_ts>
            <desc>webkit2 support</desc>
            <filename>bug-51952-20110105174621.patch</filename>
            <type>text/plain</type>
            <size>38499</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTRiNWJiYWJjM2JiYmI2YzI4NGU1YjdiMjdkZDFlYzhmOWMzNzI0Li5kZjdjNGE5
NjI4MzRlOGJjOWE4N2IzM2EzNDc4YTIzMTM0ZDEzZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDEtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbW96
aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTUyCisKKyAgICAgICAgVGVzdHMgZm9yIHdpbmRvdy53
ZWJraXRBbmltYXRpb25UaW1lLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tdGlt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLXRp
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0
aW9uLXRpbWUuanM6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRpbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2YzIzNTNkMGM4NzYwNGIzYjJjYTNkMjFkMGU2N2Y3ODA1OGMxODYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25U
aW1lIHJlbWFpbnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5p
bWF0aW9ucyBzdGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdGFydEFuaW1hdGlvblRpbWUgaXMg
ZGVmaW5lZC4KK1BBU1Mgc3RhcnRBbmltYXRpb25UaW1lIGlzIGVuZEFuaW1hdGlvblRpbWUKK1BB
U1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCBpcyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkaXYyKS5sZWZ0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGltZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tdGltZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZjY5NTAzZTBmMTkwNzlmMmY3YjYxYWI1MzM4OWM0NGMyNmIwZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmQgeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAg
IGxlZnQ6MHB4OworfQorCisuZC5hbmltYXRlZCB7CisgICAgbGVmdDoxMDBweDsKKyAgICAgLXdl
YmtpdC10cmFuc2l0aW9uOiBsZWZ0IDAuMXMgbGluZWFyOworICAgICAtbW96LXRyYW5zaXRpb246
IGxlZnQgMC4xcyBsaW5lYXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBjbGFzcz0i
ZCIgaWQ9ImRpdjEiPjwvZGl2PgorPGRpdiBjbGFzcz0iZCIgaWQ9ImRpdjIiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hbmltYXRpb24tdGltZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc2Ny
aXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvYW5pbWF0aW9uLXRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjZjMxMjQzMTc0ZDE2ZjJh
NmIwMDY3YWIyNGU0NWU0YmJkZWU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25UaW1lIHJlbWFp
bnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5pbWF0aW9ucyBz
dGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZCIpOword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYxIik7Cit2YXIgZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyIik7CisK
K2RpdjEuY2xhc3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9w
OyAvLyBGb3JjZSBhIHN0eWxlIHJlY2FsYyB0byBzdGFydCB0aGUgZmlyc3QgYW5pbWF0aW9uLgor
Cit2YXIgc3RhcnRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7Citz
aG91bGRCZURlZmluZWQoJ3N0YXJ0QW5pbWF0aW9uVGltZScpOworCit2YXIgc3RhcnRUaW1lID0g
RGF0ZS5ub3coKTsKK3doaWxlIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgMTApIHt9CisKK3Zh
ciBlbmRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7CisvLyBUZXN0
IHRoYXQgdGhlIHdlYmtpdEFuaW1hdGlvblRpbWUgdmFsdWUgaGFzbid0IGNoYW5nZWQgb3V0IGZy
b20gdW5kZXIgdXMuCitzaG91bGRCZSgnc3RhcnRBbmltYXRpb25UaW1lJywgJ2VuZEFuaW1hdGlv
blRpbWUnKTsKKworLy8gU3RhcnQgYSBzZWNvbmQgZGVjbGFyYXRpdmUgYW5pbWF0aW9uIH4xMG1z
IGFmdGVyIHRoZSBmaXJzdCBvbmUuICBUaGV5IHNob3VsZCBiZSBpbiBzeW5jLgorZGl2Mi5jbGFz
c0xpc3QuYWRkKCJhbmltYXRlZCIpOworCit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCcsICd3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYyKS5sZWZ0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMDk2YjAzMjZkMTI3NmY5OGNi
ZDQ3YTM0YTljMjU4MjhhMDM4MjcuLjY2MzY4ZmZhODBhZGU1NTBmYTU2M2U5MGFjYTY0Yjk1NTFk
YTdkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBtb3ppbGxhJ3MgYW5pbWF0aW9uVGltZSBwcm9wZXJ0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE5NTIKKworICAgICAgICBD
aHJvbWl1bSBEUlQgc3VwcG9ydCBmb3Igd2Via2l0QW5pbWF0aW9uVGltZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKToKKwogMjAxMS0wMS0wMyAgWWkgU2hlbiAg
PHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4
NDkzMTJjNGIwNWVkYjgyMzRmYzBjNzU2MTRiYTk2MWQwMjhmMTBhLi5iYmMzMmZjNWFkZDlmNjU0
NmEyZTc0ODc5ZGIyODdmZDliMWMzMGJhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNDgyLDYgKzE0ODIsNyBAQCB2b2lkIFdlYlZpZXdI
b3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKICAgICAgICAgcGFpbnRSZWN0KHJlY3QpOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgpKTsKKyAgICB3ZWJXaWRnZXQo
KS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiBQbGF0Zm9ybUNhbnZhcyogV2Vi
Vmlld0hvc3Q6OmNhbnZhcygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJD
b3JlL0FuZHJvaWQubWsKaW5kZXggMjBkYjY2NzMxNDIyN2Q2MzIzM2Y5YmVkZDg2NGJlZTY1ZDRh
MWIxOC4uNTMwZTZhMTlhNTk4OGEzZmViYTA5N2YwODNjMTFhZjAwY2U2MTdiOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNDQ2LDYg
KzQ0Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCVwKIAlw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgXAorCXBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9s
bGVyLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBcCiAJcGFn
ZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKIAlwYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWY3MTBkYjg2YTIwYTM4NThhMDI5YmQzMWRj
YjY1YzRiMTE5YmNhNC4uYTM3NjExNzM1OWMzYWU4MjA1N2Q3NjA4N2RmNmZhOTYxOTE5MzZkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMjc3LDYgKzEyNzcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCisgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRy
b2xsZXIuY3BwCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAogICAg
IHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NWYyOTEzMzBiYmYxZTQ1MTc0MDJkY2QwN2Y0ZDMyMzU1
OGE5YmVkLi4yMzkyYjU0Nzc3Yjg1YjJlOTNkMTY2YzJiNWQyNmIwZTc2YzZkMDE3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDExLTAxLTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IG1vemlsbGEncyBhbmltYXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIEltcGxlbWVudHMg
bW96aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkgYXMgZGVzY3JpYmVkIGhlcmU6CisgICAg
ICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0RPTS93aW5kb3cubW96QW5pbWF0
aW9uU3RhcnRUaW1lCisgICAgICAgIGFuZCBodHRwOi8vaGFja3MubW96aWxsYS5vcmcvMjAxMC8w
OC9tb3JlLWVmZmljaWVudC1qYXZhc2NyaXB0LWFuaW1hdGlvbnMtd2l0aC1tb3pyZXF1ZXN0YW5p
bWF0aW9uZnJhbWUvCisgICAgICAgIFRoZSBwcm9wZXJ0eSBpcyBjYWxsZWQgd2Via2l0QW5pbWF0
aW9uVGltZSBhcyBjYWxsaW5nIGl0IHRoZSAnU3RhcnQnIHRpbWUgaXMgbm90IHZlcnkgaW5mb3Jt
YXRpdmUuCisgICAgICAgIFRoaXMgcHJvcGVydHkgZXhwb3NlcyBhIG5vdGlvbiBvZiBhICdjdXJy
ZW50JyB0aW1lIHRvIHVzZSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyBhbmQgYWxsb3dzCisg
ICAgICAgIHNjcmlwdHMgdG8gc3luY2hyb25pemUgaW1wZXJhdGl2ZSBhbmltYXRpb25zIHdpdGgg
ZGVjbGFyYXRpdmUgb25lcyBpZiB0aGV5IGNob29zZSB0by4gIE9uY2UgcXVlcmllZAorICAgICAg
ICB0aGlzIHRpbWUgaXMgc2F2ZWQgYW5kIHVzZWQgZm9yIGFsbCBkZWNsYXJhdGl2ZSBhbmltYXRp
b24gdXBkYXRlcyB1bnRpbCB0aGUgZW1iZWRkZXIgcGFpbnRzL2NvbXBvc2l0ZXMKKyAgICAgICAg
dGhlIG5leHQgZnJhbWUgYW5kIGNsZWFycyBpdCwgb3IgMTVtcyBlbGFwc2UgKGluIGNhc2UgdGhl
IGVtYmVkZGVyIGlzbid0IHByb2R1Y2luZyBmcmFtZXMsIGZvciBleGFtcGxlCisgICAgICAgIGlm
IHRoZSBwYWdlIGlzIGluIGEgYmFja2dyb3VuZCB0YWIpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyBlbnN1cmVzIHRoYXQgYWxsIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMgc3RhcnRlZCBpbiB0
aGUgc2FtZSBzY3JpcHQgZXhlY3V0aW9uIGJsb2NrCisgICAgICAgIGFyZSBzeW5jaHJvbml6ZWQg
ZXZlbiBpZiBzb21lIHRpbWUgZWxhcHNlcyB3aGlsZSBzY3JpcHQgaXMgcnVubmluZy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2FuaW1hdGlvbi9hbmltYXRpb24tdGltZS5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojp3ZWJraXRBbmltYXRpb25UaW1lKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjdXJyZW50QW5pbWF0aW9u
VGltZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSk6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1l
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6
fkFuaW1hdGlvblRpbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVDb250cm9sbGVyOjpjdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0
aW9uVGltZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZUNv
bnRyb2xsZXI6OmNyZWF0ZSk6CisKIDIwMTEtMDEtMDQgIFRvbnkgR2VudGlsY29yZSAgPHRvbnln
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDQwNjMwNTRiMDM4ZmJkODZlYzQ4OGZmZGMwNDM2MTk4Y2Y5MDJhMTQuLmJkNjhhMDU1ZjllZDIw
YWZhNTYzZTgyZTA4YTBiNTJmN2M5NGVlZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE0MSw2ICsyMTQxLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIFwKKwlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9sbGVyLmNw
cCBcCisJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oIFwK
IAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXAogCVdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmggXAogCVdlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDU5M2JjNjBiZDA2ZTM2
ZmEzYTY2N2M3NjllYTgyNDljYWZkNzY3YzUuLmViNmY2ZGE1MTVhNWYyZjFiYjg1MzAyMjcwZDYw
NTY5NWVhN2EzZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTE4LDYgKzUxOCw3IEBAIF9fWk43V2ViQ29yZTIyY29u
dGV4dE1lbnVJdGVtVGFnQm9sZEV2CiBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVudEZyb21UZXh0RVBO
U181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzVGcmFtZUVqCitfX1pON1dlYkNvcmUyM0FuaW1hdGlvblRpbWVDb250cm9sbGVy
MjVjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpS
S05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29y
ZTIzUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmRDMUVQTlNfOERvY3VtZW50RU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiYmJiTlNfMTBFZGl0QWN0aW9uRQogX19aTjdX
ZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVj
dG9ySVBOU180Tm9kZUVMbTBFRUUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzBkM2JkZjJhMjQ3ZWYzYjQwNGYyOGU5YTI1NzQw
MDI5NGQwZmJmOS4uNDk0ZGE5ODc2NDI0NmZmNDliMmQwMDA0NWM3OTY3ZTZiOTM2ZDE4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIyMTksNiArMjIxOSw4IEBACiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGUuaCcsCisgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGM2MTQ4OThjYzdiZTc5YWJjZDNjNjM0MjMzMzY2ZDBjMzU1YmU3OWQuLjUy
MjMyMjQzMzdjZDIwZDExNDgwZDg3NjJkN2YxZjA3OWFiMTIxYmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTEwOSw2ICsxMTA5
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAgICAgcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
IFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTU5ZGNmNmRhODBhODU3MTg3YjExY2M4YTBl
ZmJmMzI0NWRkYWFkMy4uNDI0OTg3MjY4ZjE4Yzc3MGFkNmJhZmM2MjE3YjFlYmVlNzU1OGMzZSAx
MDA3NTUKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDE4Niw2ICsyNDE4Niwx
NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXGFuaW1hdGlvblxBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcYW5pbWF0aW9uXEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQmFySW5mby5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzgxZWExOWFkNTU1
OWI2N2UwZTI0ODMyZDVlZjlmZGNjZmQyMGE3Li4wMGYwZTNhYTJmOWZkMzNhODFhYmQwYzI4OGIy
YTU5Nzg0Y2VkZTQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTA4LDYgKzkwOCw4IEBACiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVl
RGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJ
CTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzg4OEY2RUMx
MjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgKi87IH07CiAJ
CTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4ODhGNkVEMTI4
Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsgfTsKKwkJMzhE
RjFCMzUxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4REYxQjMzMTJENTI4
NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAgKi87IH07CisJCTM4REYx
QjM2MTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzhERjFCMzQxMkQ1Mjg0MjAw
RjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8q
IEVkaXRpbmdCb3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NE
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCAqLzsgfTsKQEAgLTcyMjgsNiArNzIzMCw4IEBACiAJCTM3RkQ0Mjk3MTE4MzY4
NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmVlRGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
ODg4RjZFQzEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4ODhGNkVEMTI4Qzk4ODkw
MDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM4REYxQjMzMTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1l
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHA7IHBhdGggPSBhbmltYXRpb24vQW5pbWF0aW9uVGltZUNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzOERGMUIzNDEyRDUy
ODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaDsgcGF0aCA9IGFuaW1h
dGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0
aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzAyNSw2ICsxMzAyOSw4IEBACiAJCQkJMzE2RkUxMDkwRTZFMURBNzAw
QkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAogCQkJCTMxNkZFMTBBMEU2RTFE
QTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJMEYxNURBODkwRjNB
QUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJCQkJMzhE
RjFCMzMxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCAqLywK
KwkJCQkzOERGMUIzNDEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIu
aCAqLywKIAkJCQkzMTZGRTEwQjBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9u
LmNwcCAqLywKIAkJCQkzMTZGRTEwQzBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0
aW9uLmggKi8sCiAJCQkJMzE2RkUxMEQwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0
aW9uLmNwcCAqLywKQEAgLTE5MzE2LDYgKzE5MzIyLDcgQEAKIAkJCQkzMTZGRTExMjBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTQw
RTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMTVEQThBMEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhERjFCMzYxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRDBFRkFDOTA2
MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcw
OTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMjYwNCw2ICsyMjYxMSw3IEBACiAJCQkJNDlFOTEyQUEwRUZBQzkwNjAwOUQw
Q0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTEx
MzBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzOERGMUIzNTEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEyQUMwRUZBQzkwNjAwOUQwQ0FGIC8qIEFu
aW1hdGlvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlFNjQ5MjAwNTZF
NTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJD
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCAzNDk3ZjEzMTc3MGE1ZWRiZDJmY2IwNzZhYTYwYTczMzY1M2Y1Yjli
Li4wYWI4OTEyNGUwZWVlZjczNmM3Y2Y0ZWY4NTAxYzUyN2JkMTQ1MWRiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtMTQ2NCw2ICsxNDY0LDEzIEBAIHZvaWQgRE9NV2luZG93OjpjbGVhckludGVydmFsKGlu
dCB0aW1lb3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoY29udGV4dCwgdGltZW91dElk
KTsKIH0KIAorRE9NVGltZVN0YW1wIERPTVdpbmRvdzo6d2Via2l0QW5pbWF0aW9uVGltZSgpCit7
CisgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRTZWNv
bmRzVG9ET01UaW1lU3RhbXAoZi0+Y3VycmVudEFuaW1hdGlvblRpbWUoKSk7CisgICAgcmV0dXJu
IGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSk7Cit9CisKIGJvb2wg
RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7
CiAgICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLCB1c2VDYXB0dXJlKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxYzg0ZjNjYWFkODU1MWY4NzllODk4ZmM0
NTUxNjFkMjI1ZGI4ODYyLi40ZjY4ZWQzM2NiYzY4MTkwYmU1NzMyZjkwOGE1NDA0Y2Q1NTZlODIx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIERPTVdpbmRvd19oCiAjZGVm
aW5lIERPTVdpbmRvd19oCiAKKyNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMjM3LDYgKzIzOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50
IHNldEludGVydmFsKFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQp
OwogCisgICAgICAgIC8vIFdlYktpdCBhbmltYXRpb24gZXh0ZW5zaW9ucworICAgICAgICBET01U
aW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGltZSgpOworCiAgICAgICAgIC8vIEV2ZW50cwogICAg
ICAgICAvLyBFdmVudFRhcmdldCBBUEkKICAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGYzYWE3YmE1YmQ5MGYy
NjFlOGU1ZWJjNDhlNGFiOTE1YzBkOTY3YWMuLjM3MTgxMDhlYWQzNzNmOGM0N2MwNDhjZjI0YWFj
NDNkYWJkNjBkNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yMzYsNiArMjM2LDkgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIC8vIFtDdXN0b21dIGxvbmcgc2V0SW50ZXJ2YWwoaW4gRE9NU3RyaW5n
IGNvZGUsIGluIGxvbmcgdGltZW91dCk7CiAgICAgICAgIHZvaWQgY2xlYXJJbnRlcnZhbChpbiBs
b25nIGhhbmRsZSk7CiAKKyAgICAgICAgLy8gV2ViS2l0IGFuaW1hdGlvbiBleHRlbnNpb25zCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGlt
ZTsKKwogICAgICAgICAvLyBCYXNlNjQKICAgICAgICAgRE9NU3RyaW5nIGF0b2IoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgc3RyaW5nKQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NTUyM2M2NGNlMWU1YWQyYTNiZDVmZmQyYzQxYTQ4
MGE0MmY4NDQ5Li41YzVhZDM3MDBhNzgzNzk0MDQzOGRjZmVlZTAyOTA1NjdkOTQ3OTY1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBseVN0eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC04Myw2ICs4
NCw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIK
ICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIApAQCAtNzUyLDYgKzc1NCwxNCBAQCB2b2lkIEZyYW1lOjp0cmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAgICB9CiB9CiAKK2RvdWJsZSBGcmFtZTo6Y3Vy
cmVudEFuaW1hdGlvblRpbWUoKQoreworICAgIGlmIChQYWdlKiBwID0gcGFnZSgpKQorICAgICAg
ICByZXR1cm4gcC0+YW5pbWF0aW9uVGltZSgpLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOworICAg
IHJldHVybiBjdXJyZW50VGltZSgpOworfQorCisKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBl
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0gZG9jdW1l
bnQoKS0+ZG9jdHlwZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCAxY2RmYTgxODgxODc2MDFiODA4MTI3MGZlZjAxNGI2N2E2
MmU5YjZlLi44OTJhNWVhN2E4YjNkMTVlYWYxYmM2ZDdiYjllNjQzMTQ2NDhkMDI2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MTA3LDYgKzEwNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKIAorICAgICAgICBkb3VibGUgY3VycmVudEFu
aW1hdGlvblRpbWUoKTsKKwogICAgIC8vID09PT09PT09IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJl
bG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92ZSBvdXQgb2YgRnJhbWUgaW50byBh
bm90aGVyIGNsYXNzLiA9PT09PT09PQogCiAgICAgICAgIGJvb2wgaXNEaXNjb25uZWN0ZWQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBhNzhjZmI3NTJlNDA0YmVmZmE1MDMyZTBmN2M2NDM2M2RlMzI4OTgxLi5i
MmMwMjQxNWExN2U3ZGI1OWUxMjFiOWQwYWJiYTlhZjRjZjU0MzQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMCw2ICsy
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVk
ZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJCYXNlNjQu
aCIKQEAgLTE1Niw2ICsxNTcsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdl
Q2xpZW50cykKICAgICAsIG1fc2V0dGluZ3MoYWRvcHRQdHIobmV3IFNldHRpbmdzKHRoaXMpKSkK
ICAgICAsIG1fcHJvZ3Jlc3MoYWRvcHRQdHIobmV3IFByb2dyZXNzVHJhY2tlcikpCiAgICAgLCBt
X2JhY2tGb3J3YXJkQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQmFja0ZvcndhcmRDb250cm9sbGVy
KHRoaXMsIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX2FuaW1hdGlv
blRpbWVDb250cm9sbGVyKEFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpjcmVhdGUoKSkKICAgICAs
IG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKICAgICAsIG1fZWRpdG9y
Q2xpZW50KHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNzQxM2JiNjk5ZGYxZjcwZGVhNTQ1ZjU1YThmNzliZjlhMWM1NjBiOS4uMmEwNTdjMzg0MTcz
M2I3OTJmNTA0NzdkYjkyYWI3ZDE0MDUwYmMwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBbmltYXRpb25UaW1l
Q29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZENvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
QmFja0ZvcndhcmRMaXN0OwogICAgIGNsYXNzIENocm9tZTsKQEAgLTE4Miw2ICsxODMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KICAgICAgICAgQmFja0Zv
cndhcmRDb250cm9sbGVyKiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyLmdldCgpOyB9CisgICAgICAgIEFuaW1hdGlvblRpbWVDb250cm9sbGVyKiBh
bmltYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25UaW1lQ29udHJvbGxlci5n
ZXQoKTsgfQogCiAgICAgICAgIGVudW0gVmlld01vZGUgewogICAgICAgICAgICAgVmlld01vZGVJ
bnZhbGlkLApAQCAtMzI3LDYgKzMyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
T3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVzczsKICAgICAgICAgCiAgICAgICAgIE93
blB0cjxCYWNrRm9yd2FyZENvbnRyb2xsZXI+IG1fYmFja0ZvcndhcmRDb250cm9sbGVyOworICAg
ICAgICBPd25QdHI8QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uVGltZUNvbnRy
b2xsZXI7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9tYWluRnJhbWU7CiAKICAgICAgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBtX2dsb2JhbEhpc3RvcnlJdGVtOwpAQCAtMzgwLDYgKzM4Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBtX25v
dGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgogCisgICAgICAgIGRvdWJsZSBtX2N1cnJlbnRB
bmltYXRpb25UaW1lOworCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAgICAg
Vmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxMjgxZGQxOGE3NjU0YzNl
ZTYyNTEzN2E0YTVjNzg3M2Q0ZGZlZmEuLmE0ZTAwNjM3NTcyZjBmNzQ2YTU1OTU5ZDc4MGVkM2Jm
ZjNiMDM0ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiBkb3Vi
bGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgp
CiB7CiAgICAgaWYgKG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID09IGNCZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWVOb3RTZXQpCi0gICAgICAgIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPSBtX2Zy
YW1lLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOwogICAgIHJldHVybiBtX2JlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDlmNjRlN2ZiY2U2NDgwOTVkMjY2NjJl
ZTc5Nzk3NjIzNGRlOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCitzdGF0aWMgY29uc3QgZG91
YmxlIGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldCA9IC0xOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcigp
CisgICAgOiBtX2N1cnJlbnRBbmltYXRpb25UaW1lKGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNl
dCkKKyAgICAsIG1fY2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyKHRoaXMsICZBbmltYXRp
b25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyRmlyZWQpCit7
Cit9CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjp+QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIo
KQoreworfQorCitkb3VibGUgQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OmN1cnJlbnRBbmltYXRp
b25UaW1lKCkKK3sKKyAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uVGltZSA9PSBjQ3VycmVudEFu
aW1hdGlvblRpbWVOb3RTZXQpIHsKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uVGltZSA9IGN1
cnJlbnRUaW1lKCk7CisgICAgICAgIC8vIENsZWFyIG91dCB0aGUgYW5pbWF0aW9uIHRpbWUgYWZ0
ZXIgMTVtcyBpZiBpdCBoYXNuJ3QgYmVlbiBhbHJlYWR5LgorICAgICAgICBtX2NsZWFyQ3VycmVu
dEFuaW1hdGlvblRpbWVUaW1lci5zdGFydE9uZVNob3QoMC4wMTUpOworICAgIH0KKyAgICByZXR1
cm4gbV9jdXJyZW50QW5pbWF0aW9uVGltZTsKK30KKwordm9pZCBBbmltYXRpb25UaW1lQ29udHJv
bGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7CisgICAgbV9jdXJyZW50QW5pbWF0
aW9uVGltZSA9IGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldDsKKyAgICBpZiAobV9jbGVhckN1
cnJlbnRBbmltYXRpb25UaW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jbGVhckN1cnJl
bnRBbmltYXRpb25UaW1lVGltZXIuc3RvcCgpOworfQorCit2b2lkIEFuaW1hdGlvblRpbWVDb250
cm9sbGVyOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXJGaXJlZChUaW1lcjxBbmltYXRp
b25UaW1lQ29udHJvbGxlcj4qKQoreworICAgIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJv
bGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmOGQwYjNmM2ZiYmZmMzViOTJmMjEyNGYxNzMyMWM0MWY5NTYx
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBbmlt
YXRpb25UaW1lQ29udHJvbGxlcl9oCisjZGVmaW5lIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gK
KworI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmltYXRpb25UaW1lQ29udHJvbGxlciA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QW5pbWF0aW9u
VGltZUNvbnRyb2xsZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEFuaW1hdGlvblRpbWVDb250cm9sbGVyKTsKKyAgICB9CisgICAgfkFuaW1hdGlvblRpbWVD
b250cm9sbGVyKCk7CisKKyAgICBkb3VibGUgY3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICB2
b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKworcHJpdmF0ZToKKyAgICBBbmltYXRp
b25UaW1lQ29udHJvbGxlcigpOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1l
VGltZXJGaXJlZChUaW1lcjxBbmltYXRpb25UaW1lQ29udHJvbGxlcj4qKTsKKworICAgIGRvdWJs
ZSBtX2N1cnJlbnRBbmltYXRpb25UaW1lOworICAgIFRpbWVyPEFuaW1hdGlvblRpbWVDb250cm9s
bGVyPiBtX2NsZWFyQ3VycmVudEFuaW1hdGlvblRpbWVUaW1lcjsKK307CisKK30KKworI2VuZGlm
IC8vIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZlZjA1OGMzM2Uy
YjYxNTg5Y2EzOGEzMGU0MjE1ZTc4MGVmYmEyZWYuLjRiZGJmYTQ3YzY2NmJkZGNhNzRjMzJhNmY0
M2I3MWYzNWFhZjA2NDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAxLTA1
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vemlsbGEncyBhbmlt
YXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFdlYktpdCBBUEkgc3VwcG9ydCBmb3Igd2Via2l0
QW5pbWF0aW9uVGltZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAg
KiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dUltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHNyYy9XZWJQb3B1
cE1lbnVJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTAxLTAzICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgQ2hyb21pdW0gTGludXggUmVs
ZWFzZSBidWlsZCBhZnRlciBjaGFuZ2VzZXQgNzQ4OTUgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc0ODk1Pi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V2lkZ2V0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGQwMTAy
NzA2NWM5ZTkwYzE0NzU2ZTc3ODdjYTI2NmRmNjdlYWVjM2IuLjdiNTdiOWRiMDJiMmYzYWRmNGMz
OTI4MGQ4MGQzNTJmYjEwMjE0N2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV2lkZ2V0LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAt
NTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB0byByZXNpemUgdGhlIFdlYldp
ZGdldC4KICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CiAKKyAg
ICAvLyBDYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHdpZGdldCBoYXMgYmVlbiByZW5kZXJl
ZCBhbmQgdGhlIHdpZGdldAorICAgIC8vIG5vIGxvbmdlciBuZWVkcyB0byBzdG9yZSB0aGUgYW5p
bWF0aW9uIHRpbWUuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUo
KSA9IDA7CisKICAgICAvLyBDYWxsZWQgdG8gbGF5b3V0IHRoZSBXZWJXaWRnZXQuICBUaGlzIE1V
U1QgYmUgY2FsbGVkIGJlZm9yZSBQYWludCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBj
YWxscyB0byBXZWJXaWRnZXRDbGllbnQ6OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCAwODVhMTU3NWU1NGJmMGU3YTRhYzhlNTg3OGEwMzg2MDU4OTJlNWQ5Li5lNGU0OGJj
NzFmYjJjZWM4YWIzYTYyMTNiYWU2M2QwNmVkYjA4MWEyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHAKQEAgLTE1MSw2ICsxNTEsMTAgQEAgdm9pZCBXZWJQb3B1cE1l
bnVJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICAgICB9CiB9CiAKK3ZvaWQg
V2ViUG9wdXBNZW51SW1wbDo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7Cit9CisKIHZv
aWQgV2ViUG9wdXBNZW51SW1wbDo6bGF5b3V0KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
b3B1cE1lbnVJbXBsLmgKaW5kZXggMjIxYmEwMzhmMmM0YzczNmQ2NzdmYWJmYTMyMmUwNTFmOTA0
MjY0Yy4uYzUyODdkMzgxMTc4YTlkOWVlZTE2ZWI2NGVkNGNjZGQwNjA4MDA1NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQ3N2E1YjNmNjJmM2Y5N2U2
NDM1ZjljMTQ1MDllZDBiNDk5YTFlNjcuLjMyYTNiYzE0ZWMyYjRlMmM0NmZiYTJmMDc3NWUyNWQ1
YzEyOGJiOGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2lu
Y2x1ZGUgIkFuaW1hdGlvblRpbWVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQXV0b0ZpbGxQb3B1
cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0SW1wbC5oIgpAQCAtOTc3LDYgKzk3OCwxMyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICNlbmRpZgogfQogCit2b2lkIFdlYlZp
ZXdJbXBsOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCkKK3sKKyAgICBXZWJGcmFtZUltcGwq
IHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOworICAgIGlmICh3ZWJmcmFtZSkKKyAgICAgICAg
d2ViZnJhbWUtPmZyYW1lKCktPnBhZ2UoKS0+YW5pbWF0aW9uVGltZSgpLT5jbGVhckN1cnJlbnRB
bmltYXRpb25UaW1lKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgpCiB7CiAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCA4MGFiZjgxM2VlYmY5NjIxNjVlMjBlOTk1MmJkZDY5Y2FjMDJmMWRh
Li5lYWI4MWI0NDQxMGJhNmFiOWM1ZWYzM2E0MzlmYjVlZjYxOWIyNjRiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKTsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIHZpcnR1YWwg
dm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDU0ZjBhNDUyMDFkMjQ4NzI1ZmRmOGUwYTRiNDVmYjc3NWJkZGQ3YmQuLjhlYmRj
ODY2NGMyOWE3ZWM2YTNmZTc0MjQ5YTlmZTI3NmNjMDdkMmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCA8QXBwS2l0L05TQWNjZXNzaWJpbGl0eS5oPgogI2ltcG9ydCA8QXBwbGljYXRpb25T
ZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZEltYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg+CkBAIC0zNTA1LDYgKzM1MDYsMTAgQEAgc3RhdGlj
IHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIH0KICNlbmRpZgogCisgICAg
RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5Db3JlRnJhbWVdOworICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+cGFnZSgpKQorICAgICAgICBmcmFtZS0+cGFnZSgpLT5hbmltYXRpb25UaW1lKCkt
PmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICAKICAgICBpZiAod2ViVmlldykKICAg
ICAgICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRHJhd0Zy
YW1lOiksIFtzZWxmIF9mcmFtZV0pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NmVhN2Qw
ZDQ2NjQ1ZWFhM2NkMzA1YzRhNzlkNDdjYzA1ZDJmY2JhLi44OWJhYTZkNjEyMTIxNjJmMjA3Zjc3
NDc0OTk3YzFlOTA5NjZhMzMzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTEwLDYgKzExMCw3
IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgpAQCAtNTk1Nyw2
ICs1OTU4LDEwIEBAIHN0YXRpYyB2b2lkIGxheWVyU3luY1J1bkxvb3BPYnNlcnZlckNhbGxCYWNr
KENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3RpCiAgICAgICAgIC8vIHNvIHRoYXQg
dGhlIGxheWVycyBkcmF3IHdpdGggdXAtdG8tZGF0ZSBsYXlvdXQuIAogICAgICAgICBbd2ViVmll
dyBfdmlld1dpbGxEcmF3SW50ZXJuYWxdOwogICAgIH0KKyAgICAKKyAgICBGcmFtZSogZnJhbWUg
PSBbd2ViVmlldyBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdl
KCkpCisgICAgICAgIGZyYW1lLT5wYWdlKCktPmFuaW1hdGlvblRpbWUoKS0+Y2xlYXJDdXJyZW50
QW5pbWF0aW9uVGltZSgpOyAgICAKIH0KIAogLSAodm9pZClfc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyU3luYwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAyOWZjZjg3YjFhZGM1NmQ2MjljYjk2ZDU5ZDljMGQwMDkxZDQyMDNmLi45NDcyOWU4
Mzg3NDk3MzdmNWJkMzIxMDU5MmI4ZmQzYmE5ZWYyZjc1IDEwMDY0NAotLS0gYS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTAx
LTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vemlsbGEncyBh
bmltYXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFRlbGxzIHRoZSBwYWdlIHRvIGNsZWFyIHRo
ZSBjdXJyZW50IGFuaW1hdGlvbiB0aW1lIGFmdGVyIHByb2R1Y2luZyBhIGZyYW1lLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9DaHVu
a2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWE6OnBhaW50SW50b1VwZGF0ZUNodW5rKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWE6OnVwZGF0ZUxheW91dFJ1bkxvb3BPYnNlcnZl
ckZpcmVkKToKKwogMjAxMS0wMS0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU5OTBjYjM2OWQ5YzM4OWMyYzZjOWZjYzM1MTBmMDJiOWFk
ZDUzNDQuLjVjMDU1MmU2ZDg2Y2E2YTQyYjY0YmZiNGMzNGE1OWU2NzdiZTBkNDcgMTAwNjQ0Ci0t
LSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvblRpbWVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CkBAIC01MTEsNiArNTEyLDgg
QEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgbV9wYWdlT3ZlcmxheS0+ZHJhd1JlY3Qo
Z3JhcGhpY3NDb250ZXh0LCByZWN0KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUo
KTsKICAgICB9CisgICAgCisgICAgbV9wYWdlLT5hbmltYXRpb25UaW1lKCktPmNsZWFyQ3VycmVu
dEFuaW1hdGlvblRpbWUoKTsKIH0KIAogZG91YmxlIFdlYlBhZ2U6OnRleHRab29tRmFjdG9yKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9DaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXggOGZiODJjODc2NmIzZTBiNTRi
ZmJkODU2NGQ1ZmMwOTQzOTM1MzNjNC4uM2RjYmJiNTI5MzYwZDc3ZmQ3NTM4NWNkYzgxMWJlNzg3
YjllNGRjNyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0NodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAKQEAgLTI5LDggKzI5LDEwIEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvblRpbWVD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDYg
KzU3LDggQEAgdm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OnBhaW50SW50b1VwZGF0ZUNo
dW5rKFVwZGF0ZUNodW5rKiB1cGRhdGVDaHVuaykKICAgICBncmFwaGljc0NvbnRleHQudHJhbnNs
YXRlKC11cGRhdGVDaHVuay0+cmVjdCgpLngoKSwgLXVwZGF0ZUNodW5rLT5yZWN0KCkueSgpKTsK
ICAgICAKICAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0KGdyYXBoaWNzQ29udGV4dCwgdXBkYXRlQ2h1
bmstPnJlY3QoKSk7CisKKyAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmFuaW1hdGlvblRpbWUo
KS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllckJhY2tl
ZERyYXdpbmdBcmVhTWFjLm1tIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVy
QmFja2VkRHJhd2luZ0FyZWFNYWMubW0KaW5kZXggZjhiN2U3MWIyM2ZiM2U2ZjM2MGQ5YjY3YWY0
NTA1MzgyYzVkMzhhMS4uNjFkYmIxMGMyNmViNWI1OTA4MzM1ZDNmMzdhNGJmMzExMzVlOTE3NSAx
MDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJh
d2luZ0FyZWFNYWMubW0KKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVy
QmFja2VkRHJhd2luZ0FyZWFNYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KQEAgLTE3Myw2ICsxNzQsOCBA
QCB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnVwZGF0ZUxheW91dFJ1bkxvb3BPYnNlcnZl
ckZpcmVkKCkKICAgICAKICAgICBpZiAobV9hdHRhY2hlZCkKICAgICAgICAgc3luY0NvbXBvc2l0
aW5nTGF5ZXJzKCk7CisKKyAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmFuaW1hdGlvblRpbWUo
KS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiB2b2lkIExheWVyQmFja2VkRHJh
d2luZ0FyZWE6Om9uUGFnZUNsb3NlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78085</attachid>
            <date>2011-01-05 18:27:47 -0800</date>
            <delta_ts>2011-01-07 14:35:36 -0800</delta_ts>
            <desc>webkit2 calls moved</desc>
            <filename>bug-51952-20110105182746.patch</filename>
            <type>text/plain</type>
            <size>38790</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTRiNWJiYWJjM2JiYmI2YzI4NGU1YjdiMjdkZDFlYzhmOWMzNzI0Li5kZjdjNGE5
NjI4MzRlOGJjOWE4N2IzM2EzNDc4YTIzMTM0ZDEzZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDEtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbW96
aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTUyCisKKyAgICAgICAgVGVzdHMgZm9yIHdpbmRvdy53
ZWJraXRBbmltYXRpb25UaW1lLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tdGlt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLXRp
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0
aW9uLXRpbWUuanM6IEFkZGVkLgorCiAyMDExLTAxLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRpbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2YzIzNTNkMGM4NzYwNGIzYjJjYTNkMjFkMGU2N2Y3ODA1OGMxODYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25U
aW1lIHJlbWFpbnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5p
bWF0aW9ucyBzdGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdGFydEFuaW1hdGlvblRpbWUgaXMg
ZGVmaW5lZC4KK1BBU1Mgc3RhcnRBbmltYXRpb25UaW1lIGlzIGVuZEFuaW1hdGlvblRpbWUKK1BB
U1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCBpcyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkaXYyKS5sZWZ0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tdGltZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tdGltZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZjY5NTAzZTBmMTkwNzlmMmY3YjYxYWI1MzM4OWM0NGMyNmIwZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10aW1lLmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmQgeworICAgIHBvc2l0aW9uOmFic29sdXRlOworICAg
IGxlZnQ6MHB4OworfQorCisuZC5hbmltYXRlZCB7CisgICAgbGVmdDoxMDBweDsKKyAgICAgLXdl
YmtpdC10cmFuc2l0aW9uOiBsZWZ0IDAuMXMgbGluZWFyOworICAgICAtbW96LXRyYW5zaXRpb246
IGxlZnQgMC4xcyBsaW5lYXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBjbGFzcz0i
ZCIgaWQ9ImRpdjEiPjwvZGl2PgorPGRpdiBjbGFzcz0iZCIgaWQ9ImRpdjIiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hbmltYXRpb24tdGltZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc2Ny
aXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvYW5pbWF0aW9uLXRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZjZjMxMjQzMTc0ZDE2ZjJh
NmIwMDY3YWIyNGU0NWU0YmJkZWU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGlvbi10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdpbmRvdy53ZWJraXRBbmltYXRpb25UaW1lIHJlbWFp
bnMgdGhlIHNhbWUgZHVyaW5nIGEgc2NyaXB0IHJ1biBhbmQgdGhhdCBhbGwgYW5pbWF0aW9ucyBz
dGFydGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZCIpOword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYxIik7Cit2YXIgZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyIik7CisK
K2RpdjEuY2xhc3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9w
OyAvLyBGb3JjZSBhIHN0eWxlIHJlY2FsYyB0byBzdGFydCB0aGUgZmlyc3QgYW5pbWF0aW9uLgor
Cit2YXIgc3RhcnRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7Citz
aG91bGRCZURlZmluZWQoJ3N0YXJ0QW5pbWF0aW9uVGltZScpOworCit2YXIgc3RhcnRUaW1lID0g
RGF0ZS5ub3coKTsKK3doaWxlIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgMTApIHt9CisKK3Zh
ciBlbmRBbmltYXRpb25UaW1lID0gd2luZG93LndlYmtpdEFuaW1hdGlvblRpbWU7CisvLyBUZXN0
IHRoYXQgdGhlIHdlYmtpdEFuaW1hdGlvblRpbWUgdmFsdWUgaGFzbid0IGNoYW5nZWQgb3V0IGZy
b20gdW5kZXIgdXMuCitzaG91bGRCZSgnc3RhcnRBbmltYXRpb25UaW1lJywgJ2VuZEFuaW1hdGlv
blRpbWUnKTsKKworLy8gU3RhcnQgYSBzZWNvbmQgZGVjbGFyYXRpdmUgYW5pbWF0aW9uIH4xMG1z
IGFmdGVyIHRoZSBmaXJzdCBvbmUuICBUaGV5IHNob3VsZCBiZSBpbiBzeW5jLgorZGl2Mi5jbGFz
c0xpc3QuYWRkKCJhbmltYXRlZCIpOworCit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICBzaG91bGRCZSgnd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MSkubGVmdCcsICd3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYyKS5sZWZ0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkwMDk2YjAzMjZkMTI3NmY5OGNi
ZDQ3YTM0YTljMjU4MjhhMDM4MjcuLjY2MzY4ZmZhODBhZGU1NTBmYTU2M2U5MGFjYTY0Yjk1NTFk
YTdkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBtb3ppbGxhJ3MgYW5pbWF0aW9uVGltZSBwcm9wZXJ0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE5NTIKKworICAgICAgICBD
aHJvbWl1bSBEUlQgc3VwcG9ydCBmb3Igd2Via2l0QW5pbWF0aW9uVGltZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdIb3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKToKKwogMjAxMS0wMS0wMyAgWWkgU2hlbiAg
PHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA4
NDkzMTJjNGIwNWVkYjgyMzRmYzBjNzU2MTRiYTk2MWQwMjhmMTBhLi5iYmMzMmZjNWFkZDlmNjU0
NmEyZTc0ODc5ZGIyODdmZDliMWMzMGJhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNDgyLDYgKzE0ODIsNyBAQCB2b2lkIFdlYlZpZXdI
b3N0OjpwYWludEludmFsaWRhdGVkUmVnaW9uKCkKICAgICAgICAgcGFpbnRSZWN0KHJlY3QpOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYWludFJlY3QuaXNFbXB0eSgpKTsKKyAgICB3ZWJXaWRnZXQo
KS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiBQbGF0Zm9ybUNhbnZhcyogV2Vi
Vmlld0hvc3Q6OmNhbnZhcygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJD
b3JlL0FuZHJvaWQubWsKaW5kZXggMjBkYjY2NzMxNDIyN2Q2MzIzM2Y5YmVkZDg2NGJlZTY1ZDRh
MWIxOC4uNTMwZTZhMTlhNTk4OGEzZmViYTA5N2YwODNjMTFhZjAwY2U2MTdiOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5tawpAQCAtNDQ2LDYg
KzQ0Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCVwKIAlw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgXAorCXBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9s
bGVyLmNwcCBcCiAJcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBcCiAJcGFn
ZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKIAlwYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWY3MTBkYjg2YTIwYTM4NThhMDI5YmQzMWRj
YjY1YzRiMTE5YmNhNC4uYTM3NjExNzM1OWMzYWU4MjA1N2Q3NjA4N2RmNmZhOTYxOTE5MzZkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xMjc3LDYgKzEyNzcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCisgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRy
b2xsZXIuY3BwCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAogICAg
IHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NWYyOTEzMzBiYmYxZTQ1MTc0MDJkY2QwN2Y0ZDMyMzU1
OGE5YmVkLi4yMzkyYjU0Nzc3Yjg1YjJlOTNkMTY2YzJiNWQyNmIwZTc2YzZkMDE3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDExLTAxLTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IG1vemlsbGEncyBhbmltYXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIEltcGxlbWVudHMg
bW96aWxsYSdzIGFuaW1hdGlvblRpbWUgcHJvcGVydHkgYXMgZGVzY3JpYmVkIGhlcmU6CisgICAg
ICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0RPTS93aW5kb3cubW96QW5pbWF0
aW9uU3RhcnRUaW1lCisgICAgICAgIGFuZCBodHRwOi8vaGFja3MubW96aWxsYS5vcmcvMjAxMC8w
OC9tb3JlLWVmZmljaWVudC1qYXZhc2NyaXB0LWFuaW1hdGlvbnMtd2l0aC1tb3pyZXF1ZXN0YW5p
bWF0aW9uZnJhbWUvCisgICAgICAgIFRoZSBwcm9wZXJ0eSBpcyBjYWxsZWQgd2Via2l0QW5pbWF0
aW9uVGltZSBhcyBjYWxsaW5nIGl0IHRoZSAnU3RhcnQnIHRpbWUgaXMgbm90IHZlcnkgaW5mb3Jt
YXRpdmUuCisgICAgICAgIFRoaXMgcHJvcGVydHkgZXhwb3NlcyBhIG5vdGlvbiBvZiBhICdjdXJy
ZW50JyB0aW1lIHRvIHVzZSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyBhbmQgYWxsb3dzCisg
ICAgICAgIHNjcmlwdHMgdG8gc3luY2hyb25pemUgaW1wZXJhdGl2ZSBhbmltYXRpb25zIHdpdGgg
ZGVjbGFyYXRpdmUgb25lcyBpZiB0aGV5IGNob29zZSB0by4gIE9uY2UgcXVlcmllZAorICAgICAg
ICB0aGlzIHRpbWUgaXMgc2F2ZWQgYW5kIHVzZWQgZm9yIGFsbCBkZWNsYXJhdGl2ZSBhbmltYXRp
b24gdXBkYXRlcyB1bnRpbCB0aGUgZW1iZWRkZXIgcGFpbnRzL2NvbXBvc2l0ZXMKKyAgICAgICAg
dGhlIG5leHQgZnJhbWUgYW5kIGNsZWFycyBpdCwgb3IgMTVtcyBlbGFwc2UgKGluIGNhc2UgdGhl
IGVtYmVkZGVyIGlzbid0IHByb2R1Y2luZyBmcmFtZXMsIGZvciBleGFtcGxlCisgICAgICAgIGlm
IHRoZSBwYWdlIGlzIGluIGEgYmFja2dyb3VuZCB0YWIpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyBlbnN1cmVzIHRoYXQgYWxsIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMgc3RhcnRlZCBpbiB0
aGUgc2FtZSBzY3JpcHQgZXhlY3V0aW9uIGJsb2NrCisgICAgICAgIGFyZSBzeW5jaHJvbml6ZWQg
ZXZlbiBpZiBzb21lIHRpbWUgZWxhcHNlcyB3aGlsZSBzY3JpcHQgaXMgcnVubmluZy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2FuaW1hdGlvbi9hbmltYXRpb24tdGltZS5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojp3ZWJraXRBbmltYXRpb25UaW1lKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjdXJyZW50QW5pbWF0aW9u
VGltZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSk6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1l
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6
fkFuaW1hdGlvblRpbWVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVDb250cm9sbGVyOjpjdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0
aW9uVGltZVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZUNv
bnRyb2xsZXI6OmNyZWF0ZSk6CisKIDIwMTEtMDEtMDQgIFRvbnkgR2VudGlsY29yZSAgPHRvbnln
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDQwNjMwNTRiMDM4ZmJkODZlYzQ4OGZmZGMwNDM2MTk4Y2Y5MDJhMTQuLmJkNjhhMDU1ZjllZDIw
YWZhNTYzZTgyZTA4YTBiNTJmN2M5NGVlZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE0MSw2ICsyMTQxLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBcCiAJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIFwKKwlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVDb250cm9sbGVyLmNw
cCBcCisJV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oIFwK
IAlXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXAogCVdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmggXAogCVdlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDU5M2JjNjBiZDA2ZTM2
ZmEzYTY2N2M3NjllYTgyNDljYWZkNzY3YzUuLmViNmY2ZGE1MTVhNWYyZjFiYjg1MzAyMjcwZDYw
NTY5NWVhN2EzZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTE4LDYgKzUxOCw3IEBAIF9fWk43V2ViQ29yZTIyY29u
dGV4dE1lbnVJdGVtVGFnQm9sZEV2CiBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVudEZyb21UZXh0RVBO
U181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzVGcmFtZUVqCitfX1pON1dlYkNvcmUyM0FuaW1hdGlvblRpbWVDb250cm9sbGVy
MjVjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpS
S05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29y
ZTIzUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmRDMUVQTlNfOERvY3VtZW50RU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiYmJiTlNfMTBFZGl0QWN0aW9uRQogX19aTjdX
ZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVj
dG9ySVBOU180Tm9kZUVMbTBFRUUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzBkM2JkZjJhMjQ3ZWYzYjQwNGYyOGU5YTI1NzQw
MDI5NGQwZmJmOS4uNDk0ZGE5ODc2NDI0NmZmNDliMmQwMDA0NWM3OTY3ZTZiOTM2ZDE4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIyMTksNiArMjIxOSw4IEBACiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGUuaCcsCisgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwJywKICAgICAgICAgICAgICdwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGM2MTQ4OThjYzdiZTc5YWJjZDNjNjM0MjMzMzY2ZDBjMzU1YmU3OWQuLjUy
MjMyMjQzMzdjZDIwZDExNDgwZDg3NjJkN2YxZjA3OWFiMTIxYmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTEwOSw2ICsxMTA5
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAgICAgcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
IFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTU5ZGNmNmRhODBhODU3MTg3YjExY2M4YTBl
ZmJmMzI0NWRkYWFkMy4uNDI0OTg3MjY4ZjE4Yzc3MGFkNmJhZmM2MjE3YjFlYmVlNzU1OGMzZSAx
MDA3NTUKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDE4Niw2ICsyNDE4Niwx
NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXGFuaW1hdGlvblxBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcYW5pbWF0aW9uXEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQmFySW5mby5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzgxZWExOWFkNTU1
OWI2N2UwZTI0ODMyZDVlZjlmZGNjZmQyMGE3Li4wMGYwZTNhYTJmOWZkMzNhODFhYmQwYzI4OGIy
YTU5Nzg0Y2VkZTQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTA4LDYgKzkwOCw4IEBACiAJCTM3RkQ0Mjk4MTE4MzY4NDYwMDkzQzAyOSAvKiBUcmVl
RGVwdGhMaW1pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGRDQyOTcxMTgzNjg0NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi87IH07CiAJ
CTM4ODhGNkVFMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzg4OEY2RUMx
MjhDOTg4OTAwMENBOEUwIC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgKi87IH07CiAJ
CTM4ODhGNkVGMTI4Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4ODhGNkVEMTI4
Qzk4ODkwMDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLzsgfTsKKwkJMzhE
RjFCMzUxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4REYxQjMzMTJENTI4
NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAgKi87IH07CisJCTM4REYx
QjM2MTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1lQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzhERjFCMzQxMkQ1Mjg0MjAw
RjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0FDNjQ4QjIxMjlFMTQ2NTAwQzNFQjI1IC8q
IEVkaXRpbmdCb3VuZGFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0FDNjQ4QjExMjlFMTQ2NTAwQzNFQjI1IC8qIEVkaXRpbmdCb3VuZGFyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMDAyQ0NE
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2NjBE
IC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCAqLzsgfTsKQEAgLTcyMjgsNiArNzIzMCw4IEBACiAJCTM3RkQ0Mjk3MTE4MzY4
NDYwMDkzQzAyOSAvKiBUcmVlRGVwdGhMaW1pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmVlRGVwdGhMaW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
ODg4RjZFQzEyOEM5ODg5MDAwQ0E4RTAgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4ODhGNkVEMTI4Qzk4ODkw
MDBDQThFMCAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM4REYxQjMzMTJENTI4NDIwMEYwNDc3RSAvKiBBbmltYXRpb25UaW1l
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHA7IHBhdGggPSBhbmltYXRpb24vQW5pbWF0aW9uVGltZUNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzOERGMUIzNDEyRDUy
ODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaDsgcGF0aCA9IGFuaW1h
dGlvbi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzQUM2NDhCMTEyOUUxNDY1MDBDM0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCb3VuZGFyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0
aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzAyNSw2ICsxMzAyOSw4IEBACiAJCQkJMzE2RkUxMDkwRTZFMURBNzAw
QkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAogCQkJCTMxNkZFMTBBMEU2RTFE
QTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJMEYxNURBODkwRjNB
QUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJCQkJMzhE
RjFCMzMxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLmNwcCAqLywK
KwkJCQkzOERGMUIzNDEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIu
aCAqLywKIAkJCQkzMTZGRTEwQjBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0aW9u
LmNwcCAqLywKIAkJCQkzMTZGRTEwQzBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5pbWF0
aW9uLmggKi8sCiAJCQkJMzE2RkUxMEQwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0
aW9uLmNwcCAqLywKQEAgLTE5MzE2LDYgKzE5MzIyLDcgQEAKIAkJCQkzMTZGRTExMjBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTQw
RTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMTVEQThBMEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhERjFCMzYxMkQ1Mjg0MjAwRjA0NzdFIC8qIEFuaW1h
dGlvblRpbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRDBFRkFDOTA2
MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcw
OTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMjYwNCw2ICsyMjYxMSw3IEBACiAJCQkJNDlFOTEyQUEwRUZBQzkwNjAwOUQw
Q0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3
MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTEx
MzBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkzOERGMUIzNTEyRDUyODQyMDBGMDQ3N0UgLyogQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTEyQUMwRUZBQzkwNjAwOUQwQ0FGIC8qIEFu
aW1hdGlvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlFNjQ5MjAwNTZF
NTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkJD
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCAzNDk3ZjEzMTc3MGE1ZWRiZDJmY2IwNzZhYTYwYTczMzY1M2Y1Yjli
Li4wYWI4OTEyNGUwZWVlZjczNmM3Y2Y0ZWY4NTAxYzUyN2JkMTQ1MWRiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtMTQ2NCw2ICsxNDY0LDEzIEBAIHZvaWQgRE9NV2luZG93OjpjbGVhckludGVydmFsKGlu
dCB0aW1lb3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoY29udGV4dCwgdGltZW91dElk
KTsKIH0KIAorRE9NVGltZVN0YW1wIERPTVdpbmRvdzo6d2Via2l0QW5pbWF0aW9uVGltZSgpCit7
CisgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRTZWNv
bmRzVG9ET01UaW1lU3RhbXAoZi0+Y3VycmVudEFuaW1hdGlvblRpbWUoKSk7CisgICAgcmV0dXJu
IGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSk7Cit9CisKIGJvb2wg
RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7
CiAgICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLCB1c2VDYXB0dXJlKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxYzg0ZjNjYWFkODU1MWY4NzllODk4ZmM0
NTUxNjFkMjI1ZGI4ODYyLi40ZjY4ZWQzM2NiYzY4MTkwYmU1NzMyZjkwOGE1NDA0Y2Q1NTZlODIx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIERPTVdpbmRvd19oCiAjZGVm
aW5lIERPTVdpbmRvd19oCiAKKyNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtMjM3LDYgKzIzOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50
IHNldEludGVydmFsKFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQp
OwogCisgICAgICAgIC8vIFdlYktpdCBhbmltYXRpb24gZXh0ZW5zaW9ucworICAgICAgICBET01U
aW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGltZSgpOworCiAgICAgICAgIC8vIEV2ZW50cwogICAg
ICAgICAvLyBFdmVudFRhcmdldCBBUEkKICAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGYzYWE3YmE1YmQ5MGYy
NjFlOGU1ZWJjNDhlNGFiOTE1YzBkOTY3YWMuLjM3MTgxMDhlYWQzNzNmOGM0N2MwNDhjZjI0YWFj
NDNkYWJkNjBkNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yMzYsNiArMjM2LDkgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIC8vIFtDdXN0b21dIGxvbmcgc2V0SW50ZXJ2YWwoaW4gRE9NU3RyaW5n
IGNvZGUsIGluIGxvbmcgdGltZW91dCk7CiAgICAgICAgIHZvaWQgY2xlYXJJbnRlcnZhbChpbiBs
b25nIGhhbmRsZSk7CiAKKyAgICAgICAgLy8gV2ViS2l0IGFuaW1hdGlvbiBleHRlbnNpb25zCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgd2Via2l0QW5pbWF0aW9uVGlt
ZTsKKwogICAgICAgICAvLyBCYXNlNjQKICAgICAgICAgRE9NU3RyaW5nIGF0b2IoaW4gW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgc3RyaW5nKQogICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NTUyM2M2NGNlMWU1YWQyYTNiZDVmZmQyYzQxYTQ4
MGE0MmY4NDQ5Li41YzVhZDM3MDBhNzgzNzk0MDQzOGRjZmVlZTAyOTA1NjdkOTQ3OTY1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBseVN0eWxlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC04Myw2ICs4
NCw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIK
ICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIApAQCAtNzUyLDYgKzc1NCwxNCBAQCB2b2lkIEZyYW1lOjp0cmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAgICB9CiB9CiAKK2RvdWJsZSBGcmFtZTo6Y3Vy
cmVudEFuaW1hdGlvblRpbWUoKQoreworICAgIGlmIChQYWdlKiBwID0gcGFnZSgpKQorICAgICAg
ICByZXR1cm4gcC0+YW5pbWF0aW9uVGltZSgpLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOworICAg
IHJldHVybiBjdXJyZW50VGltZSgpOworfQorCisKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBl
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0gZG9jdW1l
bnQoKS0+ZG9jdHlwZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCAxY2RmYTgxODgxODc2MDFiODA4MTI3MGZlZjAxNGI2N2E2
MmU5YjZlLi44OTJhNWVhN2E4YjNkMTVlYWYxYmM2ZDdiYjllNjQzMTQ2NDhkMDI2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MTA3LDYgKzEwNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKIAorICAgICAgICBkb3VibGUgY3VycmVudEFu
aW1hdGlvblRpbWUoKTsKKwogICAgIC8vID09PT09PT09IEFsbCBwdWJsaWMgZnVuY3Rpb25zIGJl
bG93IHRoaXMgcG9pbnQgYXJlIGNhbmRpZGF0ZXMgdG8gbW92ZSBvdXQgb2YgRnJhbWUgaW50byBh
bm90aGVyIGNsYXNzLiA9PT09PT09PQogCiAgICAgICAgIGJvb2wgaXNEaXNjb25uZWN0ZWQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBhNzhjZmI3NTJlNDA0YmVmZmE1MDMyZTBmN2M2NDM2M2RlMzI4OTgxLi5i
MmMwMjQxNWExN2U3ZGI1OWUxMjFiOWQwYWJiYTlhZjRjZjU0MzQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMCw2ICsy
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaW5jbHVk
ZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJCYXNlNjQu
aCIKQEAgLTE1Niw2ICsxNTcsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdl
Q2xpZW50cykKICAgICAsIG1fc2V0dGluZ3MoYWRvcHRQdHIobmV3IFNldHRpbmdzKHRoaXMpKSkK
ICAgICAsIG1fcHJvZ3Jlc3MoYWRvcHRQdHIobmV3IFByb2dyZXNzVHJhY2tlcikpCiAgICAgLCBt
X2JhY2tGb3J3YXJkQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQmFja0ZvcndhcmRDb250cm9sbGVy
KHRoaXMsIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX2FuaW1hdGlv
blRpbWVDb250cm9sbGVyKEFuaW1hdGlvblRpbWVDb250cm9sbGVyOjpjcmVhdGUoKSkKICAgICAs
IG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKICAgICAsIG1fZWRpdG9y
Q2xpZW50KHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNzQxM2JiNjk5ZGYxZjcwZGVhNTQ1ZjU1YThmNzliZjlhMWM1NjBiOS4uMmEwNTdjMzg0MTcz
M2I3OTJmNTA0NzdkYjkyYWI3ZDE0MDUwYmMwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBbmltYXRpb25UaW1l
Q29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZENvbnRyb2xsZXI7CiAgICAgY2xhc3Mg
QmFja0ZvcndhcmRMaXN0OwogICAgIGNsYXNzIENocm9tZTsKQEAgLTE4Miw2ICsxODMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KICAgICAgICAgQmFja0Zv
cndhcmRDb250cm9sbGVyKiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyLmdldCgpOyB9CisgICAgICAgIEFuaW1hdGlvblRpbWVDb250cm9sbGVyKiBh
bmltYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25UaW1lQ29udHJvbGxlci5n
ZXQoKTsgfQogCiAgICAgICAgIGVudW0gVmlld01vZGUgewogICAgICAgICAgICAgVmlld01vZGVJ
bnZhbGlkLApAQCAtMzI3LDYgKzMyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
T3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVzczsKICAgICAgICAgCiAgICAgICAgIE93
blB0cjxCYWNrRm9yd2FyZENvbnRyb2xsZXI+IG1fYmFja0ZvcndhcmRDb250cm9sbGVyOworICAg
ICAgICBPd25QdHI8QW5pbWF0aW9uVGltZUNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uVGltZUNvbnRy
b2xsZXI7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9tYWluRnJhbWU7CiAKICAgICAgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBtX2dsb2JhbEhpc3RvcnlJdGVtOwpAQCAtMzgwLDYgKzM4Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBtX25v
dGlmaWNhdGlvblByZXNlbnRlcjsKICNlbmRpZgogCisgICAgICAgIGRvdWJsZSBtX2N1cnJlbnRB
bmltYXRpb25UaW1lOworCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAgICAg
Vmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxMjgxZGQxOGE3NjU0YzNl
ZTYyNTEzN2E0YTVjNzg3M2Q0ZGZlZmEuLmE0ZTAwNjM3NTcyZjBmNzQ2YTU1OTU5ZDc4MGVkM2Jm
ZjNiMDM0ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjCiBkb3Vi
bGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgp
CiB7CiAgICAgaWYgKG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID09IGNCZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWVOb3RTZXQpCi0gICAgICAgIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID0g
Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPSBtX2Zy
YW1lLT5jdXJyZW50QW5pbWF0aW9uVGltZSgpOwogICAgIHJldHVybiBtX2JlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDlmNjRlN2ZiY2U2NDgwOTVkMjY2NjJl
ZTc5Nzk3NjIzNGRlOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCitzdGF0aWMgY29uc3QgZG91
YmxlIGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldCA9IC0xOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjpBbmltYXRpb25UaW1lQ29udHJvbGxlcigp
CisgICAgOiBtX2N1cnJlbnRBbmltYXRpb25UaW1lKGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNl
dCkKKyAgICAsIG1fY2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyKHRoaXMsICZBbmltYXRp
b25UaW1lQ29udHJvbGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZVRpbWVyRmlyZWQpCit7
Cit9CisKK0FuaW1hdGlvblRpbWVDb250cm9sbGVyOjp+QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIo
KQoreworfQorCitkb3VibGUgQW5pbWF0aW9uVGltZUNvbnRyb2xsZXI6OmN1cnJlbnRBbmltYXRp
b25UaW1lKCkKK3sKKyAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uVGltZSA9PSBjQ3VycmVudEFu
aW1hdGlvblRpbWVOb3RTZXQpIHsKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uVGltZSA9IGN1
cnJlbnRUaW1lKCk7CisgICAgICAgIC8vIENsZWFyIG91dCB0aGUgYW5pbWF0aW9uIHRpbWUgYWZ0
ZXIgMTVtcyBpZiBpdCBoYXNuJ3QgYmVlbiBhbHJlYWR5LgorICAgICAgICBtX2NsZWFyQ3VycmVu
dEFuaW1hdGlvblRpbWVUaW1lci5zdGFydE9uZVNob3QoMC4wMTUpOworICAgIH0KKyAgICByZXR1
cm4gbV9jdXJyZW50QW5pbWF0aW9uVGltZTsKK30KKwordm9pZCBBbmltYXRpb25UaW1lQ29udHJv
bGxlcjo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7CisgICAgbV9jdXJyZW50QW5pbWF0
aW9uVGltZSA9IGNDdXJyZW50QW5pbWF0aW9uVGltZU5vdFNldDsKKyAgICBpZiAobV9jbGVhckN1
cnJlbnRBbmltYXRpb25UaW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9jbGVhckN1cnJl
bnRBbmltYXRpb25UaW1lVGltZXIuc3RvcCgpOworfQorCit2b2lkIEFuaW1hdGlvblRpbWVDb250
cm9sbGVyOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lVGltZXJGaXJlZChUaW1lcjxBbmltYXRp
b25UaW1lQ29udHJvbGxlcj4qKQoreworICAgIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lQ29udHJv
bGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmOGQwYjNmM2ZiYmZmMzViOTJmMjEyNGYxNzMyMWM0MWY5NTYx
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBbmlt
YXRpb25UaW1lQ29udHJvbGxlcl9oCisjZGVmaW5lIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gK
KworI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmltYXRpb25UaW1lQ29udHJvbGxlciA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QW5pbWF0aW9u
VGltZUNvbnRyb2xsZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEFuaW1hdGlvblRpbWVDb250cm9sbGVyKTsKKyAgICB9CisgICAgfkFuaW1hdGlvblRpbWVD
b250cm9sbGVyKCk7CisKKyAgICBkb3VibGUgY3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICB2
b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKworcHJpdmF0ZToKKyAgICBBbmltYXRp
b25UaW1lQ29udHJvbGxlcigpOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1l
VGltZXJGaXJlZChUaW1lcjxBbmltYXRpb25UaW1lQ29udHJvbGxlcj4qKTsKKworICAgIGRvdWJs
ZSBtX2N1cnJlbnRBbmltYXRpb25UaW1lOworICAgIFRpbWVyPEFuaW1hdGlvblRpbWVDb250cm9s
bGVyPiBtX2NsZWFyQ3VycmVudEFuaW1hdGlvblRpbWVUaW1lcjsKK307CisKK30KKworI2VuZGlm
IC8vIEFuaW1hdGlvblRpbWVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZlZjA1OGMzM2Uy
YjYxNTg5Y2EzOGEzMGU0MjE1ZTc4MGVmYmEyZWYuLjRiZGJmYTQ3YzY2NmJkZGNhNzRjMzJhNmY0
M2I3MWYzNWFhZjA2NDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAxLTA1
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vemlsbGEncyBhbmlt
YXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFdlYktpdCBBUEkgc3VwcG9ydCBmb3Igd2Via2l0
QW5pbWF0aW9uVGltZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAg
KiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dUltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAqIHNyYy9XZWJQb3B1
cE1lbnVJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTAxLTAzICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgQ2hyb21pdW0gTGludXggUmVs
ZWFzZSBidWlsZCBhZnRlciBjaGFuZ2VzZXQgNzQ4OTUgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc0ODk1Pi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V2lkZ2V0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGQwMTAy
NzA2NWM5ZTkwYzE0NzU2ZTc3ODdjYTI2NmRmNjdlYWVjM2IuLjdiNTdiOWRiMDJiMmYzYWRmNGMz
OTI4MGQ4MGQzNTJmYjEwMjE0N2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV2lkZ2V0LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAt
NTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB0byByZXNpemUgdGhlIFdlYldp
ZGdldC4KICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CiAKKyAg
ICAvLyBDYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHdpZGdldCBoYXMgYmVlbiByZW5kZXJl
ZCBhbmQgdGhlIHdpZGdldAorICAgIC8vIG5vIGxvbmdlciBuZWVkcyB0byBzdG9yZSB0aGUgYW5p
bWF0aW9uIHRpbWUuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUo
KSA9IDA7CisKICAgICAvLyBDYWxsZWQgdG8gbGF5b3V0IHRoZSBXZWJXaWRnZXQuICBUaGlzIE1V
U1QgYmUgY2FsbGVkIGJlZm9yZSBQYWludCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBj
YWxscyB0byBXZWJXaWRnZXRDbGllbnQ6OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCAwODVhMTU3NWU1NGJmMGU3YTRhYzhlNTg3OGEwMzg2MDU4OTJlNWQ5Li5lNGU0OGJj
NzFmYjJjZWM4YWIzYTYyMTNiYWU2M2QwNmVkYjA4MWEyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHAKQEAgLTE1MSw2ICsxNTEsMTAgQEAgdm9pZCBXZWJQb3B1cE1l
bnVJbXBsOjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICAgICB9CiB9CiAKK3ZvaWQg
V2ViUG9wdXBNZW51SW1wbDo6Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpCit7Cit9CisKIHZv
aWQgV2ViUG9wdXBNZW51SW1wbDo6bGF5b3V0KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
b3B1cE1lbnVJbXBsLmgKaW5kZXggMjIxYmEwMzhmMmM0YzczNmQ2NzdmYWJmYTMyMmUwNTFmOTA0
MjY0Yy4uYzUyODdkMzgxMTc4YTlkOWVlZTE2ZWI2NGVkNGNjZGQwNjA4MDA1NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgeyBy
ZXR1cm4gbV9zaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQ3N2E1YjNmNjJmM2Y5N2U2
NDM1ZjljMTQ1MDllZDBiNDk5YTFlNjcuLjMyYTNiYzE0ZWMyYjRlMmM0NmZiYTJmMDc3NWUyNWQ1
YzEyOGJiOGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2lu
Y2x1ZGUgIkFuaW1hdGlvblRpbWVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQXV0b0ZpbGxQb3B1
cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0SW1wbC5oIgpAQCAtOTc3LDYgKzk3OCwxMyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgbmV3U2l6ZSkKICNlbmRpZgogfQogCit2b2lkIFdlYlZp
ZXdJbXBsOjpjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCkKK3sKKyAgICBXZWJGcmFtZUltcGwq
IHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOworICAgIGlmICh3ZWJmcmFtZSkKKyAgICAgICAg
d2ViZnJhbWUtPmZyYW1lKCktPnBhZ2UoKS0+YW5pbWF0aW9uVGltZSgpLT5jbGVhckN1cnJlbnRB
bmltYXRpb25UaW1lKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmxheW91dCgpCiB7CiAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCA4MGFiZjgxM2VlYmY5NjIxNjVlMjBlOTk1MmJkZDY5Y2FjMDJmMWRh
Li5lYWI4MWI0NDQxMGJhNmFiOWM1ZWYzM2E0MzlmYjVlZjYxOWIyNjRiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKTsKICAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIHZpcnR1YWwg
dm9pZCBjbGVhckN1cnJlbnRBbmltYXRpb25UaW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDU0ZjBhNDUyMDFkMjQ4NzI1ZmRmOGUwYTRiNDVmYjc3NWJkZGQ3YmQuLjhlYmRj
ODY2NGMyOWE3ZWM2YTNmZTc0MjQ5YTlmZTI3NmNjMDdkMmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCA8QXBwS2l0L05TQWNjZXNzaWJpbGl0eS5oPgogI2ltcG9ydCA8QXBwbGljYXRpb25T
ZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0FuaW1hdGlv
blRpbWVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZEltYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg+CkBAIC0zNTA1LDYgKzM1MDYsMTAgQEAgc3RhdGlj
IHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIH0KICNlbmRpZgogCisgICAg
RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5Db3JlRnJhbWVdOworICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+cGFnZSgpKQorICAgICAgICBmcmFtZS0+cGFnZSgpLT5hbmltYXRpb25UaW1lKCkt
PmNsZWFyQ3VycmVudEFuaW1hdGlvblRpbWUoKTsKKyAgICAKICAgICBpZiAod2ViVmlldykKICAg
ICAgICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRHJhd0Zy
YW1lOiksIFtzZWxmIF9mcmFtZV0pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NmVhN2Qw
ZDQ2NjQ1ZWFhM2NkMzA1YzRhNzlkNDdjYzA1ZDJmY2JhLi44OWJhYTZkNjEyMTIxNjJmMjA3Zjc3
NDc0OTk3YzFlOTA5NjZhMzMzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTEwLDYgKzExMCw3
IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgpAQCAtNTk1Nyw2
ICs1OTU4LDEwIEBAIHN0YXRpYyB2b2lkIGxheWVyU3luY1J1bkxvb3BPYnNlcnZlckNhbGxCYWNr
KENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3RpCiAgICAgICAgIC8vIHNvIHRoYXQg
dGhlIGxheWVycyBkcmF3IHdpdGggdXAtdG8tZGF0ZSBsYXlvdXQuIAogICAgICAgICBbd2ViVmll
dyBfdmlld1dpbGxEcmF3SW50ZXJuYWxdOwogICAgIH0KKyAgICAKKyAgICBGcmFtZSogZnJhbWUg
PSBbd2ViVmlldyBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdl
KCkpCisgICAgICAgIGZyYW1lLT5wYWdlKCktPmFuaW1hdGlvblRpbWUoKS0+Y2xlYXJDdXJyZW50
QW5pbWF0aW9uVGltZSgpOyAgICAKIH0KIAogLSAodm9pZClfc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyU3luYwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAyOWZjZjg3YjFhZGM1NmQ2MjljYjk2ZDU5ZDljMGQwMDkxZDQyMDNmLi5hNjAyM2Vj
ZWNjODQ4YTI2N2VhYTJkZGJkODMxM2NhYzk4NWJlZjRlIDEwMDY0NAotLS0gYS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAx
LTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vemlsbGEncyBh
bmltYXRpb25UaW1lIHByb3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFRlbGxzIHRoZSBwYWdlIHRvIGNsZWFyIHRo
ZSBjdXJyZW50IGFuaW1hdGlvbiB0aW1lIGFmdGVyIHByb2R1Y2luZyBhIGZyYW1lLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYTo6c2V0U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllckJh
Y2tlZERyYXdpbmdBcmVhTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdp
bmdBcmVhOjpzeW5jQ29tcG9zaXRpbmdMYXllcnMpOgorCiAyMDExLTAxLTA0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYS5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWEuY3BwCmluZGV4IDFjY2U1ZDAxMDExNDE1Yjc1MmQ4N2ZiNzE0MWIzZGM4MjQ5
NWE0ODMuLjUzYTFmMjUyMDg3MTMyYWRmY2JmMjBlZTY3NGRjZjI5NjkyZjM3ZDAgMTAwNjQ0Ci0t
LSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5j
cHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BbmltYXRpb25UaW1lQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTAsNiArOTIsOCBA
QCB2b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6ZGlzcGxheSgpCiAgICAgcGFpbnRJbnRv
VXBkYXRlQ2h1bmsoJnVwZGF0ZUNodW5rKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChEcmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6VXBkYXRlLCBt
X3dlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbih1cGRhdGVDaHVuaykpOworICAgIAorICAg
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+YW5pbWF0aW9uVGltZSgpLT5jbGVhckN1cnJlbnRBbmlt
YXRpb25UaW1lKCk7CiAKICAgICBtX2lzV2FpdGluZ0ZvclVwZGF0ZSA9IHRydWU7CiAgICAgbV9k
aXNwbGF5VGltZXIuc3RvcCgpOwpAQCAtMTQzLDYgKzE0Nyw3IEBAIHZvaWQgQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQogICAgIG1fZGlz
cGxheVRpbWVyLnN0b3AoKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChEcmF3aW5nQXJlYVByb3h5TGVnYWN5TWVzc2FnZTo6RGlkU2V0U2l6ZSwgbV93ZWJQ
YWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4odXBkYXRlQ2h1bmspKTsKKyAgICBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPmFuaW1hdGlvblRpbWUoKS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgp
OwogfQogCiB2b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkK
ZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTk5MGNiMzY5ZDljMzg5
YzJjNmM5ZmNjMzUxMGYwMmI5YWRkNTM0NC4uNWMwNTUyZTZkODZjYTZhNDJiNjRiZmI0YzM0YTU5
ZTY3N2JlMGQ0NyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU5
LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWJz
dHJhY3REYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9uVGltZUNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aD4KQEAgLTUxMSw2ICs1MTIsOCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICBtX3Bh
Z2VPdmVybGF5LT5kcmF3UmVjdChncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICBncmFw
aGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KKyAgICAKKyAgICBtX3BhZ2UtPmFuaW1hdGlv
blRpbWUoKS0+Y2xlYXJDdXJyZW50QW5pbWF0aW9uVGltZSgpOwogfQogCiBkb3VibGUgV2ViUGFn
ZTo6dGV4dFpvb21GYWN0b3IoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMubW0gYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbQppbmRleCBmOGI3
ZTcxYjIzZmIzZTZmMzYwZDliNjdhZjQ1MDUzODJjNWQzOGExLi5lMzBhNjlhOTcwY2RlY2NlYTU0
YTI0ODBiOWU5YTkwMWNlZmMwODAwIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbQorKysgYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Bbmlt
YXRpb25UaW1lQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgpAQCAtMTIxLDYgKzEyMiw4IEBAIHZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c3lu
Y0NvbXBvc2l0aW5nTGF5ZXJzKCkKICAgICBpZiAoIWRpZFN5bmMpIHsKICAgICAKICAgICB9CisK
KyAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmFuaW1hdGlvblRpbWUoKS0+Y2xlYXJDdXJyZW50
QW5pbWF0aW9uVGltZSgpOwogfQogCiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNldFVw
VXBkYXRlTGF5b3V0UnVuTG9vcE9ic2VydmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78301</attachid>
            <date>2011-01-07 19:27:51 -0800</date>
            <delta_ts>2011-04-26 18:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51952-20110107192750.patch</filename>
            <type>text/plain</type>
            <size>9819</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NWY2YzIwOTc0ZjIxZWNmYmIwZTQzY2MzYzA3YjE2NGNhOTQ5Zjc3Li5lYjA3ZjY2
MGI1YTAxZTk3NjhkNDgyOTdjNTM1NGNiMDhjZmY0NWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDEtMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbmltYXRpb25zIHN0
YXJ0ZWQgaW4gdGhlIHNhbWUgc2NyaXB0IGV4ZWN1dGlvbiBibG9jayBzaG91bGQgYmUgc3luY2hy
b25pemVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTE5NTIKKworICAgICAgICBUZXN0cyB0aGF0IHR3byBkZWNsYXJhdGl2ZSBhbmltYXRpb25zIHN0
YXJ0ZWQgaW4gdGhlIHNhbWUgc2NyaXB0IGJsb2NrCisgICAgICAgIGFyZSBpbiBzeW5jIGV2ZW4g
aWYgdGhlIHNjcmlwdCB0YWtlcyB0aW1lIHRvIGNvbXBsZXRlLgorCisgICAgICAgICogYW5pbWF0
aW9ucy9hbmltYXRpb24tc3luYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFuaW1h
dGlvbnMvYW5pbWF0aW9uLXN5bmMuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9z
Y3JpcHQtdGVzdHMvYW5pbWF0aW9uLXN5bmMuanM6IEFkZGVkLgorCiAyMDExLTAxLTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgYSBwbGF0
Zm9ybS1zcGVjaWZpYyBiYXNlbGluZSBmb3IgR1RLKyBhZnRlciByNzUyNTcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zeW5jLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4OTk4NTQ5NTUyMTQ5ZDE4NTgwYjYyNWI0NGRmOGNhN2MzZmYyMTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IGFsbCBhbmltYXRpb25zIHN0YXJ0ZWQgd2l0
aGluIGEgc2NyaXB0IHJ1biBhcmUgc3luY2hyb25pemVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdjEpLmxlZnQgaXMgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MikubGVmdAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvYW5pbWF0aW9uLXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzU5MGMzZTNkOWZjNGQzMjBmOGEyODRiN2UwY2Fk
MmNhYWIxZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmlt
YXRpb24tc3luYy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKy5kIHsKKyAgICBwb3NpdGlvbjph
YnNvbHV0ZTsKKyAgICBsZWZ0OjBweDsKK30KKworLmQuYW5pbWF0ZWQgeworICAgIGxlZnQ6MTAw
cHg7CisgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCAwLjFzIGxpbmVhcjsKKyAgICAgLW1v
ei10cmFuc2l0aW9uOiBsZWZ0IDAuMXMgbGluZWFyOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxkaXYgY2xhc3M9ImQiIGlkPSJkaXYxIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImQiIGlkPSJkaXYy
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYW5pbWF0aW9uLXN5bmMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRpb24tc3luYy5qcyBiL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGlvbi1zeW5jLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzJl
MTBiODczZjI5Y2MwOWU3NjMyMDllNjliMWJjMTFhYzlhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRpb24tc3luYy5qcwpAQCAt
MCwwICsxLDIxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhbGwgYW5pbWF0aW9ucyBzdGFy
dGVkIHdpdGhpbiBhIHNjcmlwdCBydW4gYXJlIHN5bmNocm9uaXplZCIpOword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCit2YXIgZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXYxIik7Cit2YXIgZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyIik7CisKK2Rp
djEuY2xhc3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9wOyAv
LyBGb3JjZSBhIHN0eWxlIHJlY2FsYyB0byBzdGFydCB0aGUgZmlyc3QgYW5pbWF0aW9uLgorCit2
YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKK3doaWxlIChEYXRlLm5vdygpIC0gc3RhcnRUaW1l
IDwgMTApIHt9CisKKy8vIFN0YXJ0IGEgc2Vjb25kIGRlY2xhcmF0aXZlIGFuaW1hdGlvbiB+MTBt
cyBhZnRlciB0aGUgZmlyc3Qgb25lLiAgVGhleSBzaG91bGQgYmUgaW4gc3luYy4KK2RpdjIuY2xh
c3NMaXN0LmFkZCgiYW5pbWF0ZWQiKTsKKword2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdjEpLmxlZnQnLCAnd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZGl2MikubGVmdCcpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fSwgNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFlMzA5NGNmOGM1NDM5
OGRmMWU2ZDY2ZDBiNjJkMzA2YThmZWY3OS4uMGI5NjgzY2RiYjM0NWFkNGU0YWRhZjQzMDE1NDMz
Y2YzZmVjNTkwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wMS0wNyAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFuaW1hdGlvbnMgc3RhcnRlZCBpbiB0aGUgc2FtZSBzY3JpcHQgZXhlY3V0
aW9uIGJsb2NrIHNob3VsZCBiZSBzeW5jaHJvbml6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTk1MgorCisgICAgICAgIFRoaXMgYXVnbWVudHMg
dGhlIGFuaW1hdGlvbiBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIHRvIGtlZXAgYWxsIGFuaW1h
dGlvbnMgc3RhcnRlZAorICAgICAgICBpbiB0aGUgc2FtZSBleGVjdXRpb24gYmxvY2sgKHdpdGhv
dXQgeWllbGRpbmcgdG8gdGhlIHJ1biBsb29wKSBhcmUgaW4gc3luYywgcmF0aGVyIHRoYW4KKyAg
ICAgICAganVzdCBzeW5jaW5nIGFuaW1hdGlvbnMgd2l0aGluIGEgc3R5bGUgcmVjYWxjLiAgVGhp
cyBpcyBhY2hpZXZlZCBieSBhZGRpbmcgYSB6ZXJvLWRlbGF5CisgICAgICAgIHRpbWVyIHRvIHN5
bmMgdXAgYWxsIHNvZnR3YXJlIGRyaXZlbiBhbmltYXRpb25zIGFuZCBieSB1c2luZyB0aGUgdGlt
ZXN0YW1wIGZyb20gdGhlCisgICAgICAgIGhhcmR3YXJlIGFuaW1hdGlvbiBzeXN0ZW0gKGlmIHRo
ZXJlIGlzIG9uZSkgZm9yIGFsbCBhbmltYXRpb25zIGlmIHNvbWUgaGFyZHdhcmUgZHJpdmVuCisg
ICAgICAgIGFuaW1hdGlvbnMgYXJlIGRlY2xhcmVkIHdpdGhpbiB0aGUgZXhlY3V0aW9uIGJsb2Nr
LgorCisgICAgICAgIE5vdGUgdGhhdCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTIwOTEgcHJldmVudHMgc29mdHdhcmUgYW5kIGhhcmR3YXJlIGRyaXZlbgorICAgICAg
ICBhbmltYXRpb25zIGZyb20gc3luY2luZyB1cCBwZXJmZWN0bHkgaW4gdGhlIE1hYyBwb3J0IG9u
IFNub3cgTGVvcGFyZCBjdXJyZW50bHkuCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy9hbmlt
YXRpb24tc3luYy5odG1sCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
OjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZTo6ZW5kQW5pbWF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdGFydFRpbWVXYWl0ZXJUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZWNlaXZl
ZFN0YXJ0VGltZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjphZGRUb1N0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnJlbW92ZUZyb21TdGFydFRpbWVSZXNw
b25zZVdhaXRMaXN0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oOgorCiAyMDExLTAxLTA3ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBlMTI4MWRk
MThhNzY1NGMzZWU2MjUxMzdhNGE1Yzc4NzNkNGRmZWZhLi5iMWVlOGQxOGY0NjJhYWFkYTk0MThk
NzJiMTk0NzY1ZDFmZmE2MzQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBj
QmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0ID0gLTE7CiBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUoRnJhbWUqIGZyYW1lKQogICAgIDog
bV9hbmltYXRpb25UaW1lcih0aGlzLCAmQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFuaW1h
dGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKHRo
aXMsICZBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlU3R5bGVJZk5lZWRlZERpc3Bh
dGNoZXJGaXJlZCkKKyAgICAsIG1fc3RhcnRUaW1lV2FpdGVyVGltZXIodGhpcywgJkFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjpzdGFydFRpbWVXYWl0ZXJUaW1lckZpcmVkKQogICAgICwgbV9m
cmFtZShmcmFtZSkKICAgICAsIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKGNCZWdpbkFuaW1h
dGlvblVwZGF0ZVRpbWVOb3RTZXQpCiAgICAgLCBtX3N0eWxlQXZhaWxhYmxlV2FpdGVycygwKQpA
QCAtMzIyLDEzICszMjMsMTkgQEAgZG91YmxlIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpi
ZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKQogCiB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjplbmRBbmltYXRpb25VcGRhdGUoKQogeworICAgIGlmICghbV9zdGFydFRpbWVXYWl0ZXJU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBzdHlsZUF2YWlsYWJsZSgpOworfQorCit2b2lkIEFu
aW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdGFydFRpbWVXYWl0ZXJUaW1lckZpcmVkKFRpbWVy
PEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPiopCit7CisgICAgcmVjZWl2ZWRTdGFydFRpbWVS
ZXNwb25zZShiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSk7CiAgICAgc3R5bGVBdmFpbGFibGUo
KTsKLSAgICBpZiAoIW1fd2FpdGluZ0ZvclN0YXJ0VGltZVJlc3BvbnNlKQotICAgICAgICBzdGFy
dFRpbWVSZXNwb25zZShiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSk7CiB9CiAKIHZvaWQgQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnJlY2VpdmVkU3RhcnRUaW1lUmVzcG9uc2UoZG91Ymxl
IHRpbWUpCiB7CisgICAgQVNTRVJUKCFtX3N0YXJ0VGltZVdhaXRlclRpbWVyLmlzQWN0aXZlKCkp
OwogICAgIG1fd2FpdGluZ0ZvclN0YXJ0VGltZVJlc3BvbnNlID0gZmFsc2U7CiAgICAgc3RhcnRU
aW1lUmVzcG9uc2UodGltZSk7CiB9CkBAIC00MTksMjAgKzQyNiwxNyBAQCB2b2lkIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjphZGRUb1N0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QoQW5pbWF0
aW9uQmFzZSogYQogICAgIC8vIGlzIG5vdCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZvciBpdHNl
bGYsIGJ1dCByYXRoZXIgZm9yIGEgbm90aWZ5WFhYU3RhcnRlZCgpIGNhbGwgZm9yIAogICAgIC8v
IGFub3RoZXIgYW5pbWF0aW9uIHRvIHdoaWNoIGl0IHdpbGwgc3luYy4KICAgICAvLwotICAgIC8v
IFdoZW4gZW5kQW5pbWF0aW9uVXBkYXRlKCkgaXMgY2FsbGVkIHdlIGNoZWNrIHRvIHNlZSBpZiB0
aGUgd2FpdGluZ0ZvckFSZXNwb25zZSBmbGFnIGlzCi0gICAgLy8gdHJ1ZS4gSWYgc28sIHdlIGp1
c3QgcmV0dXJuIGFuZCB3aWxsIGRvIG91ciB3b3JrIHdoZW4gdGhlIGZpcnN0IG5vdGlmeVhYWFN0
YXJ0ZWQoKSBjYWxsCi0gICAgLy8gY29tZXMgaW4uIElmIGl0IGlzIGZhbHNlLCB3ZSB3aWxsIG5v
dCBiZSBnZXR0aW5nIGEgbm90aWZ5WFhYU3RhcnRlZCgpIGNhbGwsIHNvIHdlIHdpbGwKLSAgICAv
LyBkbyBvdXIgd29yayByaWdodCBhd2F5LiBJbiBib3RoIGNhc2VzIHdlIGNhbGwgdGhlIG9uQW5p
bWF0aW9uU3RhcnRSZXNwb25zZSgpIG1ldGhvZAotICAgIC8vIG9uIGVhY2ggYW5pbWF0aW9uLiBJ
biB0aGUgZmlyc3QgY2FzZSB3ZSBzZW5kIGluIHRoZSB0aW1lIHdlIGdvdCBmcm9tIG5vdGlmeVhY
WFN0YXJ0ZWQoKS4KLSAgICAvLyBJbiB0aGUgc2Vjb25kIGNhc2UsIHdlIGp1c3QgcGFzcyBpbiB0
aGUgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkuCi0gICAgLy8KLSAgICAvLyBUaGlzIHdpbGwg
c3luY2hyb25pemUgYWxsIHNvZnR3YXJlIGFuZCBhY2NlbGVyYXRlZCBhbmltYXRpb25zIHN0YXJ0
ZWQgaW4gdGhlIHNhbWUgCi0gICAgLy8gdXBkYXRlU3R5bGVJZk5lZWRlZCBjeWNsZS4KLSAgICAv
LworICAgIC8vIFRoaXMgd2lsbCBzeW5jaHJvbml6ZSBhbGwgc29mdHdhcmUgYW5kIGFjY2VsZXJh
dGVkIGFuaW1hdGlvbnMgc3RhcnRlZCB3aXRob3V0IHlpZWxkaW5nIHRvIHRoZQorICAgIC8vIHJ1
biBsb29wLgogICAgIEFTU0VSVCghYW5pbWF0aW9uLT5uZXh0KCkpOwotICAgIAotICAgIGlmICh3
aWxsR2V0UmVzcG9uc2UpCisKKyAgICBpZiAod2lsbEdldFJlc3BvbnNlKSB7CiAgICAgICAgIG1f
d2FpdGluZ0ZvclN0YXJ0VGltZVJlc3BvbnNlID0gdHJ1ZTsKKyAgICAgICAgbV9zdGFydFRpbWVX
YWl0ZXJUaW1lci5zdG9wKCk7CisgICAgfSBlbHNlIGlmICghbV93YWl0aW5nRm9yU3RhcnRUaW1l
UmVzcG9uc2UgJiYgIW1fc3RhcnRUaW1lV2FpdGVyVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAg
ICAvLyBJZiB0aGlzIGFuaW1hdGlvbiB3aWxsIG5vdCByZWNlaXZlIGFuIGV4cGxpY2l0IGNhbGxi
YWNrLCBzZXQgYSB0aW1lciB0byBraWNrIGl0IG9mZi4KKyAgICAgICAgbV9zdGFydFRpbWVXYWl0
ZXJUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgfQogICAgIAogICAgIGlmIChtX3N0YXJ0VGlt
ZVJlc3BvbnNlV2FpdGVycykKICAgICAgICAgbV9sYXN0U3RhcnRUaW1lUmVzcG9uc2VXYWl0ZXIt
PnNldE5leHQoYW5pbWF0aW9uKTsKQEAgLTQ2MSw4ICs0NjUsMTAgQEAgdm9pZCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6cmVtb3ZlRnJvbVN0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QoQW5p
bWF0aW9uQmEKICAgICAgICAgcHJldkFuaW1hdGlvbiA9IGFuaW1hdGlvbjsKICAgICB9CiAgICAg
Ci0gICAgaWYgKCFtX3N0YXJ0VGltZVJlc3BvbnNlV2FpdGVycykKKyAgICBpZiAoIW1fc3RhcnRU
aW1lUmVzcG9uc2VXYWl0ZXJzKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclN0YXJ0VGltZVJlc3Bv
bnNlID0gZmFsc2U7CisgICAgICAgIG1fc3RhcnRUaW1lV2FpdGVyVGltZXIuc3RvcCgpOworICAg
IH0KIH0KIAogdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3RhcnRUaW1lUmVzcG9u
c2UoZG91YmxlIHRpbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlLmggYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggNjgxMmUwOWZjZGVlZWNmMTFiMDhmMzZhMmY0ODAy
NDQ5M2Q1YmNjNi4uZDViOWI3OGM4ZDYxMzVkN2UwMWM5OTBhNzBmOWFjZDJmYTYyM2ZkZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGUuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQg
YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4qKTsK
KyAgICB2b2lkIHN0YXJ0VGltZVdhaXRlclRpbWVyRmlyZWQoVGltZXI8QW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU+Kik7CiAKICAgICB2b2lkIHN0eWxlQXZhaWxhYmxlKCk7CiAgICAgdm9pZCBm
aXJlRXZlbnRzQW5kVXBkYXRlU3R5bGUoKTsKQEAgLTEwNCw2ICsxMDUsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcCBtX2NvbXBvc2l0ZUFuaW1hdGlvbnM7CiAgICAg
VGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+IG1fYW5pbWF0aW9uVGltZXI7CiAgICAg
VGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+IG1fdXBkYXRlU3R5bGVJZk5lZWRlZERp
c3BhdGNoZXI7CisgICAgVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+IG1fc3RhcnRU
aW1lV2FpdGVyVGltZXI7CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgCiAgICAgY2xhc3MgRXZl
bnRUb0Rpc3BhdGNoIHsK
</data>
<flag name="review"
          id="69601"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>